From 5a24660a526dbced66786badd6404d37957ab9c6 Mon Sep 17 00:00:00 2001 From: ivaosthu Date: Fri, 23 Dec 2016 10:58:33 +0100 Subject: [PATCH] Prepare release --- frontend/.eslintignore | 1 + frontend/.gitignore | 3 + frontend/dist/bundle.css | 2 - frontend/dist/bundle.css.map | 1 - frontend/dist/bundle.js | 306 ----------------------------------- frontend/dist/bundle.js.map | 1 - frontend/dist/favicon.ico | Bin 34494 -> 0 bytes frontend/dist/index.html | 21 --- frontend/package.json | 6 +- 9 files changed, 9 insertions(+), 332 deletions(-) delete mode 100644 frontend/dist/bundle.css delete mode 100644 frontend/dist/bundle.css.map delete mode 100644 frontend/dist/bundle.js delete mode 100644 frontend/dist/bundle.js.map delete mode 100644 frontend/dist/favicon.ico delete mode 100644 frontend/dist/index.html diff --git a/frontend/.eslintignore b/frontend/.eslintignore index d1c1dbe227..eff3270eaf 100644 --- a/frontend/.eslintignore +++ b/frontend/.eslintignore @@ -1,2 +1,3 @@ node_modules bundle.js +dist diff --git a/frontend/.gitignore b/frontend/.gitignore index 12b10741f1..0fb3d02ffd 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -37,3 +37,6 @@ jspm_packages .node_repl_history typings* + +# Built +dist diff --git a/frontend/dist/bundle.css b/frontend/dist/bundle.css deleted file mode 100644 index 9af91e078c..0000000000 --- a/frontend/dist/bundle.css +++ /dev/null @@ -1,2 +0,0 @@ -html{color:rgba(0,0,0,.87);font-size:1em;line-height:1.4}::-moz-selection{background:#b3d4fc;text-shadow:none}::selection{background:#b3d4fc;text-shadow:none}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{border:0;margin:0;padding:0}textarea{resize:vertical}.browserupgrade{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0}.hidden{display:none!important}.visuallyhidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.invisible{visibility:hidden}.clearfix:after,.clearfix:before{content:" ";display:table}.clearfix:after{clear:both}@media print{*,:after,:before,:first-letter{background:transparent!important;color:#000!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.mdl-accordion,.mdl-button,.mdl-card,.mdl-checkbox,.mdl-dropdown-menu,.mdl-icon-toggle,.mdl-item,.mdl-radio,.mdl-slider,.mdl-switch,.mdl-tabs__tab,a{-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:rgba(255,255,255,0)}html{height:100%;-ms-touch-action:manipulation;touch-action:manipulation}body,html{width:100%}body{min-height:100%;margin:0}main{display:block}[hidden]{display:none!important}body,html{font-family:Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:20px}h1,h2,h3,h4,h5,h6,p{margin:0;padding:0}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-size:56px;opacity:.54;font-size:.6em}h1,h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-family:Roboto,Helvetica,Arial,sans-serif;font-weight:400;line-height:1.35;letter-spacing:-.02em}h1{font-size:56px;margin-top:24px;margin-bottom:24px}h2{font-size:45px;line-height:48px}h2,h3{font-family:Roboto,Helvetica,Arial,sans-serif;font-weight:400;margin-top:24px;margin-bottom:24px}h3{font-size:34px;line-height:40px}h4{font-size:24px;font-weight:400;line-height:32px;-moz-osx-font-smoothing:grayscale}h4,h5{font-family:Roboto,Helvetica,Arial,sans-serif;margin-top:24px;margin-bottom:16px}h5{font-size:20px;font-weight:500;line-height:1;letter-spacing:.02em}h6{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;letter-spacing:.04em;margin-top:24px}h6,p{font-weight:400;line-height:24px;margin-bottom:16px}p{font-size:14px;letter-spacing:0}a{color:#ff4081;font-weight:500}blockquote{font-family:Roboto,Helvetica,Arial,sans-serif;position:relative;font-size:24px;font-weight:300;font-style:italic;line-height:1.35;letter-spacing:.08em}blockquote:before{position:absolute;left:-.5em;content:"\201C"}blockquote:after{content:"\201D";margin-left:-.05em}mark{background-color:#f4ff81}dt{font-weight:700}address{font-size:12px;line-height:1;font-style:normal}address,ol,ul{font-weight:400;letter-spacing:0}ol,ul{font-size:14px;line-height:24px}.mdl-typography--display-4,.mdl-typography--display-4-color-contrast{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:112px;font-weight:300;line-height:1;letter-spacing:-.04em}.mdl-typography--display-4-color-contrast{opacity:.54}.mdl-typography--display-3,.mdl-typography--display-3-color-contrast{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:56px;font-weight:400;line-height:1.35;letter-spacing:-.02em}.mdl-typography--display-3-color-contrast{opacity:.54}.mdl-typography--display-2,.mdl-typography--display-2-color-contrast{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:45px;font-weight:400;line-height:48px}.mdl-typography--display-2-color-contrast{opacity:.54}.mdl-typography--display-1,.mdl-typography--display-1-color-contrast{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:34px;font-weight:400;line-height:40px}.mdl-typography--display-1-color-contrast{opacity:.54}.mdl-typography--headline,.mdl-typography--headline-color-contrast{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:24px;font-weight:400;line-height:32px;-moz-osx-font-smoothing:grayscale}.mdl-typography--headline-color-contrast{opacity:.87}.mdl-typography--title,.mdl-typography--title-color-contrast{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:20px;font-weight:500;line-height:1;letter-spacing:.02em}.mdl-typography--title-color-contrast{opacity:.87}.mdl-typography--subhead,.mdl-typography--subhead-color-contrast{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:.04em}.mdl-typography--subhead-color-contrast{opacity:.87}.mdl-typography--body-2,.mdl-typography--body-2-color-contrast{font-size:14px;font-weight:700;line-height:24px;letter-spacing:0}.mdl-typography--body-2-color-contrast{opacity:.87}.mdl-typography--body-1,.mdl-typography--body-1-color-contrast{font-size:14px;font-weight:400;line-height:24px;letter-spacing:0}.mdl-typography--body-1-color-contrast{opacity:.87}.mdl-typography--body-2-force-preferred-font,.mdl-typography--body-2-force-preferred-font-color-contrast{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;line-height:24px;letter-spacing:0}.mdl-typography--body-2-force-preferred-font-color-contrast{opacity:.87}.mdl-typography--body-1-force-preferred-font,.mdl-typography--body-1-force-preferred-font-color-contrast{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;font-weight:400;line-height:24px;letter-spacing:0}.mdl-typography--body-1-force-preferred-font-color-contrast{opacity:.87}.mdl-typography--caption,.mdl-typography--caption-force-preferred-font{font-size:12px;font-weight:400;line-height:1;letter-spacing:0}.mdl-typography--caption-force-preferred-font{font-family:Roboto,Helvetica,Arial,sans-serif}.mdl-typography--caption-color-contrast,.mdl-typography--caption-force-preferred-font-color-contrast{font-size:12px;font-weight:400;line-height:1;letter-spacing:0;opacity:.54}.mdl-typography--caption-force-preferred-font-color-contrast{font-family:Roboto,Helvetica,Arial,sans-serif}.mdl-typography--menu,.mdl-typography--menu-color-contrast{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;line-height:1;letter-spacing:0}.mdl-typography--menu-color-contrast{opacity:.87}.mdl-typography--button,.mdl-typography--button-color-contrast{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;text-transform:uppercase;line-height:1;letter-spacing:0}.mdl-typography--button-color-contrast{opacity:.87}.mdl-typography--text-left{text-align:left}.mdl-typography--text-right{text-align:right}.mdl-typography--text-center{text-align:center}.mdl-typography--text-justify{text-align:justify}.mdl-typography--text-nowrap{white-space:nowrap}.mdl-typography--text-lowercase{text-transform:lowercase}.mdl-typography--text-uppercase{text-transform:uppercase}.mdl-typography--text-capitalize{text-transform:capitalize}.mdl-typography--font-thin{font-weight:200!important}.mdl-typography--font-light{font-weight:300!important}.mdl-typography--font-regular{font-weight:400!important}.mdl-typography--font-medium{font-weight:500!important}.mdl-typography--font-bold{font-weight:700!important}.mdl-typography--font-black{font-weight:900!important}.material-icons{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;word-wrap:normal;font-feature-settings:"liga";-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased}.mdl-color-text--red{color:#f44336!important}.mdl-color--red{background-color:#f44336!important}.mdl-color-text--red-50{color:#ffebee!important}.mdl-color--red-50{background-color:#ffebee!important}.mdl-color-text--red-100{color:#ffcdd2!important}.mdl-color--red-100{background-color:#ffcdd2!important}.mdl-color-text--red-200{color:#ef9a9a!important}.mdl-color--red-200{background-color:#ef9a9a!important}.mdl-color-text--red-300{color:#e57373!important}.mdl-color--red-300{background-color:#e57373!important}.mdl-color-text--red-400{color:#ef5350!important}.mdl-color--red-400{background-color:#ef5350!important}.mdl-color-text--red-500{color:#f44336!important}.mdl-color--red-500{background-color:#f44336!important}.mdl-color-text--red-600{color:#e53935!important}.mdl-color--red-600{background-color:#e53935!important}.mdl-color-text--red-700{color:#d32f2f!important}.mdl-color--red-700{background-color:#d32f2f!important}.mdl-color-text--red-800{color:#c62828!important}.mdl-color--red-800{background-color:#c62828!important}.mdl-color-text--red-900{color:#b71c1c!important}.mdl-color--red-900{background-color:#b71c1c!important}.mdl-color-text--red-A100{color:#ff8a80!important}.mdl-color--red-A100{background-color:#ff8a80!important}.mdl-color-text--red-A200{color:#ff5252!important}.mdl-color--red-A200{background-color:#ff5252!important}.mdl-color-text--red-A400{color:#ff1744!important}.mdl-color--red-A400{background-color:#ff1744!important}.mdl-color-text--red-A700{color:#d50000!important}.mdl-color--red-A700{background-color:#d50000!important}.mdl-color-text--pink{color:#e91e63!important}.mdl-color--pink{background-color:#e91e63!important}.mdl-color-text--pink-50{color:#fce4ec!important}.mdl-color--pink-50{background-color:#fce4ec!important}.mdl-color-text--pink-100{color:#f8bbd0!important}.mdl-color--pink-100{background-color:#f8bbd0!important}.mdl-color-text--pink-200{color:#f48fb1!important}.mdl-color--pink-200{background-color:#f48fb1!important}.mdl-color-text--pink-300{color:#f06292!important}.mdl-color--pink-300{background-color:#f06292!important}.mdl-color-text--pink-400{color:#ec407a!important}.mdl-color--pink-400{background-color:#ec407a!important}.mdl-color-text--pink-500{color:#e91e63!important}.mdl-color--pink-500{background-color:#e91e63!important}.mdl-color-text--pink-600{color:#d81b60!important}.mdl-color--pink-600{background-color:#d81b60!important}.mdl-color-text--pink-700{color:#c2185b!important}.mdl-color--pink-700{background-color:#c2185b!important}.mdl-color-text--pink-800{color:#ad1457!important}.mdl-color--pink-800{background-color:#ad1457!important}.mdl-color-text--pink-900{color:#880e4f!important}.mdl-color--pink-900{background-color:#880e4f!important}.mdl-color-text--pink-A100{color:#ff80ab!important}.mdl-color--pink-A100{background-color:#ff80ab!important}.mdl-color-text--pink-A200{color:#ff4081!important}.mdl-color--pink-A200{background-color:#ff4081!important}.mdl-color-text--pink-A400{color:#f50057!important}.mdl-color--pink-A400{background-color:#f50057!important}.mdl-color-text--pink-A700{color:#c51162!important}.mdl-color--pink-A700{background-color:#c51162!important}.mdl-color-text--purple{color:#9c27b0!important}.mdl-color--purple{background-color:#9c27b0!important}.mdl-color-text--purple-50{color:#f3e5f5!important}.mdl-color--purple-50{background-color:#f3e5f5!important}.mdl-color-text--purple-100{color:#e1bee7!important}.mdl-color--purple-100{background-color:#e1bee7!important}.mdl-color-text--purple-200{color:#ce93d8!important}.mdl-color--purple-200{background-color:#ce93d8!important}.mdl-color-text--purple-300{color:#ba68c8!important}.mdl-color--purple-300{background-color:#ba68c8!important}.mdl-color-text--purple-400{color:#ab47bc!important}.mdl-color--purple-400{background-color:#ab47bc!important}.mdl-color-text--purple-500{color:#9c27b0!important}.mdl-color--purple-500{background-color:#9c27b0!important}.mdl-color-text--purple-600{color:#8e24aa!important}.mdl-color--purple-600{background-color:#8e24aa!important}.mdl-color-text--purple-700{color:#7b1fa2!important}.mdl-color--purple-700{background-color:#7b1fa2!important}.mdl-color-text--purple-800{color:#6a1b9a!important}.mdl-color--purple-800{background-color:#6a1b9a!important}.mdl-color-text--purple-900{color:#4a148c!important}.mdl-color--purple-900{background-color:#4a148c!important}.mdl-color-text--purple-A100{color:#ea80fc!important}.mdl-color--purple-A100{background-color:#ea80fc!important}.mdl-color-text--purple-A200{color:#e040fb!important}.mdl-color--purple-A200{background-color:#e040fb!important}.mdl-color-text--purple-A400{color:#d500f9!important}.mdl-color--purple-A400{background-color:#d500f9!important}.mdl-color-text--purple-A700{color:#a0f!important}.mdl-color--purple-A700{background-color:#a0f!important}.mdl-color-text--deep-purple{color:#673ab7!important}.mdl-color--deep-purple{background-color:#673ab7!important}.mdl-color-text--deep-purple-50{color:#ede7f6!important}.mdl-color--deep-purple-50{background-color:#ede7f6!important}.mdl-color-text--deep-purple-100{color:#d1c4e9!important}.mdl-color--deep-purple-100{background-color:#d1c4e9!important}.mdl-color-text--deep-purple-200{color:#b39ddb!important}.mdl-color--deep-purple-200{background-color:#b39ddb!important}.mdl-color-text--deep-purple-300{color:#9575cd!important}.mdl-color--deep-purple-300{background-color:#9575cd!important}.mdl-color-text--deep-purple-400{color:#7e57c2!important}.mdl-color--deep-purple-400{background-color:#7e57c2!important}.mdl-color-text--deep-purple-500{color:#673ab7!important}.mdl-color--deep-purple-500{background-color:#673ab7!important}.mdl-color-text--deep-purple-600{color:#5e35b1!important}.mdl-color--deep-purple-600{background-color:#5e35b1!important}.mdl-color-text--deep-purple-700{color:#512da8!important}.mdl-color--deep-purple-700{background-color:#512da8!important}.mdl-color-text--deep-purple-800{color:#4527a0!important}.mdl-color--deep-purple-800{background-color:#4527a0!important}.mdl-color-text--deep-purple-900{color:#311b92!important}.mdl-color--deep-purple-900{background-color:#311b92!important}.mdl-color-text--deep-purple-A100{color:#b388ff!important}.mdl-color--deep-purple-A100{background-color:#b388ff!important}.mdl-color-text--deep-purple-A200{color:#7c4dff!important}.mdl-color--deep-purple-A200{background-color:#7c4dff!important}.mdl-color-text--deep-purple-A400{color:#651fff!important}.mdl-color--deep-purple-A400{background-color:#651fff!important}.mdl-color-text--deep-purple-A700{color:#6200ea!important}.mdl-color--deep-purple-A700{background-color:#6200ea!important}.mdl-color-text--indigo{color:#3f51b5!important}.mdl-color--indigo{background-color:#3f51b5!important}.mdl-color-text--indigo-50{color:#e8eaf6!important}.mdl-color--indigo-50{background-color:#e8eaf6!important}.mdl-color-text--indigo-100{color:#c5cae9!important}.mdl-color--indigo-100{background-color:#c5cae9!important}.mdl-color-text--indigo-200{color:#9fa8da!important}.mdl-color--indigo-200{background-color:#9fa8da!important}.mdl-color-text--indigo-300{color:#7986cb!important}.mdl-color--indigo-300{background-color:#7986cb!important}.mdl-color-text--indigo-400{color:#5c6bc0!important}.mdl-color--indigo-400{background-color:#5c6bc0!important}.mdl-color-text--indigo-500{color:#3f51b5!important}.mdl-color--indigo-500{background-color:#3f51b5!important}.mdl-color-text--indigo-600{color:#3949ab!important}.mdl-color--indigo-600{background-color:#3949ab!important}.mdl-color-text--indigo-700{color:#303f9f!important}.mdl-color--indigo-700{background-color:#303f9f!important}.mdl-color-text--indigo-800{color:#283593!important}.mdl-color--indigo-800{background-color:#283593!important}.mdl-color-text--indigo-900{color:#1a237e!important}.mdl-color--indigo-900{background-color:#1a237e!important}.mdl-color-text--indigo-A100{color:#8c9eff!important}.mdl-color--indigo-A100{background-color:#8c9eff!important}.mdl-color-text--indigo-A200{color:#536dfe!important}.mdl-color--indigo-A200{background-color:#536dfe!important}.mdl-color-text--indigo-A400{color:#3d5afe!important}.mdl-color--indigo-A400{background-color:#3d5afe!important}.mdl-color-text--indigo-A700{color:#304ffe!important}.mdl-color--indigo-A700{background-color:#304ffe!important}.mdl-color-text--blue{color:#2196f3!important}.mdl-color--blue{background-color:#2196f3!important}.mdl-color-text--blue-50{color:#e3f2fd!important}.mdl-color--blue-50{background-color:#e3f2fd!important}.mdl-color-text--blue-100{color:#bbdefb!important}.mdl-color--blue-100{background-color:#bbdefb!important}.mdl-color-text--blue-200{color:#90caf9!important}.mdl-color--blue-200{background-color:#90caf9!important}.mdl-color-text--blue-300{color:#64b5f6!important}.mdl-color--blue-300{background-color:#64b5f6!important}.mdl-color-text--blue-400{color:#42a5f5!important}.mdl-color--blue-400{background-color:#42a5f5!important}.mdl-color-text--blue-500{color:#2196f3!important}.mdl-color--blue-500{background-color:#2196f3!important}.mdl-color-text--blue-600{color:#1e88e5!important}.mdl-color--blue-600{background-color:#1e88e5!important}.mdl-color-text--blue-700{color:#1976d2!important}.mdl-color--blue-700{background-color:#1976d2!important}.mdl-color-text--blue-800{color:#1565c0!important}.mdl-color--blue-800{background-color:#1565c0!important}.mdl-color-text--blue-900{color:#0d47a1!important}.mdl-color--blue-900{background-color:#0d47a1!important}.mdl-color-text--blue-A100{color:#82b1ff!important}.mdl-color--blue-A100{background-color:#82b1ff!important}.mdl-color-text--blue-A200{color:#448aff!important}.mdl-color--blue-A200{background-color:#448aff!important}.mdl-color-text--blue-A400{color:#2979ff!important}.mdl-color--blue-A400{background-color:#2979ff!important}.mdl-color-text--blue-A700{color:#2962ff!important}.mdl-color--blue-A700{background-color:#2962ff!important}.mdl-color-text--light-blue{color:#03a9f4!important}.mdl-color--light-blue{background-color:#03a9f4!important}.mdl-color-text--light-blue-50{color:#e1f5fe!important}.mdl-color--light-blue-50{background-color:#e1f5fe!important}.mdl-color-text--light-blue-100{color:#b3e5fc!important}.mdl-color--light-blue-100{background-color:#b3e5fc!important}.mdl-color-text--light-blue-200{color:#81d4fa!important}.mdl-color--light-blue-200{background-color:#81d4fa!important}.mdl-color-text--light-blue-300{color:#4fc3f7!important}.mdl-color--light-blue-300{background-color:#4fc3f7!important}.mdl-color-text--light-blue-400{color:#29b6f6!important}.mdl-color--light-blue-400{background-color:#29b6f6!important}.mdl-color-text--light-blue-500{color:#03a9f4!important}.mdl-color--light-blue-500{background-color:#03a9f4!important}.mdl-color-text--light-blue-600{color:#039be5!important}.mdl-color--light-blue-600{background-color:#039be5!important}.mdl-color-text--light-blue-700{color:#0288d1!important}.mdl-color--light-blue-700{background-color:#0288d1!important}.mdl-color-text--light-blue-800{color:#0277bd!important}.mdl-color--light-blue-800{background-color:#0277bd!important}.mdl-color-text--light-blue-900{color:#01579b!important}.mdl-color--light-blue-900{background-color:#01579b!important}.mdl-color-text--light-blue-A100{color:#80d8ff!important}.mdl-color--light-blue-A100{background-color:#80d8ff!important}.mdl-color-text--light-blue-A200{color:#40c4ff!important}.mdl-color--light-blue-A200{background-color:#40c4ff!important}.mdl-color-text--light-blue-A400{color:#00b0ff!important}.mdl-color--light-blue-A400{background-color:#00b0ff!important}.mdl-color-text--light-blue-A700{color:#0091ea!important}.mdl-color--light-blue-A700{background-color:#0091ea!important}.mdl-color-text--cyan{color:#00bcd4!important}.mdl-color--cyan{background-color:#00bcd4!important}.mdl-color-text--cyan-50{color:#e0f7fa!important}.mdl-color--cyan-50{background-color:#e0f7fa!important}.mdl-color-text--cyan-100{color:#b2ebf2!important}.mdl-color--cyan-100{background-color:#b2ebf2!important}.mdl-color-text--cyan-200{color:#80deea!important}.mdl-color--cyan-200{background-color:#80deea!important}.mdl-color-text--cyan-300{color:#4dd0e1!important}.mdl-color--cyan-300{background-color:#4dd0e1!important}.mdl-color-text--cyan-400{color:#26c6da!important}.mdl-color--cyan-400{background-color:#26c6da!important}.mdl-color-text--cyan-500{color:#00bcd4!important}.mdl-color--cyan-500{background-color:#00bcd4!important}.mdl-color-text--cyan-600{color:#00acc1!important}.mdl-color--cyan-600{background-color:#00acc1!important}.mdl-color-text--cyan-700{color:#0097a7!important}.mdl-color--cyan-700{background-color:#0097a7!important}.mdl-color-text--cyan-800{color:#00838f!important}.mdl-color--cyan-800{background-color:#00838f!important}.mdl-color-text--cyan-900{color:#006064!important}.mdl-color--cyan-900{background-color:#006064!important}.mdl-color-text--cyan-A100{color:#84ffff!important}.mdl-color--cyan-A100{background-color:#84ffff!important}.mdl-color-text--cyan-A200{color:#18ffff!important}.mdl-color--cyan-A200{background-color:#18ffff!important}.mdl-color-text--cyan-A400{color:#00e5ff!important}.mdl-color--cyan-A400{background-color:#00e5ff!important}.mdl-color-text--cyan-A700{color:#00b8d4!important}.mdl-color--cyan-A700{background-color:#00b8d4!important}.mdl-color-text--teal{color:#009688!important}.mdl-color--teal{background-color:#009688!important}.mdl-color-text--teal-50{color:#e0f2f1!important}.mdl-color--teal-50{background-color:#e0f2f1!important}.mdl-color-text--teal-100{color:#b2dfdb!important}.mdl-color--teal-100{background-color:#b2dfdb!important}.mdl-color-text--teal-200{color:#80cbc4!important}.mdl-color--teal-200{background-color:#80cbc4!important}.mdl-color-text--teal-300{color:#4db6ac!important}.mdl-color--teal-300{background-color:#4db6ac!important}.mdl-color-text--teal-400{color:#26a69a!important}.mdl-color--teal-400{background-color:#26a69a!important}.mdl-color-text--teal-500{color:#009688!important}.mdl-color--teal-500{background-color:#009688!important}.mdl-color-text--teal-600{color:#00897b!important}.mdl-color--teal-600{background-color:#00897b!important}.mdl-color-text--teal-700{color:#00796b!important}.mdl-color--teal-700{background-color:#00796b!important}.mdl-color-text--teal-800{color:#00695c!important}.mdl-color--teal-800{background-color:#00695c!important}.mdl-color-text--teal-900{color:#004d40!important}.mdl-color--teal-900{background-color:#004d40!important}.mdl-color-text--teal-A100{color:#a7ffeb!important}.mdl-color--teal-A100{background-color:#a7ffeb!important}.mdl-color-text--teal-A200{color:#64ffda!important}.mdl-color--teal-A200{background-color:#64ffda!important}.mdl-color-text--teal-A400{color:#1de9b6!important}.mdl-color--teal-A400{background-color:#1de9b6!important}.mdl-color-text--teal-A700{color:#00bfa5!important}.mdl-color--teal-A700{background-color:#00bfa5!important}.mdl-color-text--green{color:#4caf50!important}.mdl-color--green{background-color:#4caf50!important}.mdl-color-text--green-50{color:#e8f5e9!important}.mdl-color--green-50{background-color:#e8f5e9!important}.mdl-color-text--green-100{color:#c8e6c9!important}.mdl-color--green-100{background-color:#c8e6c9!important}.mdl-color-text--green-200{color:#a5d6a7!important}.mdl-color--green-200{background-color:#a5d6a7!important}.mdl-color-text--green-300{color:#81c784!important}.mdl-color--green-300{background-color:#81c784!important}.mdl-color-text--green-400{color:#66bb6a!important}.mdl-color--green-400{background-color:#66bb6a!important}.mdl-color-text--green-500{color:#4caf50!important}.mdl-color--green-500{background-color:#4caf50!important}.mdl-color-text--green-600{color:#43a047!important}.mdl-color--green-600{background-color:#43a047!important}.mdl-color-text--green-700{color:#388e3c!important}.mdl-color--green-700{background-color:#388e3c!important}.mdl-color-text--green-800{color:#2e7d32!important}.mdl-color--green-800{background-color:#2e7d32!important}.mdl-color-text--green-900{color:#1b5e20!important}.mdl-color--green-900{background-color:#1b5e20!important}.mdl-color-text--green-A100{color:#b9f6ca!important}.mdl-color--green-A100{background-color:#b9f6ca!important}.mdl-color-text--green-A200{color:#69f0ae!important}.mdl-color--green-A200{background-color:#69f0ae!important}.mdl-color-text--green-A400{color:#00e676!important}.mdl-color--green-A400{background-color:#00e676!important}.mdl-color-text--green-A700{color:#00c853!important}.mdl-color--green-A700{background-color:#00c853!important}.mdl-color-text--light-green{color:#8bc34a!important}.mdl-color--light-green{background-color:#8bc34a!important}.mdl-color-text--light-green-50{color:#f1f8e9!important}.mdl-color--light-green-50{background-color:#f1f8e9!important}.mdl-color-text--light-green-100{color:#dcedc8!important}.mdl-color--light-green-100{background-color:#dcedc8!important}.mdl-color-text--light-green-200{color:#c5e1a5!important}.mdl-color--light-green-200{background-color:#c5e1a5!important}.mdl-color-text--light-green-300{color:#aed581!important}.mdl-color--light-green-300{background-color:#aed581!important}.mdl-color-text--light-green-400{color:#9ccc65!important}.mdl-color--light-green-400{background-color:#9ccc65!important}.mdl-color-text--light-green-500{color:#8bc34a!important}.mdl-color--light-green-500{background-color:#8bc34a!important}.mdl-color-text--light-green-600{color:#7cb342!important}.mdl-color--light-green-600{background-color:#7cb342!important}.mdl-color-text--light-green-700{color:#689f38!important}.mdl-color--light-green-700{background-color:#689f38!important}.mdl-color-text--light-green-800{color:#558b2f!important}.mdl-color--light-green-800{background-color:#558b2f!important}.mdl-color-text--light-green-900{color:#33691e!important}.mdl-color--light-green-900{background-color:#33691e!important}.mdl-color-text--light-green-A100{color:#ccff90!important}.mdl-color--light-green-A100{background-color:#ccff90!important}.mdl-color-text--light-green-A200{color:#b2ff59!important}.mdl-color--light-green-A200{background-color:#b2ff59!important}.mdl-color-text--light-green-A400{color:#76ff03!important}.mdl-color--light-green-A400{background-color:#76ff03!important}.mdl-color-text--light-green-A700{color:#64dd17!important}.mdl-color--light-green-A700{background-color:#64dd17!important}.mdl-color-text--lime{color:#cddc39!important}.mdl-color--lime{background-color:#cddc39!important}.mdl-color-text--lime-50{color:#f9fbe7!important}.mdl-color--lime-50{background-color:#f9fbe7!important}.mdl-color-text--lime-100{color:#f0f4c3!important}.mdl-color--lime-100{background-color:#f0f4c3!important}.mdl-color-text--lime-200{color:#e6ee9c!important}.mdl-color--lime-200{background-color:#e6ee9c!important}.mdl-color-text--lime-300{color:#dce775!important}.mdl-color--lime-300{background-color:#dce775!important}.mdl-color-text--lime-400{color:#d4e157!important}.mdl-color--lime-400{background-color:#d4e157!important}.mdl-color-text--lime-500{color:#cddc39!important}.mdl-color--lime-500{background-color:#cddc39!important}.mdl-color-text--lime-600{color:#c0ca33!important}.mdl-color--lime-600{background-color:#c0ca33!important}.mdl-color-text--lime-700{color:#afb42b!important}.mdl-color--lime-700{background-color:#afb42b!important}.mdl-color-text--lime-800{color:#9e9d24!important}.mdl-color--lime-800{background-color:#9e9d24!important}.mdl-color-text--lime-900{color:#827717!important}.mdl-color--lime-900{background-color:#827717!important}.mdl-color-text--lime-A100{color:#f4ff81!important}.mdl-color--lime-A100{background-color:#f4ff81!important}.mdl-color-text--lime-A200{color:#eeff41!important}.mdl-color--lime-A200{background-color:#eeff41!important}.mdl-color-text--lime-A400{color:#c6ff00!important}.mdl-color--lime-A400{background-color:#c6ff00!important}.mdl-color-text--lime-A700{color:#aeea00!important}.mdl-color--lime-A700{background-color:#aeea00!important}.mdl-color-text--yellow{color:#ffeb3b!important}.mdl-color--yellow{background-color:#ffeb3b!important}.mdl-color-text--yellow-50{color:#fffde7!important}.mdl-color--yellow-50{background-color:#fffde7!important}.mdl-color-text--yellow-100{color:#fff9c4!important}.mdl-color--yellow-100{background-color:#fff9c4!important}.mdl-color-text--yellow-200{color:#fff59d!important}.mdl-color--yellow-200{background-color:#fff59d!important}.mdl-color-text--yellow-300{color:#fff176!important}.mdl-color--yellow-300{background-color:#fff176!important}.mdl-color-text--yellow-400{color:#ffee58!important}.mdl-color--yellow-400{background-color:#ffee58!important}.mdl-color-text--yellow-500{color:#ffeb3b!important}.mdl-color--yellow-500{background-color:#ffeb3b!important}.mdl-color-text--yellow-600{color:#fdd835!important}.mdl-color--yellow-600{background-color:#fdd835!important}.mdl-color-text--yellow-700{color:#fbc02d!important}.mdl-color--yellow-700{background-color:#fbc02d!important}.mdl-color-text--yellow-800{color:#f9a825!important}.mdl-color--yellow-800{background-color:#f9a825!important}.mdl-color-text--yellow-900{color:#f57f17!important}.mdl-color--yellow-900{background-color:#f57f17!important}.mdl-color-text--yellow-A100{color:#ffff8d!important}.mdl-color--yellow-A100{background-color:#ffff8d!important}.mdl-color-text--yellow-A200{color:#ff0!important}.mdl-color--yellow-A200{background-color:#ff0!important}.mdl-color-text--yellow-A400{color:#ffea00!important}.mdl-color--yellow-A400{background-color:#ffea00!important}.mdl-color-text--yellow-A700{color:#ffd600!important}.mdl-color--yellow-A700{background-color:#ffd600!important}.mdl-color-text--amber{color:#ffc107!important}.mdl-color--amber{background-color:#ffc107!important}.mdl-color-text--amber-50{color:#fff8e1!important}.mdl-color--amber-50{background-color:#fff8e1!important}.mdl-color-text--amber-100{color:#ffecb3!important}.mdl-color--amber-100{background-color:#ffecb3!important}.mdl-color-text--amber-200{color:#ffe082!important}.mdl-color--amber-200{background-color:#ffe082!important}.mdl-color-text--amber-300{color:#ffd54f!important}.mdl-color--amber-300{background-color:#ffd54f!important}.mdl-color-text--amber-400{color:#ffca28!important}.mdl-color--amber-400{background-color:#ffca28!important}.mdl-color-text--amber-500{color:#ffc107!important}.mdl-color--amber-500{background-color:#ffc107!important}.mdl-color-text--amber-600{color:#ffb300!important}.mdl-color--amber-600{background-color:#ffb300!important}.mdl-color-text--amber-700{color:#ffa000!important}.mdl-color--amber-700{background-color:#ffa000!important}.mdl-color-text--amber-800{color:#ff8f00!important}.mdl-color--amber-800{background-color:#ff8f00!important}.mdl-color-text--amber-900{color:#ff6f00!important}.mdl-color--amber-900{background-color:#ff6f00!important}.mdl-color-text--amber-A100{color:#ffe57f!important}.mdl-color--amber-A100{background-color:#ffe57f!important}.mdl-color-text--amber-A200{color:#ffd740!important}.mdl-color--amber-A200{background-color:#ffd740!important}.mdl-color-text--amber-A400{color:#ffc400!important}.mdl-color--amber-A400{background-color:#ffc400!important}.mdl-color-text--amber-A700{color:#ffab00!important}.mdl-color--amber-A700{background-color:#ffab00!important}.mdl-color-text--orange{color:#ff9800!important}.mdl-color--orange{background-color:#ff9800!important}.mdl-color-text--orange-50{color:#fff3e0!important}.mdl-color--orange-50{background-color:#fff3e0!important}.mdl-color-text--orange-100{color:#ffe0b2!important}.mdl-color--orange-100{background-color:#ffe0b2!important}.mdl-color-text--orange-200{color:#ffcc80!important}.mdl-color--orange-200{background-color:#ffcc80!important}.mdl-color-text--orange-300{color:#ffb74d!important}.mdl-color--orange-300{background-color:#ffb74d!important}.mdl-color-text--orange-400{color:#ffa726!important}.mdl-color--orange-400{background-color:#ffa726!important}.mdl-color-text--orange-500{color:#ff9800!important}.mdl-color--orange-500{background-color:#ff9800!important}.mdl-color-text--orange-600{color:#fb8c00!important}.mdl-color--orange-600{background-color:#fb8c00!important}.mdl-color-text--orange-700{color:#f57c00!important}.mdl-color--orange-700{background-color:#f57c00!important}.mdl-color-text--orange-800{color:#ef6c00!important}.mdl-color--orange-800{background-color:#ef6c00!important}.mdl-color-text--orange-900{color:#e65100!important}.mdl-color--orange-900{background-color:#e65100!important}.mdl-color-text--orange-A100{color:#ffd180!important}.mdl-color--orange-A100{background-color:#ffd180!important}.mdl-color-text--orange-A200{color:#ffab40!important}.mdl-color--orange-A200{background-color:#ffab40!important}.mdl-color-text--orange-A400{color:#ff9100!important}.mdl-color--orange-A400{background-color:#ff9100!important}.mdl-color-text--orange-A700{color:#ff6d00!important}.mdl-color--orange-A700{background-color:#ff6d00!important}.mdl-color-text--deep-orange{color:#ff5722!important}.mdl-color--deep-orange{background-color:#ff5722!important}.mdl-color-text--deep-orange-50{color:#fbe9e7!important}.mdl-color--deep-orange-50{background-color:#fbe9e7!important}.mdl-color-text--deep-orange-100{color:#ffccbc!important}.mdl-color--deep-orange-100{background-color:#ffccbc!important}.mdl-color-text--deep-orange-200{color:#ffab91!important}.mdl-color--deep-orange-200{background-color:#ffab91!important}.mdl-color-text--deep-orange-300{color:#ff8a65!important}.mdl-color--deep-orange-300{background-color:#ff8a65!important}.mdl-color-text--deep-orange-400{color:#ff7043!important}.mdl-color--deep-orange-400{background-color:#ff7043!important}.mdl-color-text--deep-orange-500{color:#ff5722!important}.mdl-color--deep-orange-500{background-color:#ff5722!important}.mdl-color-text--deep-orange-600{color:#f4511e!important}.mdl-color--deep-orange-600{background-color:#f4511e!important}.mdl-color-text--deep-orange-700{color:#e64a19!important}.mdl-color--deep-orange-700{background-color:#e64a19!important}.mdl-color-text--deep-orange-800{color:#d84315!important}.mdl-color--deep-orange-800{background-color:#d84315!important}.mdl-color-text--deep-orange-900{color:#bf360c!important}.mdl-color--deep-orange-900{background-color:#bf360c!important}.mdl-color-text--deep-orange-A100{color:#ff9e80!important}.mdl-color--deep-orange-A100{background-color:#ff9e80!important}.mdl-color-text--deep-orange-A200{color:#ff6e40!important}.mdl-color--deep-orange-A200{background-color:#ff6e40!important}.mdl-color-text--deep-orange-A400{color:#ff3d00!important}.mdl-color--deep-orange-A400{background-color:#ff3d00!important}.mdl-color-text--deep-orange-A700{color:#dd2c00!important}.mdl-color--deep-orange-A700{background-color:#dd2c00!important}.mdl-color-text--brown{color:#795548!important}.mdl-color--brown{background-color:#795548!important}.mdl-color-text--brown-50{color:#efebe9!important}.mdl-color--brown-50{background-color:#efebe9!important}.mdl-color-text--brown-100{color:#d7ccc8!important}.mdl-color--brown-100{background-color:#d7ccc8!important}.mdl-color-text--brown-200{color:#bcaaa4!important}.mdl-color--brown-200{background-color:#bcaaa4!important}.mdl-color-text--brown-300{color:#a1887f!important}.mdl-color--brown-300{background-color:#a1887f!important}.mdl-color-text--brown-400{color:#8d6e63!important}.mdl-color--brown-400{background-color:#8d6e63!important}.mdl-color-text--brown-500{color:#795548!important}.mdl-color--brown-500{background-color:#795548!important}.mdl-color-text--brown-600{color:#6d4c41!important}.mdl-color--brown-600{background-color:#6d4c41!important}.mdl-color-text--brown-700{color:#5d4037!important}.mdl-color--brown-700{background-color:#5d4037!important}.mdl-color-text--brown-800{color:#4e342e!important}.mdl-color--brown-800{background-color:#4e342e!important}.mdl-color-text--brown-900{color:#3e2723!important}.mdl-color--brown-900{background-color:#3e2723!important}.mdl-color-text--grey{color:#9e9e9e!important}.mdl-color--grey{background-color:#9e9e9e!important}.mdl-color-text--grey-50{color:#fafafa!important}.mdl-color--grey-50{background-color:#fafafa!important}.mdl-color-text--grey-100{color:#f5f5f5!important}.mdl-color--grey-100{background-color:#f5f5f5!important}.mdl-color-text--grey-200{color:#eee!important}.mdl-color--grey-200{background-color:#eee!important}.mdl-color-text--grey-300{color:#e0e0e0!important}.mdl-color--grey-300{background-color:#e0e0e0!important}.mdl-color-text--grey-400{color:#bdbdbd!important}.mdl-color--grey-400{background-color:#bdbdbd!important}.mdl-color-text--grey-500{color:#9e9e9e!important}.mdl-color--grey-500{background-color:#9e9e9e!important}.mdl-color-text--grey-600{color:#757575!important}.mdl-color--grey-600{background-color:#757575!important}.mdl-color-text--grey-700{color:#616161!important}.mdl-color--grey-700{background-color:#616161!important}.mdl-color-text--grey-800{color:#424242!important}.mdl-color--grey-800{background-color:#424242!important}.mdl-color-text--grey-900{color:#212121!important}.mdl-color--grey-900{background-color:#212121!important}.mdl-color-text--blue-grey{color:#607d8b!important}.mdl-color--blue-grey{background-color:#607d8b!important}.mdl-color-text--blue-grey-50{color:#eceff1!important}.mdl-color--blue-grey-50{background-color:#eceff1!important}.mdl-color-text--blue-grey-100{color:#cfd8dc!important}.mdl-color--blue-grey-100{background-color:#cfd8dc!important}.mdl-color-text--blue-grey-200{color:#b0bec5!important}.mdl-color--blue-grey-200{background-color:#b0bec5!important}.mdl-color-text--blue-grey-300{color:#90a4ae!important}.mdl-color--blue-grey-300{background-color:#90a4ae!important}.mdl-color-text--blue-grey-400{color:#78909c!important}.mdl-color--blue-grey-400{background-color:#78909c!important}.mdl-color-text--blue-grey-500{color:#607d8b!important}.mdl-color--blue-grey-500{background-color:#607d8b!important}.mdl-color-text--blue-grey-600{color:#546e7a!important}.mdl-color--blue-grey-600{background-color:#546e7a!important}.mdl-color-text--blue-grey-700{color:#455a64!important}.mdl-color--blue-grey-700{background-color:#455a64!important}.mdl-color-text--blue-grey-800{color:#37474f!important}.mdl-color--blue-grey-800{background-color:#37474f!important}.mdl-color-text--blue-grey-900{color:#263238!important}.mdl-color--blue-grey-900{background-color:#263238!important}.mdl-color--black{background-color:#000!important}.mdl-color-text--black{color:#000!important}.mdl-color--white{background-color:#fff!important}.mdl-color-text--white{color:#fff!important}.mdl-color--primary{background-color:#3f51b5!important}.mdl-color--primary-contrast{background-color:#fff!important}.mdl-color--primary-dark{background-color:#303f9f!important}.mdl-color--accent{background-color:#ff4081!important}.mdl-color--accent-contrast{background-color:#fff!important}.mdl-color-text--primary{color:#3f51b5!important}.mdl-color-text--primary-contrast{color:#fff!important}.mdl-color-text--primary-dark{color:#303f9f!important}.mdl-color-text--accent{color:#ff4081!important}.mdl-color-text--accent-contrast{color:#fff!important}.mdl-ripple{background:#000;border-radius:50%;height:50px;left:0;opacity:0;pointer-events:none;position:absolute;top:0;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:50px;overflow:hidden}.mdl-ripple.is-animating{transition:width .3s cubic-bezier(0,0,.2,1),height .3s cubic-bezier(0,0,.2,1),opacity .6s cubic-bezier(0,0,.2,1),-webkit-transform .3s cubic-bezier(0,0,.2,1);transition:transform .3s cubic-bezier(0,0,.2,1),width .3s cubic-bezier(0,0,.2,1),height .3s cubic-bezier(0,0,.2,1),opacity .6s cubic-bezier(0,0,.2,1);transition:transform .3s cubic-bezier(0,0,.2,1),width .3s cubic-bezier(0,0,.2,1),height .3s cubic-bezier(0,0,.2,1),opacity .6s cubic-bezier(0,0,.2,1),-webkit-transform .3s cubic-bezier(0,0,.2,1)}.mdl-ripple.is-visible{opacity:.3}.mdl-animation--default,.mdl-animation--fast-out-slow-in{transition-timing-function:cubic-bezier(.4,0,.2,1)}.mdl-animation--linear-out-slow-in{transition-timing-function:cubic-bezier(0,0,.2,1)}.mdl-animation--fast-out-linear-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.mdl-badge{position:relative;white-space:nowrap;margin-right:24px}.mdl-badge:not([data-badge]){margin-right:auto}.mdl-badge[data-badge]:after{content:attr(data-badge);display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;-ms-flex-line-pack:center;align-content:center;-ms-flex-align:center;align-items:center;position:absolute;top:-11px;right:-24px;font-family:Roboto,Helvetica,Arial,sans-serif;font-weight:600;font-size:12px;width:22px;height:22px;border-radius:50%;background:#ff4081;color:#fff}.mdl-button .mdl-badge[data-badge]:after{top:-10px;right:-5px}.mdl-badge.mdl-badge--no-background[data-badge]:after{color:#ff4081;background:hsla(0,0%,100%,.2);box-shadow:0 0 1px gray}.mdl-badge.mdl-badge--overlap{margin-right:10px}.mdl-badge.mdl-badge--overlap:after{right:-10px}.mdl-button{background:transparent;border:none;border-radius:2px;color:#000;position:relative;height:36px;margin:0;min-width:64px;padding:0 16px;display:inline-block;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;text-transform:uppercase;line-height:1;letter-spacing:0;overflow:hidden;will-change:box-shadow;transition:box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1);outline:none;cursor:pointer;text-decoration:none;text-align:center;line-height:36px;vertical-align:middle}.mdl-button::-moz-focus-inner{border:0}.mdl-button:hover{background-color:hsla(0,0%,62%,.2)}.mdl-button:focus:not(:active){background-color:rgba(0,0,0,.12)}.mdl-button:active{background-color:hsla(0,0%,62%,.4)}.mdl-button.mdl-button--colored{color:#3f51b5}.mdl-button.mdl-button--colored:focus:not(:active){background-color:rgba(0,0,0,.12)}input.mdl-button[type=submit]{-webkit-appearance:none}.mdl-button--raised{background:hsla(0,0%,62%,.2);box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.mdl-button--raised:active{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);background-color:hsla(0,0%,62%,.4)}.mdl-button--raised:focus:not(:active){box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36);background-color:hsla(0,0%,62%,.4)}.mdl-button--raised.mdl-button--colored{background:#3f51b5;color:#fff}.mdl-button--raised.mdl-button--colored:active,.mdl-button--raised.mdl-button--colored:focus:not(:active),.mdl-button--raised.mdl-button--colored:hover{background-color:#3f51b5}.mdl-button--raised.mdl-button--colored .mdl-ripple{background:#fff}.mdl-button--fab{border-radius:50%;font-size:24px;height:56px;margin:auto;min-width:56px;width:56px;padding:0;overflow:hidden;background:hsla(0,0%,62%,.2);box-shadow:0 1px 1.5px 0 rgba(0,0,0,.12),0 1px 1px 0 rgba(0,0,0,.24);position:relative;line-height:normal}.mdl-button--fab .material-icons{position:absolute;top:50%;left:50%;-webkit-transform:translate(-12px,-12px);transform:translate(-12px,-12px);line-height:24px;width:24px}.mdl-button--fab.mdl-button--mini-fab{height:40px;min-width:40px;width:40px}.mdl-button--fab .mdl-button__ripple-container{border-radius:50%;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000)}.mdl-button--fab:active{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2);background-color:hsla(0,0%,62%,.4)}.mdl-button--fab:focus:not(:active){box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36);background-color:hsla(0,0%,62%,.4)}.mdl-button--fab.mdl-button--colored{background:#ff4081;color:#fff}.mdl-button--fab.mdl-button--colored:active,.mdl-button--fab.mdl-button--colored:focus:not(:active),.mdl-button--fab.mdl-button--colored:hover{background-color:#ff4081}.mdl-button--fab.mdl-button--colored .mdl-ripple{background:#fff}.mdl-button--icon{border-radius:50%;font-size:24px;height:32px;margin-left:0;margin-right:0;min-width:32px;width:32px;padding:0;overflow:hidden;color:inherit;line-height:normal}.mdl-button--icon .material-icons{position:absolute;top:50%;left:50%;-webkit-transform:translate(-12px,-12px);transform:translate(-12px,-12px);line-height:24px;width:24px}.mdl-button--icon.mdl-button--mini-icon{height:24px;min-width:24px;width:24px}.mdl-button--icon.mdl-button--mini-icon .material-icons{top:0;left:0}.mdl-button--icon .mdl-button__ripple-container{border-radius:50%;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000)}.mdl-button__ripple-container{display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:0;overflow:hidden}.mdl-button.mdl-button--disabled .mdl-button__ripple-container .mdl-ripple,.mdl-button[disabled] .mdl-button__ripple-container .mdl-ripple{background-color:transparent}.mdl-button--primary.mdl-button--primary{color:#3f51b5}.mdl-button--primary.mdl-button--primary .mdl-ripple{background:#fff}.mdl-button--primary.mdl-button--primary.mdl-button--fab,.mdl-button--primary.mdl-button--primary.mdl-button--raised{color:#fff;background-color:#3f51b5}.mdl-button--accent.mdl-button--accent{color:#ff4081}.mdl-button--accent.mdl-button--accent .mdl-ripple{background:#fff}.mdl-button--accent.mdl-button--accent.mdl-button--fab,.mdl-button--accent.mdl-button--accent.mdl-button--raised{color:#fff;background-color:#ff4081}.mdl-button.mdl-button--disabled.mdl-button--disabled,.mdl-button[disabled][disabled]{color:rgba(0,0,0,.26);cursor:default;background-color:transparent}.mdl-button--fab.mdl-button--disabled.mdl-button--disabled,.mdl-button--fab[disabled][disabled]{background-color:rgba(0,0,0,.12);color:rgba(0,0,0,.26)}.mdl-button--raised.mdl-button--disabled.mdl-button--disabled,.mdl-button--raised[disabled][disabled]{background-color:rgba(0,0,0,.12);color:rgba(0,0,0,.26);box-shadow:none}.mdl-button--colored.mdl-button--disabled.mdl-button--disabled,.mdl-button--colored[disabled][disabled]{color:rgba(0,0,0,.26)}.mdl-button .material-icons{vertical-align:middle}.mdl-card{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:16px;font-weight:400;min-height:200px;overflow:hidden;width:330px;z-index:1;position:relative;background:#fff;border-radius:2px;box-sizing:border-box}.mdl-card__media{background-color:#ff4081;background-repeat:repeat;background-position:50% 50%;background-size:cover;background-origin:padding-box;background-attachment:scroll;box-sizing:border-box}.mdl-card__title{-ms-flex-align:center;align-items:center;color:#000;display:block;display:-ms-flexbox;display:flex;-ms-flex-pack:stretch;justify-content:stretch;line-height:normal;padding:16px;-webkit-perspective-origin:165px 56px;perspective-origin:165px 56px;-webkit-transform-origin:165px 56px;transform-origin:165px 56px;box-sizing:border-box}.mdl-card__title.mdl-card--border{border-bottom:1px solid rgba(0,0,0,.1)}.mdl-card__title-text{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;color:inherit;display:block;display:-ms-flexbox;display:flex;font-size:24px;font-weight:300;line-height:normal;overflow:hidden;-webkit-transform-origin:149px 48px;transform-origin:149px 48px;margin:0}.mdl-card__subtitle-text{font-size:14px;color:rgba(0,0,0,.54);margin:0}.mdl-card__supporting-text{color:rgba(0,0,0,.54);font-size:1rem;line-height:18px;overflow:hidden;padding:16px;width:90%}.mdl-card__actions{font-size:16px;line-height:normal;width:100%;background-color:transparent;padding:8px;box-sizing:border-box}.mdl-card__actions.mdl-card--border{border-top:1px solid rgba(0,0,0,.1)}.mdl-card--expand{-ms-flex-positive:1;flex-grow:1}.mdl-card__menu{position:absolute;right:16px;top:16px}.mdl-checkbox{position:relative;z-index:1;vertical-align:middle;display:inline-block;box-sizing:border-box;width:100%;height:24px;margin:0;padding:0}.mdl-checkbox.is-upgraded{padding-left:24px}.mdl-checkbox__input{line-height:24px}.mdl-checkbox.is-upgraded .mdl-checkbox__input{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;-ms-appearance:none;-moz-appearance:none;-webkit-appearance:none;appearance:none;border:none}.mdl-checkbox__box-outline{position:absolute;top:3px;left:0;display:inline-block;box-sizing:border-box;width:16px;height:16px;margin:0;cursor:pointer;overflow:hidden;border:2px solid rgba(0,0,0,.54);border-radius:2px;z-index:2}.mdl-checkbox.is-checked .mdl-checkbox__box-outline{border:2px solid #3f51b5}.mdl-checkbox.is-disabled .mdl-checkbox__box-outline,fieldset[disabled] .mdl-checkbox .mdl-checkbox__box-outline{border:2px solid rgba(0,0,0,.26);cursor:auto}.mdl-checkbox__focus-helper{position:absolute;top:3px;left:0;display:inline-block;box-sizing:border-box;width:16px;height:16px;border-radius:50%;background-color:transparent}.mdl-checkbox.is-focused .mdl-checkbox__focus-helper{box-shadow:0 0 0 8px rgba(0,0,0,.1);background-color:rgba(0,0,0,.1)}.mdl-checkbox.is-focused.is-checked .mdl-checkbox__focus-helper{box-shadow:0 0 0 8px rgba(63,81,181,.26);background-color:rgba(63,81,181,.26)}.mdl-checkbox__tick-outline{position:absolute;top:0;left:0;height:100%;width:100%;-webkit-mask:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8ZGVmcz4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcCI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Ik0gMCwwIDAsMSAxLDEgMSwwIDAsMCB6IE0gMC44NTM0Mzc1LDAuMTY3MTg3NSAwLjk1OTY4NzUsMC4yNzMxMjUgMC40MjkzNzUsMC44MDM0Mzc1IDAuMzIzMTI1LDAuOTA5Njg3NSAwLjIxNzE4NzUsMC44MDM0Mzc1IDAuMDQwMzEyNSwwLjYyNjg3NSAwLjE0NjU2MjUsMC41MjA2MjUgMC4zMjMxMjUsMC42OTc1IDAuODUzNDM3NSwwLjE2NzE4NzUgeiIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KICAgIDwvY2xpcFBhdGg+CiAgICA8bWFzayBpZD0ibWFzayIgbWFza1VuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgbWFza0NvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgogICAgICA8cGF0aAogICAgICAgICBkPSJNIDAsMCAwLDEgMSwxIDEsMCAwLDAgeiBNIDAuODUzNDM3NSwwLjE2NzE4NzUgMC45NTk2ODc1LDAuMjczMTI1IDAuNDI5Mzc1LDAuODAzNDM3NSAwLjMyMzEyNSwwLjkwOTY4NzUgMC4yMTcxODc1LDAuODAzNDM3NSAwLjA0MDMxMjUsMC42MjY4NzUgMC4xNDY1NjI1LDAuNTIwNjI1IDAuMzIzMTI1LDAuNjk3NSAwLjg1MzQzNzUsMC4xNjcxODc1IHoiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+CiAgICA8L21hc2s+CiAgPC9kZWZzPgogIDxyZWN0CiAgICAgd2lkdGg9IjEiCiAgICAgaGVpZ2h0PSIxIgogICAgIHg9IjAiCiAgICAgeT0iMCIKICAgICBjbGlwLXBhdGg9InVybCgjY2xpcCkiCiAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KPC9zdmc+Cg==");mask:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8ZGVmcz4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcCI+CiAgICAgIDxwYXRoCiAgICAgICAgIGQ9Ik0gMCwwIDAsMSAxLDEgMSwwIDAsMCB6IE0gMC44NTM0Mzc1LDAuMTY3MTg3NSAwLjk1OTY4NzUsMC4yNzMxMjUgMC40MjkzNzUsMC44MDM0Mzc1IDAuMzIzMTI1LDAuOTA5Njg3NSAwLjIxNzE4NzUsMC44MDM0Mzc1IDAuMDQwMzEyNSwwLjYyNjg3NSAwLjE0NjU2MjUsMC41MjA2MjUgMC4zMjMxMjUsMC42OTc1IDAuODUzNDM3NSwwLjE2NzE4NzUgeiIKICAgICAgICAgc3R5bGU9ImZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KICAgIDwvY2xpcFBhdGg+CiAgICA8bWFzayBpZD0ibWFzayIgbWFza1VuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgbWFza0NvbnRlbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgogICAgICA8cGF0aAogICAgICAgICBkPSJNIDAsMCAwLDEgMSwxIDEsMCAwLDAgeiBNIDAuODUzNDM3NSwwLjE2NzE4NzUgMC45NTk2ODc1LDAuMjczMTI1IDAuNDI5Mzc1LDAuODAzNDM3NSAwLjMyMzEyNSwwLjkwOTY4NzUgMC4yMTcxODc1LDAuODAzNDM3NSAwLjA0MDMxMjUsMC42MjY4NzUgMC4xNDY1NjI1LDAuNTIwNjI1IDAuMzIzMTI1LDAuNjk3NSAwLjg1MzQzNzUsMC4xNjcxODc1IHoiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiIC8+CiAgICA8L21hc2s+CiAgPC9kZWZzPgogIDxyZWN0CiAgICAgd2lkdGg9IjEiCiAgICAgaGVpZ2h0PSIxIgogICAgIHg9IjAiCiAgICAgeT0iMCIKICAgICBjbGlwLXBhdGg9InVybCgjY2xpcCkiCiAgICAgc3R5bGU9ImZpbGw6IzAwMDAwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZSIgLz4KPC9zdmc+Cg==");background:transparent;transition-duration:.28s;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-property:background}.mdl-checkbox.is-checked .mdl-checkbox__tick-outline{background:#3f51b5 url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K")}.mdl-checkbox.is-checked.is-disabled .mdl-checkbox__tick-outline,fieldset[disabled] .mdl-checkbox.is-checked .mdl-checkbox__tick-outline{background:rgba(0,0,0,.26) url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K")}.mdl-checkbox__label{position:relative;cursor:pointer;font-size:16px;line-height:24px;margin:0}.mdl-checkbox.is-disabled .mdl-checkbox__label,fieldset[disabled] .mdl-checkbox .mdl-checkbox__label{color:rgba(0,0,0,.26);cursor:auto}.mdl-checkbox__ripple-container{position:absolute;z-index:2;top:-6px;left:-10px;box-sizing:border-box;width:36px;height:36px;border-radius:50%;cursor:pointer;overflow:hidden;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000)}.mdl-checkbox__ripple-container .mdl-ripple{background:#3f51b5}.mdl-checkbox.is-disabled .mdl-checkbox__ripple-container,fieldset[disabled] .mdl-checkbox .mdl-checkbox__ripple-container{cursor:auto}.mdl-checkbox.is-disabled .mdl-checkbox__ripple-container .mdl-ripple,fieldset[disabled] .mdl-checkbox .mdl-checkbox__ripple-container .mdl-ripple{background:transparent}.mdl-chip{height:32px;font-family:Roboto,Helvetica,Arial,sans-serif;line-height:32px;padding:0 12px;border:0;border-radius:16px;background-color:#dedede;display:inline-block;color:rgba(0,0,0,.87);margin:2px 0;font-size:0;white-space:nowrap}.mdl-chip__action,.mdl-chip__text{font-size:13px;vertical-align:middle;display:inline-block}.mdl-chip__action{height:24px;width:24px;background:transparent;opacity:.54;cursor:pointer;text-align:center;padding:0;margin:0 0 0 4px;text-decoration:none;color:rgba(0,0,0,.87);border:none;outline:none;overflow:hidden}.mdl-chip__contact{height:32px;width:32px;border-radius:16px;display:inline-block;vertical-align:middle;margin-right:8px;overflow:hidden;text-align:center;font-size:18px;line-height:32px}.mdl-chip:focus{outline:0;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.mdl-chip:active{background-color:#d6d6d6}.mdl-chip--deletable{padding-right:4px}.mdl-chip--contact{padding-left:0}.mdl-data-table{position:relative;border:1px solid rgba(0,0,0,.12);border-collapse:collapse;white-space:nowrap;font-size:13px;background-color:#fff}.mdl-data-table thead{padding-bottom:3px}.mdl-data-table thead .mdl-data-table__select{margin-top:0}.mdl-data-table tbody tr{position:relative;height:48px;transition-duration:.28s;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-property:background-color}.mdl-data-table tbody tr.is-selected{background-color:#e0e0e0}.mdl-data-table tbody tr:hover{background-color:#eee}.mdl-data-table td,.mdl-data-table th{padding:0 18px 12px;text-align:right}.mdl-data-table td:first-of-type,.mdl-data-table th:first-of-type{padding-left:24px}.mdl-data-table td:last-of-type,.mdl-data-table th:last-of-type{padding-right:24px}.mdl-data-table td{position:relative;height:48px;border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12);padding-top:12px;box-sizing:border-box}.mdl-data-table td,.mdl-data-table td .mdl-data-table__select{vertical-align:middle}.mdl-data-table th{position:relative;vertical-align:bottom;text-overflow:ellipsis;font-size:14px;font-weight:700;line-height:24px;letter-spacing:0;height:48px;font-size:12px;color:rgba(0,0,0,.54);padding-bottom:8px;box-sizing:border-box}.mdl-data-table th.mdl-data-table__header--sorted-ascending,.mdl-data-table th.mdl-data-table__header--sorted-descending{color:rgba(0,0,0,.87)}.mdl-data-table th.mdl-data-table__header--sorted-ascending:before,.mdl-data-table th.mdl-data-table__header--sorted-descending:before{font-family:Material Icons;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;word-wrap:normal;font-feature-settings:"liga";-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;font-size:16px;content:"\E5D8";margin-right:5px;vertical-align:sub}.mdl-data-table th.mdl-data-table__header--sorted-ascending:hover,.mdl-data-table th.mdl-data-table__header--sorted-descending:hover{cursor:pointer}.mdl-data-table th.mdl-data-table__header--sorted-ascending:hover:before,.mdl-data-table th.mdl-data-table__header--sorted-descending:hover:before{color:rgba(0,0,0,.26)}.mdl-data-table th.mdl-data-table__header--sorted-descending:before{content:"\E5DB"}.mdl-data-table__select{width:16px}.mdl-data-table__cell--non-numeric.mdl-data-table__cell--non-numeric{text-align:left}.mdl-dialog{border:none;box-shadow:0 9px 46px 8px rgba(0,0,0,.14),0 11px 15px -7px rgba(0,0,0,.12),0 24px 38px 3px rgba(0,0,0,.2);width:280px}.mdl-dialog__title{padding:24px 24px 0;margin:0;font-size:2.5rem}.mdl-dialog__actions{padding:8px 8px 8px 24px;display:-ms-flexbox;display:flex;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-ms-flex-wrap:wrap;flex-wrap:wrap}.mdl-dialog__actions>*{margin-right:8px;height:36px}.mdl-dialog__actions>:first-child{margin-right:0}.mdl-dialog__actions--full-width{padding:0 0 8px}.mdl-dialog__actions--full-width>*{height:48px;-ms-flex:0 0 100%;flex:0 0 100%;padding-right:16px;margin-right:0;text-align:right}.mdl-dialog__content{padding:20px 24px 24px;color:rgba(0,0,0,.54)}.mdl-mega-footer{padding:16px 40px;color:#9e9e9e;background-color:#424242}.mdl-mega-footer--bottom-section:after,.mdl-mega-footer--middle-section:after,.mdl-mega-footer--top-section:after,.mdl-mega-footer__bottom-section:after,.mdl-mega-footer__middle-section:after,.mdl-mega-footer__top-section:after{content:"";display:block;clear:both}.mdl-mega-footer--left-section,.mdl-mega-footer--right-section,.mdl-mega-footer__left-section,.mdl-mega-footer__right-section{margin-bottom:16px}.mdl-mega-footer--right-section a,.mdl-mega-footer__right-section a{display:block;margin-bottom:16px;color:inherit;text-decoration:none}@media screen and (min-width:760px){.mdl-mega-footer--left-section,.mdl-mega-footer__left-section{float:left}.mdl-mega-footer--right-section,.mdl-mega-footer__right-section{float:right}.mdl-mega-footer--right-section a,.mdl-mega-footer__right-section a{display:inline-block;margin-left:16px;line-height:36px;vertical-align:middle}}.mdl-mega-footer--social-btn,.mdl-mega-footer__social-btn{width:36px;height:36px;padding:0;margin:0;background-color:#9e9e9e;border:none}.mdl-mega-footer--drop-down-section,.mdl-mega-footer__drop-down-section{display:block;position:relative}@media screen and (min-width:760px){.mdl-mega-footer--drop-down-section,.mdl-mega-footer__drop-down-section{width:33%}.mdl-mega-footer--drop-down-section:nth-child(1),.mdl-mega-footer--drop-down-section:nth-child(2),.mdl-mega-footer__drop-down-section:nth-child(1),.mdl-mega-footer__drop-down-section:nth-child(2){float:left}.mdl-mega-footer--drop-down-section:nth-child(3),.mdl-mega-footer__drop-down-section:nth-child(3){float:right}.mdl-mega-footer--drop-down-section:nth-child(3):after,.mdl-mega-footer__drop-down-section:nth-child(3):after{clear:right}.mdl-mega-footer--drop-down-section:nth-child(4),.mdl-mega-footer__drop-down-section:nth-child(4){clear:right;float:right}.mdl-mega-footer--middle-section:after,.mdl-mega-footer__middle-section:after{content:"";display:block;clear:both}.mdl-mega-footer--bottom-section,.mdl-mega-footer__bottom-section{padding-top:0}}@media screen and (min-width:1024px){.mdl-mega-footer--drop-down-section,.mdl-mega-footer--drop-down-section:nth-child(3),.mdl-mega-footer--drop-down-section:nth-child(4),.mdl-mega-footer__drop-down-section,.mdl-mega-footer__drop-down-section:nth-child(3),.mdl-mega-footer__drop-down-section:nth-child(4){width:24%;float:left}}.mdl-mega-footer--heading-checkbox,.mdl-mega-footer__heading-checkbox{position:absolute;width:100%;height:55.8px;padding:32px;margin:0;margin-top:-16px;cursor:pointer;z-index:1;opacity:0}.mdl-mega-footer--heading-checkbox+.mdl-mega-footer--heading:after,.mdl-mega-footer--heading-checkbox+.mdl-mega-footer__heading:after,.mdl-mega-footer__heading-checkbox+.mdl-mega-footer--heading:after,.mdl-mega-footer__heading-checkbox+.mdl-mega-footer__heading:after{font-family:Material Icons;content:"\E5CE"}.mdl-mega-footer--heading-checkbox:checked+.mdl-mega-footer--heading+.mdl-mega-footer--link-list,.mdl-mega-footer--heading-checkbox:checked+.mdl-mega-footer__heading+.mdl-mega-footer__link-list,.mdl-mega-footer--heading-checkbox:checked~.mdl-mega-footer--link-list,.mdl-mega-footer--heading-checkbox:checked~.mdl-mega-footer__link-list,.mdl-mega-footer__heading-checkbox:checked+.mdl-mega-footer--heading+.mdl-mega-footer--link-list,.mdl-mega-footer__heading-checkbox:checked+.mdl-mega-footer__heading+.mdl-mega-footer__link-list,.mdl-mega-footer__heading-checkbox:checked~.mdl-mega-footer--link-list,.mdl-mega-footer__heading-checkbox:checked~.mdl-mega-footer__link-list{display:none}.mdl-mega-footer--heading-checkbox:checked+.mdl-mega-footer--heading:after,.mdl-mega-footer--heading-checkbox:checked+.mdl-mega-footer__heading:after,.mdl-mega-footer__heading-checkbox:checked+.mdl-mega-footer--heading:after,.mdl-mega-footer__heading-checkbox:checked+.mdl-mega-footer__heading:after{font-family:Material Icons;content:"\E5CF"}.mdl-mega-footer--heading,.mdl-mega-footer__heading{position:relative;width:100%;padding-right:39.8px;margin-bottom:16px;box-sizing:border-box;font-size:14px;line-height:23.8px;font-weight:500;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:#e0e0e0}.mdl-mega-footer--heading:after,.mdl-mega-footer__heading:after{content:"";position:absolute;top:0;right:0;display:block;width:23.8px;height:23.8px;background-size:cover}.mdl-mega-footer--link-list,.mdl-mega-footer__link-list{list-style:none;margin:0;padding:0;margin-bottom:32px}.mdl-mega-footer--link-list:after,.mdl-mega-footer__link-list:after{clear:both;display:block;content:""}.mdl-mega-footer--link-list li,.mdl-mega-footer__link-list li{font-size:14px;font-weight:400;line-height:24px;letter-spacing:0;line-height:20px}.mdl-mega-footer--link-list a,.mdl-mega-footer__link-list a{color:inherit;text-decoration:none;white-space:nowrap}@media screen and (min-width:760px){.mdl-mega-footer--heading-checkbox,.mdl-mega-footer__heading-checkbox{display:none}.mdl-mega-footer--heading-checkbox+.mdl-mega-footer--heading:after,.mdl-mega-footer--heading-checkbox+.mdl-mega-footer__heading:after,.mdl-mega-footer__heading-checkbox+.mdl-mega-footer--heading:after,.mdl-mega-footer__heading-checkbox+.mdl-mega-footer__heading:after{content:""}.mdl-mega-footer--heading-checkbox:checked+.mdl-mega-footer--heading+.mdl-mega-footer--link-list,.mdl-mega-footer--heading-checkbox:checked+.mdl-mega-footer__heading+.mdl-mega-footer__link-list,.mdl-mega-footer--heading-checkbox:checked~.mdl-mega-footer--link-list,.mdl-mega-footer--heading-checkbox:checked~.mdl-mega-footer__link-list,.mdl-mega-footer__heading-checkbox:checked+.mdl-mega-footer--heading+.mdl-mega-footer--link-list,.mdl-mega-footer__heading-checkbox:checked+.mdl-mega-footer__heading+.mdl-mega-footer__link-list,.mdl-mega-footer__heading-checkbox:checked~.mdl-mega-footer--link-list,.mdl-mega-footer__heading-checkbox:checked~.mdl-mega-footer__link-list{display:block}.mdl-mega-footer--heading-checkbox:checked+.mdl-mega-footer--heading:after,.mdl-mega-footer--heading-checkbox:checked+.mdl-mega-footer__heading:after,.mdl-mega-footer__heading-checkbox:checked+.mdl-mega-footer--heading:after,.mdl-mega-footer__heading-checkbox:checked+.mdl-mega-footer__heading:after{content:""}}.mdl-mega-footer--bottom-section,.mdl-mega-footer__bottom-section{padding-top:16px;margin-bottom:16px}.mdl-logo{margin-bottom:16px;color:#fff}.mdl-mega-footer--bottom-section .mdl-mega-footer--link-list li,.mdl-mega-footer__bottom-section .mdl-mega-footer__link-list li{float:left;margin-bottom:0;margin-right:16px}@media screen and (min-width:760px){.mdl-logo{float:left;margin-bottom:0;margin-right:16px}}.mdl-mini-footer{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-pack:justify;justify-content:space-between;padding:32px 16px;color:#9e9e9e;background-color:#424242}.mdl-mini-footer:after{content:"";display:block}.mdl-mini-footer .mdl-logo{line-height:36px}.mdl-mini-footer--link-list,.mdl-mini-footer__link-list{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row;list-style:none;margin:0;padding:0}.mdl-mini-footer--link-list li,.mdl-mini-footer__link-list li{margin-bottom:0;margin-right:16px}@media screen and (min-width:760px){.mdl-mini-footer--link-list li,.mdl-mini-footer__link-list li{line-height:36px}}.mdl-mini-footer--link-list a,.mdl-mini-footer__link-list a{color:inherit;text-decoration:none;white-space:nowrap}.mdl-mini-footer--left-section,.mdl-mini-footer__left-section{display:inline-block;-ms-flex-order:0;order:0}.mdl-mini-footer--right-section,.mdl-mini-footer__right-section{display:inline-block;-ms-flex-order:1;order:1}.mdl-mini-footer--social-btn,.mdl-mini-footer__social-btn{width:36px;height:36px;padding:0;margin:0;background-color:#9e9e9e;border:none}.mdl-icon-toggle{position:relative;z-index:1;vertical-align:middle;display:inline-block;height:32px;margin:0;padding:0}.mdl-icon-toggle__input{line-height:32px}.mdl-icon-toggle.is-upgraded .mdl-icon-toggle__input{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;-ms-appearance:none;-moz-appearance:none;-webkit-appearance:none;appearance:none;border:none}.mdl-icon-toggle__label{display:inline-block;position:relative;cursor:pointer;height:32px;width:32px;min-width:32px;color:#616161;border-radius:50%;padding:0;margin-left:0;margin-right:0;text-align:center;background-color:transparent;will-change:background-color;transition:background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1)}.mdl-icon-toggle__label.material-icons{line-height:32px;font-size:24px}.mdl-icon-toggle.is-checked .mdl-icon-toggle__label{color:#3f51b5}.mdl-icon-toggle.is-disabled .mdl-icon-toggle__label{color:rgba(0,0,0,.26);cursor:auto;transition:none}.mdl-icon-toggle.is-focused .mdl-icon-toggle__label{background-color:rgba(0,0,0,.12)}.mdl-icon-toggle.is-focused.is-checked .mdl-icon-toggle__label{background-color:rgba(63,81,181,.26)}.mdl-icon-toggle__ripple-container{position:absolute;z-index:2;top:-2px;left:-2px;box-sizing:border-box;width:36px;height:36px;border-radius:50%;cursor:pointer;overflow:hidden;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000)}.mdl-icon-toggle__ripple-container .mdl-ripple{background:#616161}.mdl-icon-toggle.is-disabled .mdl-icon-toggle__ripple-container{cursor:auto}.mdl-icon-toggle.is-disabled .mdl-icon-toggle__ripple-container .mdl-ripple{background:transparent}.mdl-list{display:block;padding:8px 0;list-style:none}.mdl-list__item{font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:24px;letter-spacing:.04em;line-height:1;min-height:48px;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;padding:16px;cursor:default;color:rgba(0,0,0,.87);overflow:hidden}.mdl-list__item,.mdl-list__item .mdl-list__item-primary-content{display:-ms-flexbox;display:flex;box-sizing:border-box;-ms-flex-align:center;align-items:center}.mdl-list__item .mdl-list__item-primary-content{-ms-flex-order:0;order:0;-ms-flex-positive:2;flex-grow:2;text-decoration:none}.mdl-list__item .mdl-list__item-primary-content .mdl-list__item-icon{margin-right:32px}.mdl-list__item .mdl-list__item-primary-content .mdl-list__item-avatar{margin-right:16px}.mdl-list__item .mdl-list__item-secondary-content{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-align:end;align-items:flex-end;margin-left:16px}.mdl-list__item .mdl-list__item-secondary-content .mdl-list__item-secondary-action label{display:inline}.mdl-list__item .mdl-list__item-secondary-content .mdl-list__item-secondary-info{font-size:12px;font-weight:400;line-height:1;letter-spacing:0;color:rgba(0,0,0,.54)}.mdl-list__item .mdl-list__item-secondary-content .mdl-list__item-sub-header{padding:0 0 0 16px}.mdl-list__item-icon,.mdl-list__item-icon.material-icons{height:24px;width:24px;font-size:24px;box-sizing:border-box;color:#757575}.mdl-list__item-avatar,.mdl-list__item-avatar.material-icons{height:40px;width:40px;box-sizing:border-box;border-radius:50%;background-color:#757575;font-size:40px;color:#fff}.mdl-list__item--two-line{height:72px}.mdl-list__item--two-line .mdl-list__item-primary-content{height:36px;line-height:20px;display:block}.mdl-list__item--two-line .mdl-list__item-primary-content .mdl-list__item-avatar{float:left}.mdl-list__item--two-line .mdl-list__item-primary-content .mdl-list__item-icon{float:left;margin-top:6px}.mdl-list__item--two-line .mdl-list__item-primary-content .mdl-list__item-secondary-content{height:36px}.mdl-list__item--two-line .mdl-list__item-primary-content .mdl-list__item-sub-title{font-size:14px;font-weight:400;line-height:24px;letter-spacing:0;line-height:18px;color:rgba(0,0,0,.54);display:block;padding:0}.mdl-list__item--three-line{height:88px}.mdl-list__item--three-line .mdl-list__item-primary-content{height:52px;line-height:20px;display:block}.mdl-list__item--three-line .mdl-list__item-primary-content .mdl-list__item-avatar,.mdl-list__item--three-line .mdl-list__item-primary-content .mdl-list__item-icon{float:left}.mdl-list__item--three-line .mdl-list__item-secondary-content{height:52px}.mdl-list__item--three-line .mdl-list__item-text-body{font-size:14px;font-weight:400;line-height:24px;letter-spacing:0;line-height:18px;height:52px;color:rgba(0,0,0,.54);display:block;padding:0}.mdl-menu__container{display:block;margin:0;padding:0;border:none;position:absolute;overflow:visible;height:0;width:0;visibility:hidden;z-index:-1}.mdl-menu__container.is-animating,.mdl-menu__container.is-visible{z-index:999;visibility:visible}.mdl-menu__outline{display:block;background:#fff;margin:0;padding:0;border:none;border-radius:2px;position:absolute;top:0;left:0;overflow:hidden;opacity:0;-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:0 0;transform-origin:0 0;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);will-change:transform;transition:opacity .2s cubic-bezier(.4,0,.2,1),-webkit-transform .3s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .2s cubic-bezier(.4,0,.2,1);transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .2s cubic-bezier(.4,0,.2,1),-webkit-transform .3s cubic-bezier(.4,0,.2,1);z-index:-1}.mdl-menu__container.is-visible .mdl-menu__outline{opacity:1;-webkit-transform:scale(1);transform:scale(1);z-index:999}.mdl-menu__outline.mdl-menu--bottom-right{-webkit-transform-origin:100% 0;transform-origin:100% 0}.mdl-menu__outline.mdl-menu--top-left{-webkit-transform-origin:0 100%;transform-origin:0 100%}.mdl-menu__outline.mdl-menu--top-right{-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.mdl-menu{position:absolute;list-style:none;top:0;left:0;height:auto;width:auto;min-width:124px;padding:8px 0;margin:0;opacity:0;clip:rect(0 0 0 0);z-index:-1}.mdl-menu__container.is-visible .mdl-menu{opacity:1;z-index:999}.mdl-menu.is-animating{transition:opacity .2s cubic-bezier(.4,0,.2,1),clip .3s cubic-bezier(.4,0,.2,1)}.mdl-menu.mdl-menu--bottom-right{left:auto;right:0}.mdl-menu.mdl-menu--top-left{top:auto;bottom:0}.mdl-menu.mdl-menu--top-right{top:auto;left:auto;bottom:0;right:0}.mdl-menu.mdl-menu--unaligned{top:auto;left:auto}.mdl-menu__item{display:block;border:none;color:rgba(0,0,0,.87);background-color:transparent;text-align:left;margin:0;padding:0 16px;outline-color:#bdbdbd;position:relative;overflow:hidden;font-size:14px;font-weight:400;line-height:24px;letter-spacing:0;text-decoration:none;cursor:pointer;height:48px;line-height:48px;white-space:nowrap;opacity:0;transition:opacity .2s cubic-bezier(.4,0,.2,1);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdl-menu__container.is-visible .mdl-menu__item{opacity:1}.mdl-menu__item::-moz-focus-inner{border:0}.mdl-menu__item--full-bleed-divider{border-bottom:1px solid rgba(0,0,0,.12)}.mdl-menu__item[data-mdl-disabled],.mdl-menu__item[disabled]{color:#bdbdbd;background-color:transparent;cursor:auto}.mdl-menu__item[data-mdl-disabled]:focus,.mdl-menu__item[data-mdl-disabled]:hover,.mdl-menu__item[disabled]:focus,.mdl-menu__item[disabled]:hover{background-color:transparent}.mdl-menu__item[data-mdl-disabled] .mdl-ripple,.mdl-menu__item[disabled] .mdl-ripple{background:transparent}.mdl-menu__item:hover{background-color:#eee}.mdl-menu__item:focus{outline:none;background-color:#eee}.mdl-menu__item:active{background-color:#e0e0e0}.mdl-menu__item--ripple-container{display:block;height:100%;left:0;position:absolute;top:0;width:100%;z-index:0;overflow:hidden}.mdl-progress{display:block;position:relative;height:4px;width:500px;max-width:100%}.mdl-progress>.bar{display:block;position:absolute;top:0;bottom:0;width:0;transition:width .2s cubic-bezier(.4,0,.2,1)}.mdl-progress>.progressbar{background-color:#3f51b5;z-index:1;left:0}.mdl-progress>.bufferbar{background-image:linear-gradient(90deg,hsla(0,0%,100%,.7),hsla(0,0%,100%,.7)),linear-gradient(90deg,#3f51b5,#3f51b5);z-index:0;left:0}.mdl-progress>.auxbar{right:0}@supports (-webkit-appearance:none){.mdl-progress:not(.mdl-progress--indeterminate):not(.mdl-progress--indeterminate)>.auxbar,.mdl-progress:not(.mdl-progress__indeterminate):not(.mdl-progress__indeterminate)>.auxbar{background-image:linear-gradient(90deg,hsla(0,0%,100%,.7),hsla(0,0%,100%,.7)),linear-gradient(90deg,#3f51b5,#3f51b5);-webkit-mask:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjEyIiBoZWlnaHQ9IjQiIHZpZXdQb3J0PSIwIDAgMTIgNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxlbGxpcHNlIGN4PSIyIiBjeT0iMiIgcng9IjIiIHJ5PSIyIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImN4IiBmcm9tPSIyIiB0bz0iLTEwIiBkdXI9IjAuNnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogIDwvZWxsaXBzZT4KICA8ZWxsaXBzZSBjeD0iMTQiIGN5PSIyIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJsb2FkZXIiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iY3giIGZyb209IjE0IiB0bz0iMiIgZHVyPSIwLjZzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4KICA8L2VsbGlwc2U+Cjwvc3ZnPgo=");mask:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxzdmcgd2lkdGg9IjEyIiBoZWlnaHQ9IjQiIHZpZXdQb3J0PSIwIDAgMTIgNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxlbGxpcHNlIGN4PSIyIiBjeT0iMiIgcng9IjIiIHJ5PSIyIj4KICAgIDxhbmltYXRlIGF0dHJpYnV0ZU5hbWU9ImN4IiBmcm9tPSIyIiB0bz0iLTEwIiBkdXI9IjAuNnMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogIDwvZWxsaXBzZT4KICA8ZWxsaXBzZSBjeD0iMTQiIGN5PSIyIiByeD0iMiIgcnk9IjIiIGNsYXNzPSJsb2FkZXIiPgogICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0iY3giIGZyb209IjE0IiB0bz0iMiIgZHVyPSIwLjZzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgLz4KICA8L2VsbGlwc2U+Cjwvc3ZnPgo=")}}.mdl-progress:not(.mdl-progress--indeterminate)>.auxbar,.mdl-progress:not(.mdl-progress__indeterminate)>.auxbar{background-image:linear-gradient(90deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.9)),linear-gradient(90deg,#3f51b5,#3f51b5)}.mdl-progress.mdl-progress--indeterminate>.bar1,.mdl-progress.mdl-progress__indeterminate>.bar1{background-color:#3f51b5;-webkit-animation-name:indeterminate1;animation-name:indeterminate1;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}.mdl-progress.mdl-progress--indeterminate>.bar3,.mdl-progress.mdl-progress__indeterminate>.bar3{background-image:none;background-color:#3f51b5;-webkit-animation-name:indeterminate2;animation-name:indeterminate2;-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes indeterminate1{0%{left:0;width:0}50%{left:25%;width:75%}75%{left:100%;width:0}}@keyframes indeterminate1{0%{left:0;width:0}50%{left:25%;width:75%}75%{left:100%;width:0}}@-webkit-keyframes indeterminate2{0%{left:0;width:0}50%{left:0;width:0}75%{left:0;width:25%}to{left:100%;width:0}}@keyframes indeterminate2{0%{left:0;width:0}50%{left:0;width:0}75%{left:0;width:25%}to{left:100%;width:0}}.mdl-navigation{display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;box-sizing:border-box}.mdl-navigation__link{color:#424242;text-decoration:none;margin:0;font-size:14px;font-weight:400;line-height:24px;letter-spacing:0;opacity:.87}.mdl-navigation__link .material-icons{vertical-align:middle}.mdl-layout{position:absolute;width:100%;height:100%}.mdl-layout.is-small-screen .mdl-layout--large-screen-only,.mdl-layout:not(.is-small-screen) .mdl-layout--small-screen-only{display:none}.mdl-layout__inner-container{width:100%;height:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;overflow-y:auto;overflow-x:hidden;position:relative;-webkit-overflow-scrolling:touch}.mdl-layout-title,.mdl-layout__title{display:block;position:relative;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:20px;font-weight:500;line-height:1;letter-spacing:.02em;font-weight:400;box-sizing:border-box}.mdl-layout-spacer{-ms-flex-positive:1;flex-grow:1}.mdl-layout__drawer{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;width:240px;height:100%;max-height:100%;position:absolute;top:0;left:0;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);box-sizing:border-box;border-right:1px solid #e0e0e0;background:#fafafa;-webkit-transform:translateX(-250px);transform:translateX(-250px);-webkit-transform-style:preserve-3d;transform-style:preserve-3d;will-change:transform;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;color:#424242;overflow:visible;overflow-y:auto;z-index:5}.mdl-layout__drawer.is-visible{-webkit-transform:translateX(0);transform:translateX(0)}.mdl-layout__drawer.is-visible~.mdl-layout__content.mdl-layout__content{overflow:hidden}.mdl-layout__drawer>*{-ms-flex-negative:0;flex-shrink:0}.mdl-layout__drawer>.mdl-layout-title,.mdl-layout__drawer>.mdl-layout__title{line-height:64px;padding-left:40px}@media screen and (max-width:1024px){.mdl-layout__drawer>.mdl-layout-title,.mdl-layout__drawer>.mdl-layout__title{line-height:56px;padding-left:16px}}.mdl-layout__drawer .mdl-navigation{-ms-flex-direction:column;flex-direction:column;-webkit-align-items:stretch;-ms-flex-align:stretch;-ms-grid-row-align:stretch;align-items:stretch;padding-top:16px}.mdl-layout__drawer .mdl-navigation .mdl-navigation__link{display:block;-ms-flex-negative:0;flex-shrink:0;padding:16px 40px;margin:0;color:#757575}@media screen and (max-width:1024px){.mdl-layout__drawer .mdl-navigation .mdl-navigation__link{padding:16px}}.mdl-layout__drawer .mdl-navigation .mdl-navigation__link:hover{background-color:#e0e0e0}.mdl-layout__drawer .mdl-navigation .mdl-navigation__link--current{background-color:#e0e0e0;color:#000}@media screen and (min-width:1025px){.mdl-layout--fixed-drawer>.mdl-layout__inner-container>.mdl-layout__drawer{-webkit-transform:translateX(0);transform:translateX(0)}}.mdl-layout__drawer-button{display:block;position:absolute;height:48px;width:48px;border:0;-ms-flex-negative:0;flex-shrink:0;overflow:hidden;text-align:center;cursor:pointer;font-size:26px;line-height:56px;font-family:Helvetica,Arial,sans-serif;margin:8px 12px;top:0;left:0;color:#fff;z-index:4}.mdl-layout__header .mdl-layout__drawer-button{position:absolute;color:#fff;background-color:inherit}@media screen and (max-width:1024px){.mdl-layout__header .mdl-layout__drawer-button{margin:4px}}@media screen and (max-width:1024px){.mdl-layout__drawer-button{margin:4px;color:rgba(0,0,0,.5)}}@media screen and (min-width:1025px){.mdl-layout__drawer-button{line-height:54px}.mdl-layout--fixed-drawer>.mdl-layout__inner-container>.mdl-layout__drawer-button,.mdl-layout--no-desktop-drawer-button .mdl-layout__drawer-button,.mdl-layout--no-drawer-button .mdl-layout__drawer-button{display:none}}.mdl-layout__header{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-pack:start;justify-content:flex-start;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;width:100%;margin:0;padding:0;border:none;min-height:64px;max-height:1000px;z-index:3;background-color:#3f51b5;color:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-property:max-height,box-shadow}@media screen and (max-width:1024px){.mdl-layout__header{min-height:56px}}.mdl-layout--fixed-drawer.is-upgraded:not(.is-small-screen)>.mdl-layout__inner-container>.mdl-layout__header{margin-left:240px;width:calc(100% - 240px)}@media screen and (min-width:1025px){.mdl-layout--fixed-drawer>.mdl-layout__inner-container>.mdl-layout__header .mdl-layout__header-row{padding-left:40px}}.mdl-layout__header>.mdl-layout-icon{position:absolute;left:40px;top:16px;height:32px;width:32px;overflow:hidden;z-index:3;display:block}@media screen and (max-width:1024px){.mdl-layout__header>.mdl-layout-icon{left:16px;top:12px}}.mdl-layout.has-drawer .mdl-layout__header>.mdl-layout-icon{display:none}.mdl-layout__header.is-compact{max-height:64px}@media screen and (max-width:1024px){.mdl-layout__header.is-compact{max-height:56px}}.mdl-layout__header.is-compact.has-tabs{height:112px}@media screen and (max-width:1024px){.mdl-layout__header.is-compact.has-tabs{min-height:104px}}@media screen and (max-width:1024px){.mdl-layout__header{display:none}.mdl-layout--fixed-header>.mdl-layout__inner-container>.mdl-layout__header{display:-ms-flexbox;display:flex}}.mdl-layout__header--transparent.mdl-layout__header--transparent{background-color:transparent;box-shadow:none}.mdl-layout__header--scroll,.mdl-layout__header--seamed{box-shadow:none}.mdl-layout__header--waterfall{box-shadow:none;overflow:hidden}.mdl-layout__header--waterfall.is-casting-shadow{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.mdl-layout__header--waterfall.mdl-layout__header--waterfall-hide-top{-ms-flex-pack:end;justify-content:flex-end}.mdl-layout__header-row{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-ms-flex-negative:0;flex-shrink:0;box-sizing:border-box;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;-ms-flex-align:center;align-items:center;height:64px;margin:0;padding:0 40px 0 80px}.mdl-layout--no-drawer-button .mdl-layout__header-row{padding-left:40px}@media screen and (min-width:1025px){.mdl-layout--no-desktop-drawer-button .mdl-layout__header-row{padding-left:40px}}@media screen and (max-width:1024px){.mdl-layout__header-row{height:56px;padding:0 16px 0 72px}.mdl-layout--no-drawer-button .mdl-layout__header-row{padding-left:16px}}.mdl-layout__header-row>*{-ms-flex-negative:0;flex-shrink:0}.mdl-layout__header--scroll .mdl-layout__header-row{width:100%}.mdl-layout__header-row .mdl-navigation{margin:0;padding:0;height:64px;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center}@media screen and (max-width:1024px){.mdl-layout__header-row .mdl-navigation{height:56px}}.mdl-layout__header-row .mdl-navigation__link{display:block;color:#fff;line-height:64px;padding:0 24px}@media screen and (max-width:1024px){.mdl-layout__header-row .mdl-navigation__link{line-height:56px;padding:0 16px}}.mdl-layout__obfuscator{background-color:transparent;position:absolute;top:0;left:0;height:100%;width:100%;z-index:4;visibility:hidden;transition-property:background-color;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.mdl-layout__obfuscator.is-visible{background-color:rgba(0,0,0,.5);visibility:visible}@supports (pointer-events:auto){.mdl-layout__obfuscator{background-color:rgba(0,0,0,.5);opacity:0;transition-property:opacity;visibility:visible;pointer-events:none}.mdl-layout__obfuscator.is-visible{pointer-events:auto;opacity:1}}.mdl-layout__content{-ms-flex:0 1 auto;position:relative;display:inline-block;overflow-y:auto;overflow-x:hidden;-ms-flex-positive:1;flex-grow:1;z-index:1;-webkit-overflow-scrolling:touch}.mdl-layout--fixed-drawer>.mdl-layout__inner-container>.mdl-layout__content{margin-left:240px}.mdl-layout.has-scrolling-header .mdl-layout__content{overflow:visible}@media screen and (max-width:1024px){.mdl-layout--fixed-drawer>.mdl-layout__inner-container>.mdl-layout__content{margin-left:0}.mdl-layout.has-scrolling-header .mdl-layout__content{overflow-y:auto;overflow-x:hidden}}.mdl-layout__tab-bar{height:96px;margin:0;width:calc(100% - 112px);padding:0 0 0 56px;display:-ms-flexbox;display:flex;background-color:#3f51b5;overflow-y:hidden;overflow-x:scroll}.mdl-layout__tab-bar::-webkit-scrollbar{display:none}.mdl-layout--no-drawer-button .mdl-layout__tab-bar{padding-left:16px;width:calc(100% - 32px)}@media screen and (min-width:1025px){.mdl-layout--no-desktop-drawer-button .mdl-layout__tab-bar{padding-left:16px;width:calc(100% - 32px)}}@media screen and (max-width:1024px){.mdl-layout__tab-bar{width:calc(100% - 60px);padding:0 0 0 60px}.mdl-layout--no-drawer-button .mdl-layout__tab-bar{width:calc(100% - 8px);padding-left:4px}}.mdl-layout--fixed-tabs .mdl-layout__tab-bar{padding:0;overflow:hidden;width:100%}.mdl-layout__tab-bar-container{position:relative;height:48px;width:100%;border:none;margin:0;z-index:2;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.mdl-layout__container>.mdl-layout__tab-bar-container{position:absolute;top:0;left:0}.mdl-layout__tab-bar-button{display:inline-block;position:absolute;top:0;height:48px;width:56px;z-index:4;text-align:center;background-color:#3f51b5;color:transparent;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdl-layout--no-desktop-drawer-button .mdl-layout__tab-bar-button,.mdl-layout--no-drawer-button .mdl-layout__tab-bar-button{width:16px}.mdl-layout--no-desktop-drawer-button .mdl-layout__tab-bar-button .material-icons,.mdl-layout--no-drawer-button .mdl-layout__tab-bar-button .material-icons{position:relative;left:-4px}@media screen and (max-width:1024px){.mdl-layout__tab-bar-button{width:60px}}.mdl-layout--fixed-tabs .mdl-layout__tab-bar-button{display:none}.mdl-layout__tab-bar-button .material-icons{line-height:48px}.mdl-layout__tab-bar-button.is-active{color:#fff}.mdl-layout__tab-bar-left-button{left:0}.mdl-layout__tab-bar-right-button{right:0}.mdl-layout__tab{margin:0;border:none;padding:0 24px;float:left;position:relative;display:block;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;text-decoration:none;height:48px;line-height:48px;text-align:center;font-weight:500;font-size:14px;text-transform:uppercase;color:hsla(0,0%,100%,.6);overflow:hidden}@media screen and (max-width:1024px){.mdl-layout__tab{padding:0 12px}}.mdl-layout--fixed-tabs .mdl-layout__tab{float:none;-ms-flex-positive:1;flex-grow:1;padding:0}.mdl-layout.is-upgraded .mdl-layout__tab.is-active{color:#fff}.mdl-layout.is-upgraded .mdl-layout__tab.is-active:after{height:2px;width:100%;display:block;content:" ";bottom:0;left:0;position:absolute;background:#ff4081;-webkit-animation:border-expand .2s cubic-bezier(.4,0,.4,1) .01s alternate forwards;animation:border-expand .2s cubic-bezier(.4,0,.4,1) .01s alternate forwards;transition:all 1s cubic-bezier(.4,0,1,1)}.mdl-layout__tab .mdl-layout__tab-ripple-container{display:block;position:absolute;height:100%;width:100%;left:0;top:0;z-index:1;overflow:hidden}.mdl-layout__tab .mdl-layout__tab-ripple-container .mdl-ripple{background-color:#fff}.mdl-layout__tab-panel{display:block}.mdl-layout.is-upgraded .mdl-layout__tab-panel{display:none}.mdl-layout.is-upgraded .mdl-layout__tab-panel.is-active{display:block}.mdl-radio{position:relative;font-size:16px;line-height:24px;display:inline-block;box-sizing:border-box;margin:0;padding-left:0}.mdl-radio.is-upgraded{padding-left:24px}.mdl-radio__button{line-height:24px}.mdl-radio.is-upgraded .mdl-radio__button{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;-ms-appearance:none;-moz-appearance:none;-webkit-appearance:none;appearance:none;border:none}.mdl-radio__outer-circle{position:absolute;top:4px;left:0;display:inline-block;box-sizing:border-box;width:16px;height:16px;margin:0;cursor:pointer;border:2px solid rgba(0,0,0,.54);border-radius:50%;z-index:2}.mdl-radio.is-checked .mdl-radio__outer-circle{border:2px solid #3f51b5}.mdl-radio.is-disabled .mdl-radio__outer-circle,.mdl-radio__outer-circle fieldset[disabled] .mdl-radio{border:2px solid rgba(0,0,0,.26);cursor:auto}.mdl-radio__inner-circle{position:absolute;z-index:1;margin:0;top:8px;left:4px;box-sizing:border-box;width:8px;height:8px;cursor:pointer;transition-duration:.28s;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transform:scale3d(0,0,0);transform:scale3d(0,0,0);border-radius:50%;background:#3f51b5}.mdl-radio.is-checked .mdl-radio__inner-circle{-webkit-transform:scaleX(1);transform:scaleX(1)}.mdl-radio.is-disabled .mdl-radio__inner-circle,fieldset[disabled] .mdl-radio .mdl-radio__inner-circle{background:rgba(0,0,0,.26);cursor:auto}.mdl-radio.is-focused .mdl-radio__inner-circle{box-shadow:0 0 0 10px rgba(0,0,0,.1)}.mdl-radio__label{cursor:pointer}.mdl-radio.is-disabled .mdl-radio__label,fieldset[disabled] .mdl-radio .mdl-radio__label{color:rgba(0,0,0,.26);cursor:auto}.mdl-radio__ripple-container{position:absolute;z-index:2;top:-9px;left:-13px;box-sizing:border-box;width:42px;height:42px;border-radius:50%;cursor:pointer;overflow:hidden;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000)}.mdl-radio__ripple-container .mdl-ripple{background:#3f51b5}.mdl-radio.is-disabled .mdl-radio__ripple-container,fieldset[disabled] .mdl-radio .mdl-radio__ripple-container{cursor:auto}.mdl-radio.is-disabled .mdl-radio__ripple-container .mdl-ripple,fieldset[disabled] .mdl-radio .mdl-radio__ripple-container .mdl-ripple{background:transparent}:root .mdl-slider.mdl-slider.is-upgraded,_:-ms-input-placeholder{-ms-appearance:none;height:32px;margin:0}.mdl-slider{width:calc(100% - 40px);margin:0 20px}.mdl-slider.is-upgraded{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:2px;background:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0;padding:0;color:#3f51b5;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;z-index:1;cursor:pointer}.mdl-slider.is-upgraded::-moz-focus-outer{border:0}.mdl-slider.is-upgraded::-ms-tooltip{display:none}.mdl-slider.is-upgraded::-webkit-slider-runnable-track{background:transparent}.mdl-slider.is-upgraded::-moz-range-track{background:transparent;border:none}.mdl-slider.is-upgraded::-ms-track{background:none;color:transparent;height:2px;width:100%;border:none}.mdl-slider.is-upgraded::-ms-fill-lower{padding:0;background:linear-gradient(90deg,transparent,transparent 16px,#3f51b5 0,#3f51b5 0)}.mdl-slider.is-upgraded::-ms-fill-upper{padding:0;background:linear-gradient(270deg,transparent,transparent 16px,rgba(0,0,0,.26) 0,rgba(0,0,0,.26) 0)}.mdl-slider.is-upgraded::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;box-sizing:border-box;border-radius:50%;background:#3f51b5;border:none;transition:border .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1),-webkit-transform .18s cubic-bezier(.4,0,.2,1);transition:transform .18s cubic-bezier(.4,0,.2,1),border .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1);transition:transform .18s cubic-bezier(.4,0,.2,1),border .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1),-webkit-transform .18s cubic-bezier(.4,0,.2,1)}.mdl-slider.is-upgraded::-moz-range-thumb{-moz-appearance:none;width:12px;height:12px;box-sizing:border-box;border-radius:50%;background-image:none;background:#3f51b5;border:none}.mdl-slider.is-upgraded:focus:not(:active)::-webkit-slider-thumb{box-shadow:0 0 0 10px rgba(63,81,181,.26)}.mdl-slider.is-upgraded:focus:not(:active)::-moz-range-thumb{box-shadow:0 0 0 10px rgba(63,81,181,.26)}.mdl-slider.is-upgraded:active::-webkit-slider-thumb{background-image:none;background:#3f51b5;-webkit-transform:scale(1.5);transform:scale(1.5)}.mdl-slider.is-upgraded:active::-moz-range-thumb{background-image:none;background:#3f51b5;transform:scale(1.5)}.mdl-slider.is-upgraded::-ms-thumb{width:32px;height:32px;border:none;border-radius:50%;background:#3f51b5;transform:scale(.375);transition:background .28s cubic-bezier(.4,0,.2,1),-webkit-transform .18s cubic-bezier(.4,0,.2,1);transition:transform .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1);transition:transform .18s cubic-bezier(.4,0,.2,1),background .28s cubic-bezier(.4,0,.2,1),-webkit-transform .18s cubic-bezier(.4,0,.2,1)}.mdl-slider.is-upgraded:focus:not(:active)::-ms-thumb{background:radial-gradient(circle closest-side,#3f51b5 0,#3f51b5 37.5%,rgba(63,81,181,.26) 0,rgba(63,81,181,.26) 100%);transform:scale(1)}.mdl-slider.is-upgraded:active::-ms-thumb{background:#3f51b5;transform:scale(.5625)}.mdl-slider.is-upgraded.is-lowest-value::-webkit-slider-thumb{border:2px solid rgba(0,0,0,.26);background:transparent}.mdl-slider.is-upgraded.is-lowest-value::-moz-range-thumb{border:2px solid rgba(0,0,0,.26);background:transparent}.mdl-slider.is-upgraded.is-lowest-value+.mdl-slider__background-flex>.mdl-slider__background-upper{left:6px}.mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-webkit-slider-thumb{box-shadow:0 0 0 10px rgba(0,0,0,.12);background:rgba(0,0,0,.12)}.mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-moz-range-thumb{box-shadow:0 0 0 10px rgba(0,0,0,.12);background:rgba(0,0,0,.12)}.mdl-slider.is-upgraded.is-lowest-value:active::-webkit-slider-thumb{border:1.6px solid rgba(0,0,0,.26);-webkit-transform:scale(1.5);transform:scale(1.5)}.mdl-slider.is-upgraded.is-lowest-value:active+.mdl-slider__background-flex>.mdl-slider__background-upper{left:9px}.mdl-slider.is-upgraded.is-lowest-value:active::-moz-range-thumb{border:1.5px solid rgba(0,0,0,.26);transform:scale(1.5)}.mdl-slider.is-upgraded.is-lowest-value::-ms-thumb{background:radial-gradient(circle closest-side,transparent 0,transparent 66.67%,rgba(0,0,0,.26) 0,rgba(0,0,0,.26) 100%)}.mdl-slider.is-upgraded.is-lowest-value:focus:not(:active)::-ms-thumb{background:radial-gradient(circle closest-side,rgba(0,0,0,.12) 0,rgba(0,0,0,.12) 25%,rgba(0,0,0,.26) 0,rgba(0,0,0,.26) 37.5%,rgba(0,0,0,.12) 0,rgba(0,0,0,.12) 100%);transform:scale(1)}.mdl-slider.is-upgraded.is-lowest-value:active::-ms-thumb{transform:scale(.5625);background:radial-gradient(circle closest-side,transparent 0,transparent 77.78%,rgba(0,0,0,.26) 0,rgba(0,0,0,.26) 100%)}.mdl-slider.is-upgraded.is-lowest-value::-ms-fill-lower{background:transparent}.mdl-slider.is-upgraded.is-lowest-value::-ms-fill-upper{margin-left:6px}.mdl-slider.is-upgraded.is-lowest-value:active::-ms-fill-upper{margin-left:9px}.mdl-slider.is-upgraded:disabled::-webkit-slider-thumb,.mdl-slider.is-upgraded:disabled:active::-webkit-slider-thumb,.mdl-slider.is-upgraded:disabled:focus::-webkit-slider-thumb{-webkit-transform:scale(.667);transform:scale(.667);background:rgba(0,0,0,.26)}.mdl-slider.is-upgraded:disabled::-moz-range-thumb,.mdl-slider.is-upgraded:disabled:active::-moz-range-thumb,.mdl-slider.is-upgraded:disabled:focus::-moz-range-thumb{transform:scale(.667);background:rgba(0,0,0,.26)}.mdl-slider.is-upgraded:disabled+.mdl-slider__background-flex>.mdl-slider__background-lower{background-color:rgba(0,0,0,.26);left:-6px}.mdl-slider.is-upgraded:disabled+.mdl-slider__background-flex>.mdl-slider__background-upper{left:6px}.mdl-slider.is-upgraded.is-lowest-value:disabled::-webkit-slider-thumb,.mdl-slider.is-upgraded.is-lowest-value:disabled:active::-webkit-slider-thumb,.mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-webkit-slider-thumb{border:3px solid rgba(0,0,0,.26);background:transparent;-webkit-transform:scale(.667);transform:scale(.667)}.mdl-slider.is-upgraded.is-lowest-value:disabled::-moz-range-thumb,.mdl-slider.is-upgraded.is-lowest-value:disabled:active::-moz-range-thumb,.mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-moz-range-thumb{border:3px solid rgba(0,0,0,.26);background:transparent;transform:scale(.667)}.mdl-slider.is-upgraded.is-lowest-value:disabled:active+.mdl-slider__background-flex>.mdl-slider__background-upper{left:6px}.mdl-slider.is-upgraded:disabled::-ms-thumb,.mdl-slider.is-upgraded:disabled:active::-ms-thumb,.mdl-slider.is-upgraded:disabled:focus::-ms-thumb{transform:scale(.25);background:rgba(0,0,0,.26)}.mdl-slider.is-upgraded.is-lowest-value:disabled::-ms-thumb,.mdl-slider.is-upgraded.is-lowest-value:disabled:active::-ms-thumb,.mdl-slider.is-upgraded.is-lowest-value:disabled:focus::-ms-thumb{transform:scale(.25);background:radial-gradient(circle closest-side,transparent 0,transparent 50%,rgba(0,0,0,.26) 0,rgba(0,0,0,.26) 100%)}.mdl-slider.is-upgraded:disabled::-ms-fill-lower{margin-right:6px;background:linear-gradient(90deg,transparent,transparent 25px,rgba(0,0,0,.26) 0,rgba(0,0,0,.26) 0)}.mdl-slider.is-upgraded.is-lowest-value:disabled:active::-ms-fill-upper,.mdl-slider.is-upgraded:disabled::-ms-fill-upper{margin-left:6px}.mdl-slider__ie-container{height:18px;overflow:visible;border:none;margin:none;padding:none}.mdl-slider__container{height:18px;position:relative;background:none;display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row}.mdl-slider__background-flex{background:transparent;position:absolute;height:2px;width:calc(100% - 52px);top:50%;left:0;margin:0 26px;display:-ms-flexbox;display:flex;overflow:hidden;border:0;padding:0;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.mdl-slider__background-lower{background:#3f51b5;-ms-flex:0;flex:0;position:relative;border:0;padding:0}.mdl-slider__background-upper{background:rgba(0,0,0,.26);-ms-flex:0;flex:0;position:relative;border:0;padding:0;transition:left .18s cubic-bezier(.4,0,.2,1)}.mdl-snackbar{position:fixed;bottom:0;left:50%;cursor:default;background-color:#323232;z-index:3;display:block;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;font-family:Roboto,Helvetica,Arial,sans-serif;will-change:transform;-webkit-transform:translateY(80px);transform:translateY(80px);transition:-webkit-transform .25s cubic-bezier(.4,0,1,1);transition:transform .25s cubic-bezier(.4,0,1,1);transition:transform .25s cubic-bezier(.4,0,1,1),-webkit-transform .25s cubic-bezier(.4,0,1,1);pointer-events:none}@media (max-width:479px){.mdl-snackbar{width:100%;left:0;min-height:48px;max-height:80px}}@media (min-width:480px){.mdl-snackbar{min-width:288px;max-width:568px;border-radius:2px;-webkit-transform:translate(-50%,80px);transform:translate(-50%,80px)}}.mdl-snackbar--active{-webkit-transform:translate(0);transform:translate(0);pointer-events:auto;transition:-webkit-transform .25s cubic-bezier(0,0,.2,1);transition:transform .25s cubic-bezier(0,0,.2,1);transition:transform .25s cubic-bezier(0,0,.2,1),-webkit-transform .25s cubic-bezier(0,0,.2,1)}@media (min-width:480px){.mdl-snackbar--active{-webkit-transform:translate(-50%);transform:translate(-50%)}}.mdl-snackbar__text{padding:14px 12px 14px 24px;vertical-align:middle;color:#fff;float:left}.mdl-snackbar__action{background:transparent;border:none;color:#ff4081;float:right;padding:14px 24px 14px 12px;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;font-weight:500;text-transform:uppercase;line-height:1;letter-spacing:0;overflow:hidden;outline:none;opacity:0;pointer-events:none;cursor:pointer;text-decoration:none;text-align:center;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.mdl-snackbar__action::-moz-focus-inner{border:0}.mdl-snackbar__action:not([aria-hidden]){opacity:1;pointer-events:auto}.mdl-spinner{display:inline-block;position:relative;width:28px;height:28px}.mdl-spinner:not(.is-upgraded).is-active:after{content:"Loading..."}.mdl-spinner.is-upgraded.is-active{-webkit-animation:mdl-spinner__container-rotate 1.56823529412s linear infinite;animation:mdl-spinner__container-rotate 1.56823529412s linear infinite}@-webkit-keyframes mdl-spinner__container-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes mdl-spinner__container-rotate{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.mdl-spinner__layer{position:absolute;width:100%;height:100%;opacity:0}.mdl-spinner__layer-1{border-color:#42a5f5}.mdl-spinner--single-color .mdl-spinner__layer-1{border-color:#3f51b5}.mdl-spinner.is-active .mdl-spinner__layer-1{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-1-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__layer-2{border-color:#f44336}.mdl-spinner--single-color .mdl-spinner__layer-2{border-color:#3f51b5}.mdl-spinner.is-active .mdl-spinner__layer-2{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-2-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__layer-3{border-color:#fdd835}.mdl-spinner--single-color .mdl-spinner__layer-3{border-color:#3f51b5}.mdl-spinner.is-active .mdl-spinner__layer-3{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-3-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__layer-4{border-color:#4caf50}.mdl-spinner--single-color .mdl-spinner__layer-4{border-color:#3f51b5}.mdl-spinner.is-active .mdl-spinner__layer-4{-webkit-animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,mdl-spinner__layer-4-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes mdl-spinner__fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(3turn);transform:rotate(3turn)}}@keyframes mdl-spinner__fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(3turn);transform:rotate(3turn)}}@-webkit-keyframes mdl-spinner__layer-1-fade-in-out{0%{opacity:.99}25%{opacity:.99}26%{opacity:0}89%{opacity:0}90%{opacity:.99}to{opacity:.99}}@keyframes mdl-spinner__layer-1-fade-in-out{0%{opacity:.99}25%{opacity:.99}26%{opacity:0}89%{opacity:0}90%{opacity:.99}to{opacity:.99}}@-webkit-keyframes mdl-spinner__layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:.99}50%{opacity:.99}51%{opacity:0}}@keyframes mdl-spinner__layer-2-fade-in-out{0%{opacity:0}15%{opacity:0}25%{opacity:.99}50%{opacity:.99}51%{opacity:0}}@-webkit-keyframes mdl-spinner__layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:.99}75%{opacity:.99}76%{opacity:0}}@keyframes mdl-spinner__layer-3-fade-in-out{0%{opacity:0}40%{opacity:0}50%{opacity:.99}75%{opacity:.99}76%{opacity:0}}@-webkit-keyframes mdl-spinner__layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:.99}90%{opacity:.99}to{opacity:0}}@keyframes mdl-spinner__layer-4-fade-in-out{0%{opacity:0}65%{opacity:0}75%{opacity:.99}90%{opacity:.99}to{opacity:0}}.mdl-spinner__gap-patch{position:absolute;box-sizing:border-box;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.mdl-spinner__gap-patch .mdl-spinner__circle{width:1000%;left:-450%}.mdl-spinner__circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.mdl-spinner__circle-clipper .mdl-spinner__circle{width:200%}.mdl-spinner__circle{box-sizing:border-box;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent!important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0;left:0}.mdl-spinner__left .mdl-spinner__circle{border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.mdl-spinner.is-active .mdl-spinner__left .mdl-spinner__circle{-webkit-animation:mdl-spinner__left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.mdl-spinner__right .mdl-spinner__circle{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.mdl-spinner.is-active .mdl-spinner__right .mdl-spinner__circle{-webkit-animation:mdl-spinner__right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:mdl-spinner__right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes mdl-spinner__left-spin{0%{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@keyframes mdl-spinner__left-spin{0%{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);transform:rotate(130deg)}}@-webkit-keyframes mdl-spinner__right-spin{0%{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}@keyframes mdl-spinner__right-spin{0%{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}.mdl-switch{position:relative;z-index:1;vertical-align:middle;display:inline-block;box-sizing:border-box;width:100%;height:24px;margin:0;padding:0;overflow:visible;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mdl-switch.is-upgraded{padding-left:28px}.mdl-switch__input{line-height:24px}.mdl-switch.is-upgraded .mdl-switch__input{position:absolute;width:0;height:0;margin:0;padding:0;opacity:0;-ms-appearance:none;-moz-appearance:none;-webkit-appearance:none;appearance:none;border:none}.mdl-switch__track{background:rgba(0,0,0,.26);position:absolute;left:0;top:5px;height:14px;width:36px;border-radius:14px;cursor:pointer}.mdl-switch.is-checked .mdl-switch__track{background:rgba(63,81,181,.5)}.mdl-switch.is-disabled .mdl-switch__track,.mdl-switch__track fieldset[disabled] .mdl-switch{background:rgba(0,0,0,.12);cursor:auto}.mdl-switch__thumb{background:#fafafa;position:absolute;left:0;top:2px;height:20px;width:20px;border-radius:50%;cursor:pointer;box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12);transition-duration:.28s;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-property:left}.mdl-switch.is-checked .mdl-switch__thumb{background:#3f51b5;left:16px;box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.2),0 1px 8px 0 rgba(0,0,0,.12)}.mdl-switch.is-disabled .mdl-switch__thumb,.mdl-switch__thumb fieldset[disabled] .mdl-switch{background:#bdbdbd;cursor:auto}.mdl-switch__focus-helper{position:absolute;top:50%;left:50%;-webkit-transform:translate(-4px,-4px);transform:translate(-4px,-4px);display:inline-block;box-sizing:border-box;width:8px;height:8px;border-radius:50%;background-color:transparent}.mdl-switch.is-focused .mdl-switch__focus-helper{box-shadow:0 0 0 20px rgba(0,0,0,.1);background-color:rgba(0,0,0,.1)}.mdl-switch.is-focused.is-checked .mdl-switch__focus-helper{box-shadow:0 0 0 20px rgba(63,81,181,.26);background-color:rgba(63,81,181,.26)}.mdl-switch__label{position:relative;cursor:pointer;font-size:16px;line-height:24px;margin:0;left:24px}.mdl-switch.is-disabled .mdl-switch__label,.mdl-switch__label fieldset[disabled] .mdl-switch{color:#bdbdbd;cursor:auto}.mdl-switch__ripple-container{position:absolute;z-index:2;top:-12px;left:-14px;box-sizing:border-box;width:48px;height:48px;border-radius:50%;cursor:pointer;overflow:hidden;-webkit-mask-image:-webkit-radial-gradient(circle,#fff,#000);transition-duration:.4s;transition-timing-function:step-end;transition-property:left}.mdl-switch__ripple-container .mdl-ripple{background:#3f51b5}.mdl-switch.is-disabled .mdl-switch__ripple-container,.mdl-switch__ripple-container fieldset[disabled] .mdl-switch{cursor:auto}.mdl-switch.is-disabled .mdl-switch__ripple-container .mdl-ripple,fieldset[disabled] .mdl-switch .mdl-switch__ripple-container .mdl-ripple{background:transparent}.mdl-switch.is-checked .mdl-switch__ripple-container{left:2px}.mdl-tabs{display:block;width:100%}.mdl-tabs__tab-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:center;justify-content:center;-ms-flex-line-pack:justify;align-content:space-between;-ms-flex-align:start;align-items:flex-start;height:48px;padding:0;margin:0;border-bottom:1px solid #e0e0e0}.mdl-tabs__tab{margin:0;border:none;padding:0 24px;float:left;position:relative;display:block;text-decoration:none;height:48px;line-height:48px;text-align:center;font-weight:500;font-size:14px;text-transform:uppercase;color:rgba(0,0,0,.54);overflow:hidden}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active{color:rgba(0,0,0,.87)}.mdl-tabs.is-upgraded .mdl-tabs__tab.is-active:after{height:2px;width:100%;display:block;content:" ";bottom:0;left:0;position:absolute;background:#3f51b5;-webkit-animation:border-expand .2s cubic-bezier(.4,0,.4,1) .01s alternate forwards;animation:border-expand .2s cubic-bezier(.4,0,.4,1) .01s alternate forwards;transition:all 1s cubic-bezier(.4,0,1,1)}.mdl-tabs__tab .mdl-tabs__ripple-container{display:block;position:absolute;height:100%;width:100%;left:0;top:0;z-index:1;overflow:hidden}.mdl-tabs__tab .mdl-tabs__ripple-container .mdl-ripple{background:#3f51b5}.mdl-tabs__panel{display:block}.mdl-tabs.is-upgraded .mdl-tabs__panel{display:none}.mdl-tabs.is-upgraded .mdl-tabs__panel.is-active{display:block}@-webkit-keyframes border-expand{0%{opacity:0;width:0}to{opacity:1;width:100%}}@keyframes border-expand{0%{opacity:0;width:0}to{opacity:1;width:100%}}.mdl-textfield{position:relative;font-size:16px;display:inline-block;box-sizing:border-box;width:300px;max-width:100%;margin:0;padding:20px 0}.mdl-textfield .mdl-button{position:absolute;bottom:20px}.mdl-textfield--align-right{text-align:right}.mdl-textfield--full-width{width:100%}.mdl-textfield--expandable{min-width:32px;width:auto;min-height:32px}.mdl-textfield--expandable .mdl-button--icon{top:16px}.mdl-textfield__input{border:none;border-bottom:1px solid rgba(0,0,0,.12);display:block;font-size:16px;font-family:Helvetica,Arial,sans-serif;margin:0;padding:4px 0;width:100%;background:none;text-align:left;color:inherit}.mdl-textfield__input[type=number]{-moz-appearance:textfield}.mdl-textfield__input[type=number]::-webkit-inner-spin-button,.mdl-textfield__input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.mdl-textfield.is-focused .mdl-textfield__input{outline:none}.mdl-textfield.is-invalid .mdl-textfield__input{border-color:#d50000;box-shadow:none}.mdl-textfield.is-disabled .mdl-textfield__input,fieldset[disabled] .mdl-textfield .mdl-textfield__input{background-color:transparent;border-bottom:1px dotted rgba(0,0,0,.12);color:rgba(0,0,0,.26)}.mdl-textfield textarea.mdl-textfield__input{display:block}.mdl-textfield__label{bottom:0;color:rgba(0,0,0,.26);font-size:16px;left:0;right:0;pointer-events:none;position:absolute;display:block;top:24px;width:100%;overflow:hidden;white-space:nowrap;text-align:left}.mdl-textfield.has-placeholder .mdl-textfield__label,.mdl-textfield.is-dirty .mdl-textfield__label{visibility:hidden}.mdl-textfield--floating-label .mdl-textfield__label{transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.mdl-textfield--floating-label.has-placeholder .mdl-textfield__label{transition:none}.mdl-textfield.is-disabled.is-disabled .mdl-textfield__label,fieldset[disabled] .mdl-textfield .mdl-textfield__label{color:rgba(0,0,0,.26)}.mdl-textfield--floating-label.has-placeholder .mdl-textfield__label,.mdl-textfield--floating-label.is-dirty .mdl-textfield__label,.mdl-textfield--floating-label.is-focused .mdl-textfield__label{color:#3f51b5;font-size:12px;top:4px;visibility:visible}.mdl-textfield--floating-label.has-placeholder .mdl-textfield__expandable-holder .mdl-textfield__label,.mdl-textfield--floating-label.is-dirty .mdl-textfield__expandable-holder .mdl-textfield__label,.mdl-textfield--floating-label.is-focused .mdl-textfield__expandable-holder .mdl-textfield__label{top:-16px}.mdl-textfield--floating-label.is-invalid .mdl-textfield__label{color:#d50000;font-size:12px}.mdl-textfield__label:after{background-color:#3f51b5;bottom:20px;content:"";height:2px;left:45%;position:absolute;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);visibility:hidden;width:10px}.mdl-textfield.is-focused .mdl-textfield__label:after{left:0;visibility:visible;width:100%}.mdl-textfield.is-invalid .mdl-textfield__label:after{background-color:#d50000}.mdl-textfield__error{color:#d50000;position:absolute;font-size:12px;margin-top:3px;visibility:hidden;display:block}.mdl-textfield.is-invalid .mdl-textfield__error{visibility:visible}.mdl-textfield__expandable-holder{position:relative;margin-left:32px;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);display:inline-block;max-width:.1px}.mdl-textfield.is-dirty .mdl-textfield__expandable-holder,.mdl-textfield.is-focused .mdl-textfield__expandable-holder{max-width:600px}.mdl-textfield__expandable-holder .mdl-textfield__label:after{bottom:0}.mdl-tooltip{-webkit-transform:scale(0);transform:scale(0);-webkit-transform-origin:top center;transform-origin:top center;z-index:999;background:rgba(97,97,97,.9);border-radius:2px;color:#fff;display:inline-block;font-size:10px;font-weight:500;line-height:14px;max-width:170px;position:fixed;top:-500px;left:-500px;padding:8px;text-align:center}.mdl-tooltip.is-active{-webkit-animation:pulse .2s cubic-bezier(0,0,.2,1) forwards;animation:pulse .2s cubic-bezier(0,0,.2,1) forwards}.mdl-tooltip--large{line-height:14px;font-size:14px;padding:16px}@-webkit-keyframes pulse{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}50%{-webkit-transform:scale(.99);transform:scale(.99)}to{-webkit-transform:scale(1);transform:scale(1);opacity:1;visibility:visible}}@keyframes pulse{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}50%{-webkit-transform:scale(.99);transform:scale(.99)}to{-webkit-transform:scale(1);transform:scale(1);opacity:1;visibility:visible}}.mdl-shadow--2dp{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.2),0 1px 5px 0 rgba(0,0,0,.12)}.mdl-shadow--3dp{box-shadow:0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.2),0 1px 8px 0 rgba(0,0,0,.12)}.mdl-shadow--4dp{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.2)}.mdl-shadow--6dp{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.2)}.mdl-shadow--8dp{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.2)}.mdl-shadow--16dp{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.2)}.mdl-shadow--24dp{box-shadow:0 9px 46px 8px rgba(0,0,0,.14),0 11px 15px -7px rgba(0,0,0,.12),0 24px 38px 3px rgba(0,0,0,.2)}.mdl-grid{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin:0 auto;-ms-flex-align:stretch;align-items:stretch}.mdl-grid.mdl-grid--no-spacing{padding:0}.mdl-cell{box-sizing:border-box}.mdl-cell--top{-webkit-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}.mdl-cell--middle{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.mdl-cell--bottom{-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end}.mdl-cell--stretch{-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch}.mdl-grid.mdl-grid--no-spacing>.mdl-cell{margin:0}.mdl-cell--order-1{-ms-flex-order:1;order:1}.mdl-cell--order-2{-ms-flex-order:2;order:2}.mdl-cell--order-3{-ms-flex-order:3;order:3}.mdl-cell--order-4{-ms-flex-order:4;order:4}.mdl-cell--order-5{-ms-flex-order:5;order:5}.mdl-cell--order-6{-ms-flex-order:6;order:6}.mdl-cell--order-7{-ms-flex-order:7;order:7}.mdl-cell--order-8{-ms-flex-order:8;order:8}.mdl-cell--order-9{-ms-flex-order:9;order:9}.mdl-cell--order-10{-ms-flex-order:10;order:10}.mdl-cell--order-11{-ms-flex-order:11;order:11}.mdl-cell--order-12{-ms-flex-order:12;order:12}@media (max-width:479px){.mdl-grid{padding:8px}.mdl-cell{margin:8px;width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell{width:100%}.mdl-cell--hide-phone{display:none!important}.mdl-cell--order-1-phone.mdl-cell--order-1-phone{-ms-flex-order:1;order:1}.mdl-cell--order-2-phone.mdl-cell--order-2-phone{-ms-flex-order:2;order:2}.mdl-cell--order-3-phone.mdl-cell--order-3-phone{-ms-flex-order:3;order:3}.mdl-cell--order-4-phone.mdl-cell--order-4-phone{-ms-flex-order:4;order:4}.mdl-cell--order-5-phone.mdl-cell--order-5-phone{-ms-flex-order:5;order:5}.mdl-cell--order-6-phone.mdl-cell--order-6-phone{-ms-flex-order:6;order:6}.mdl-cell--order-7-phone.mdl-cell--order-7-phone{-ms-flex-order:7;order:7}.mdl-cell--order-8-phone.mdl-cell--order-8-phone{-ms-flex-order:8;order:8}.mdl-cell--order-9-phone.mdl-cell--order-9-phone{-ms-flex-order:9;order:9}.mdl-cell--order-10-phone.mdl-cell--order-10-phone{-ms-flex-order:10;order:10}.mdl-cell--order-11-phone.mdl-cell--order-11-phone{-ms-flex-order:11;order:11}.mdl-cell--order-12-phone.mdl-cell--order-12-phone{-ms-flex-order:12;order:12}.mdl-cell--1-col,.mdl-cell--1-col-phone.mdl-cell--1-col-phone{width:calc(25% - 16px)}.mdl-grid--no-spacing>.mdl-cell--1-col,.mdl-grid--no-spacing>.mdl-cell--1-col-phone.mdl-cell--1-col-phone{width:25%}.mdl-cell--2-col,.mdl-cell--2-col-phone.mdl-cell--2-col-phone{width:calc(50% - 16px)}.mdl-grid--no-spacing>.mdl-cell--2-col,.mdl-grid--no-spacing>.mdl-cell--2-col-phone.mdl-cell--2-col-phone{width:50%}.mdl-cell--3-col,.mdl-cell--3-col-phone.mdl-cell--3-col-phone{width:calc(75% - 16px)}.mdl-grid--no-spacing>.mdl-cell--3-col,.mdl-grid--no-spacing>.mdl-cell--3-col-phone.mdl-cell--3-col-phone{width:75%}.mdl-cell--4-col,.mdl-cell--4-col-phone.mdl-cell--4-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--4-col,.mdl-grid--no-spacing>.mdl-cell--4-col-phone.mdl-cell--4-col-phone{width:100%}.mdl-cell--5-col,.mdl-cell--5-col-phone.mdl-cell--5-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--5-col,.mdl-grid--no-spacing>.mdl-cell--5-col-phone.mdl-cell--5-col-phone{width:100%}.mdl-cell--6-col,.mdl-cell--6-col-phone.mdl-cell--6-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--6-col,.mdl-grid--no-spacing>.mdl-cell--6-col-phone.mdl-cell--6-col-phone{width:100%}.mdl-cell--7-col,.mdl-cell--7-col-phone.mdl-cell--7-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--7-col,.mdl-grid--no-spacing>.mdl-cell--7-col-phone.mdl-cell--7-col-phone{width:100%}.mdl-cell--8-col,.mdl-cell--8-col-phone.mdl-cell--8-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--8-col,.mdl-grid--no-spacing>.mdl-cell--8-col-phone.mdl-cell--8-col-phone{width:100%}.mdl-cell--9-col,.mdl-cell--9-col-phone.mdl-cell--9-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--9-col,.mdl-grid--no-spacing>.mdl-cell--9-col-phone.mdl-cell--9-col-phone{width:100%}.mdl-cell--10-col,.mdl-cell--10-col-phone.mdl-cell--10-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--10-col,.mdl-grid--no-spacing>.mdl-cell--10-col-phone.mdl-cell--10-col-phone{width:100%}.mdl-cell--11-col,.mdl-cell--11-col-phone.mdl-cell--11-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--11-col,.mdl-grid--no-spacing>.mdl-cell--11-col-phone.mdl-cell--11-col-phone{width:100%}.mdl-cell--12-col,.mdl-cell--12-col-phone.mdl-cell--12-col-phone{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--12-col,.mdl-grid--no-spacing>.mdl-cell--12-col-phone.mdl-cell--12-col-phone{width:100%}.mdl-cell--1-offset,.mdl-cell--1-offset-phone.mdl-cell--1-offset-phone{margin-left:calc(25% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--1-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--1-offset-phone.mdl-cell--1-offset-phone{margin-left:25%}.mdl-cell--2-offset,.mdl-cell--2-offset-phone.mdl-cell--2-offset-phone{margin-left:calc(50% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--2-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--2-offset-phone.mdl-cell--2-offset-phone{margin-left:50%}.mdl-cell--3-offset,.mdl-cell--3-offset-phone.mdl-cell--3-offset-phone{margin-left:calc(75% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--3-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--3-offset-phone.mdl-cell--3-offset-phone{margin-left:75%}}@media (min-width:480px) and (max-width:839px){.mdl-grid{padding:8px}.mdl-cell{margin:8px;width:calc(50% - 16px)}.mdl-grid--no-spacing>.mdl-cell{width:50%}.mdl-cell--hide-tablet{display:none!important}.mdl-cell--order-1-tablet.mdl-cell--order-1-tablet{-ms-flex-order:1;order:1}.mdl-cell--order-2-tablet.mdl-cell--order-2-tablet{-ms-flex-order:2;order:2}.mdl-cell--order-3-tablet.mdl-cell--order-3-tablet{-ms-flex-order:3;order:3}.mdl-cell--order-4-tablet.mdl-cell--order-4-tablet{-ms-flex-order:4;order:4}.mdl-cell--order-5-tablet.mdl-cell--order-5-tablet{-ms-flex-order:5;order:5}.mdl-cell--order-6-tablet.mdl-cell--order-6-tablet{-ms-flex-order:6;order:6}.mdl-cell--order-7-tablet.mdl-cell--order-7-tablet{-ms-flex-order:7;order:7}.mdl-cell--order-8-tablet.mdl-cell--order-8-tablet{-ms-flex-order:8;order:8}.mdl-cell--order-9-tablet.mdl-cell--order-9-tablet{-ms-flex-order:9;order:9}.mdl-cell--order-10-tablet.mdl-cell--order-10-tablet{-ms-flex-order:10;order:10}.mdl-cell--order-11-tablet.mdl-cell--order-11-tablet{-ms-flex-order:11;order:11}.mdl-cell--order-12-tablet.mdl-cell--order-12-tablet{-ms-flex-order:12;order:12}.mdl-cell--1-col,.mdl-cell--1-col-tablet.mdl-cell--1-col-tablet{width:calc(12.5% - 16px)}.mdl-grid--no-spacing>.mdl-cell--1-col,.mdl-grid--no-spacing>.mdl-cell--1-col-tablet.mdl-cell--1-col-tablet{width:12.5%}.mdl-cell--2-col,.mdl-cell--2-col-tablet.mdl-cell--2-col-tablet{width:calc(25% - 16px)}.mdl-grid--no-spacing>.mdl-cell--2-col,.mdl-grid--no-spacing>.mdl-cell--2-col-tablet.mdl-cell--2-col-tablet{width:25%}.mdl-cell--3-col,.mdl-cell--3-col-tablet.mdl-cell--3-col-tablet{width:calc(37.5% - 16px)}.mdl-grid--no-spacing>.mdl-cell--3-col,.mdl-grid--no-spacing>.mdl-cell--3-col-tablet.mdl-cell--3-col-tablet{width:37.5%}.mdl-cell--4-col,.mdl-cell--4-col-tablet.mdl-cell--4-col-tablet{width:calc(50% - 16px)}.mdl-grid--no-spacing>.mdl-cell--4-col,.mdl-grid--no-spacing>.mdl-cell--4-col-tablet.mdl-cell--4-col-tablet{width:50%}.mdl-cell--5-col,.mdl-cell--5-col-tablet.mdl-cell--5-col-tablet{width:calc(62.5% - 16px)}.mdl-grid--no-spacing>.mdl-cell--5-col,.mdl-grid--no-spacing>.mdl-cell--5-col-tablet.mdl-cell--5-col-tablet{width:62.5%}.mdl-cell--6-col,.mdl-cell--6-col-tablet.mdl-cell--6-col-tablet{width:calc(75% - 16px)}.mdl-grid--no-spacing>.mdl-cell--6-col,.mdl-grid--no-spacing>.mdl-cell--6-col-tablet.mdl-cell--6-col-tablet{width:75%}.mdl-cell--7-col,.mdl-cell--7-col-tablet.mdl-cell--7-col-tablet{width:calc(87.5% - 16px)}.mdl-grid--no-spacing>.mdl-cell--7-col,.mdl-grid--no-spacing>.mdl-cell--7-col-tablet.mdl-cell--7-col-tablet{width:87.5%}.mdl-cell--8-col,.mdl-cell--8-col-tablet.mdl-cell--8-col-tablet{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--8-col,.mdl-grid--no-spacing>.mdl-cell--8-col-tablet.mdl-cell--8-col-tablet{width:100%}.mdl-cell--9-col,.mdl-cell--9-col-tablet.mdl-cell--9-col-tablet{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--9-col,.mdl-grid--no-spacing>.mdl-cell--9-col-tablet.mdl-cell--9-col-tablet{width:100%}.mdl-cell--10-col,.mdl-cell--10-col-tablet.mdl-cell--10-col-tablet{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--10-col,.mdl-grid--no-spacing>.mdl-cell--10-col-tablet.mdl-cell--10-col-tablet{width:100%}.mdl-cell--11-col,.mdl-cell--11-col-tablet.mdl-cell--11-col-tablet{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--11-col,.mdl-grid--no-spacing>.mdl-cell--11-col-tablet.mdl-cell--11-col-tablet{width:100%}.mdl-cell--12-col,.mdl-cell--12-col-tablet.mdl-cell--12-col-tablet{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--12-col,.mdl-grid--no-spacing>.mdl-cell--12-col-tablet.mdl-cell--12-col-tablet{width:100%}.mdl-cell--1-offset,.mdl-cell--1-offset-tablet.mdl-cell--1-offset-tablet{margin-left:calc(12.5% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--1-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--1-offset-tablet.mdl-cell--1-offset-tablet{margin-left:12.5%}.mdl-cell--2-offset,.mdl-cell--2-offset-tablet.mdl-cell--2-offset-tablet{margin-left:calc(25% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--2-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--2-offset-tablet.mdl-cell--2-offset-tablet{margin-left:25%}.mdl-cell--3-offset,.mdl-cell--3-offset-tablet.mdl-cell--3-offset-tablet{margin-left:calc(37.5% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--3-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--3-offset-tablet.mdl-cell--3-offset-tablet{margin-left:37.5%}.mdl-cell--4-offset,.mdl-cell--4-offset-tablet.mdl-cell--4-offset-tablet{margin-left:calc(50% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--4-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--4-offset-tablet.mdl-cell--4-offset-tablet{margin-left:50%}.mdl-cell--5-offset,.mdl-cell--5-offset-tablet.mdl-cell--5-offset-tablet{margin-left:calc(62.5% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--5-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--5-offset-tablet.mdl-cell--5-offset-tablet{margin-left:62.5%}.mdl-cell--6-offset,.mdl-cell--6-offset-tablet.mdl-cell--6-offset-tablet{margin-left:calc(75% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--6-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--6-offset-tablet.mdl-cell--6-offset-tablet{margin-left:75%}.mdl-cell--7-offset,.mdl-cell--7-offset-tablet.mdl-cell--7-offset-tablet{margin-left:calc(87.5% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--7-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--7-offset-tablet.mdl-cell--7-offset-tablet{margin-left:87.5%}}@media (min-width:840px){.mdl-grid{padding:8px}.mdl-cell{margin:8px;width:calc(33.3333333333% - 16px)}.mdl-grid--no-spacing>.mdl-cell{width:33.3333333333%}.mdl-cell--hide-desktop{display:none!important}.mdl-cell--order-1-desktop.mdl-cell--order-1-desktop{-ms-flex-order:1;order:1}.mdl-cell--order-2-desktop.mdl-cell--order-2-desktop{-ms-flex-order:2;order:2}.mdl-cell--order-3-desktop.mdl-cell--order-3-desktop{-ms-flex-order:3;order:3}.mdl-cell--order-4-desktop.mdl-cell--order-4-desktop{-ms-flex-order:4;order:4}.mdl-cell--order-5-desktop.mdl-cell--order-5-desktop{-ms-flex-order:5;order:5}.mdl-cell--order-6-desktop.mdl-cell--order-6-desktop{-ms-flex-order:6;order:6}.mdl-cell--order-7-desktop.mdl-cell--order-7-desktop{-ms-flex-order:7;order:7}.mdl-cell--order-8-desktop.mdl-cell--order-8-desktop{-ms-flex-order:8;order:8}.mdl-cell--order-9-desktop.mdl-cell--order-9-desktop{-ms-flex-order:9;order:9}.mdl-cell--order-10-desktop.mdl-cell--order-10-desktop{-ms-flex-order:10;order:10}.mdl-cell--order-11-desktop.mdl-cell--order-11-desktop{-ms-flex-order:11;order:11}.mdl-cell--order-12-desktop.mdl-cell--order-12-desktop{-ms-flex-order:12;order:12}.mdl-cell--1-col,.mdl-cell--1-col-desktop.mdl-cell--1-col-desktop{width:calc(8.3333333333% - 16px)}.mdl-grid--no-spacing>.mdl-cell--1-col,.mdl-grid--no-spacing>.mdl-cell--1-col-desktop.mdl-cell--1-col-desktop{width:8.3333333333%}.mdl-cell--2-col,.mdl-cell--2-col-desktop.mdl-cell--2-col-desktop{width:calc(16.6666666667% - 16px)}.mdl-grid--no-spacing>.mdl-cell--2-col,.mdl-grid--no-spacing>.mdl-cell--2-col-desktop.mdl-cell--2-col-desktop{width:16.6666666667%}.mdl-cell--3-col,.mdl-cell--3-col-desktop.mdl-cell--3-col-desktop{width:calc(25% - 16px)}.mdl-grid--no-spacing>.mdl-cell--3-col,.mdl-grid--no-spacing>.mdl-cell--3-col-desktop.mdl-cell--3-col-desktop{width:25%}.mdl-cell--4-col,.mdl-cell--4-col-desktop.mdl-cell--4-col-desktop{width:calc(33.3333333333% - 16px)}.mdl-grid--no-spacing>.mdl-cell--4-col,.mdl-grid--no-spacing>.mdl-cell--4-col-desktop.mdl-cell--4-col-desktop{width:33.3333333333%}.mdl-cell--5-col,.mdl-cell--5-col-desktop.mdl-cell--5-col-desktop{width:calc(41.6666666667% - 16px)}.mdl-grid--no-spacing>.mdl-cell--5-col,.mdl-grid--no-spacing>.mdl-cell--5-col-desktop.mdl-cell--5-col-desktop{width:41.6666666667%}.mdl-cell--6-col,.mdl-cell--6-col-desktop.mdl-cell--6-col-desktop{width:calc(50% - 16px)}.mdl-grid--no-spacing>.mdl-cell--6-col,.mdl-grid--no-spacing>.mdl-cell--6-col-desktop.mdl-cell--6-col-desktop{width:50%}.mdl-cell--7-col,.mdl-cell--7-col-desktop.mdl-cell--7-col-desktop{width:calc(58.3333333333% - 16px)}.mdl-grid--no-spacing>.mdl-cell--7-col,.mdl-grid--no-spacing>.mdl-cell--7-col-desktop.mdl-cell--7-col-desktop{width:58.3333333333%}.mdl-cell--8-col,.mdl-cell--8-col-desktop.mdl-cell--8-col-desktop{width:calc(66.6666666667% - 16px)}.mdl-grid--no-spacing>.mdl-cell--8-col,.mdl-grid--no-spacing>.mdl-cell--8-col-desktop.mdl-cell--8-col-desktop{width:66.6666666667%}.mdl-cell--9-col,.mdl-cell--9-col-desktop.mdl-cell--9-col-desktop{width:calc(75% - 16px)}.mdl-grid--no-spacing>.mdl-cell--9-col,.mdl-grid--no-spacing>.mdl-cell--9-col-desktop.mdl-cell--9-col-desktop{width:75%}.mdl-cell--10-col,.mdl-cell--10-col-desktop.mdl-cell--10-col-desktop{width:calc(83.3333333333% - 16px)}.mdl-grid--no-spacing>.mdl-cell--10-col,.mdl-grid--no-spacing>.mdl-cell--10-col-desktop.mdl-cell--10-col-desktop{width:83.3333333333%}.mdl-cell--11-col,.mdl-cell--11-col-desktop.mdl-cell--11-col-desktop{width:calc(91.6666666667% - 16px)}.mdl-grid--no-spacing>.mdl-cell--11-col,.mdl-grid--no-spacing>.mdl-cell--11-col-desktop.mdl-cell--11-col-desktop{width:91.6666666667%}.mdl-cell--12-col,.mdl-cell--12-col-desktop.mdl-cell--12-col-desktop{width:calc(100% - 16px)}.mdl-grid--no-spacing>.mdl-cell--12-col,.mdl-grid--no-spacing>.mdl-cell--12-col-desktop.mdl-cell--12-col-desktop{width:100%}.mdl-cell--1-offset,.mdl-cell--1-offset-desktop.mdl-cell--1-offset-desktop{margin-left:calc(8.3333333333% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--1-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--1-offset-desktop.mdl-cell--1-offset-desktop{margin-left:8.3333333333%}.mdl-cell--2-offset,.mdl-cell--2-offset-desktop.mdl-cell--2-offset-desktop{margin-left:calc(16.6666666667% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--2-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--2-offset-desktop.mdl-cell--2-offset-desktop{margin-left:16.6666666667%}.mdl-cell--3-offset,.mdl-cell--3-offset-desktop.mdl-cell--3-offset-desktop{margin-left:calc(25% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--3-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--3-offset-desktop.mdl-cell--3-offset-desktop{margin-left:25%}.mdl-cell--4-offset,.mdl-cell--4-offset-desktop.mdl-cell--4-offset-desktop{margin-left:calc(33.3333333333% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--4-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--4-offset-desktop.mdl-cell--4-offset-desktop{margin-left:33.3333333333%}.mdl-cell--5-offset,.mdl-cell--5-offset-desktop.mdl-cell--5-offset-desktop{margin-left:calc(41.6666666667% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--5-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--5-offset-desktop.mdl-cell--5-offset-desktop{margin-left:41.6666666667%}.mdl-cell--6-offset,.mdl-cell--6-offset-desktop.mdl-cell--6-offset-desktop{margin-left:calc(50% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--6-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--6-offset-desktop.mdl-cell--6-offset-desktop{margin-left:50%}.mdl-cell--7-offset,.mdl-cell--7-offset-desktop.mdl-cell--7-offset-desktop{margin-left:calc(58.3333333333% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--7-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--7-offset-desktop.mdl-cell--7-offset-desktop{margin-left:58.3333333333%}.mdl-cell--8-offset,.mdl-cell--8-offset-desktop.mdl-cell--8-offset-desktop{margin-left:calc(66.6666666667% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--8-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--8-offset-desktop.mdl-cell--8-offset-desktop{margin-left:66.6666666667%}.mdl-cell--9-offset,.mdl-cell--9-offset-desktop.mdl-cell--9-offset-desktop{margin-left:calc(75% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--9-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--9-offset-desktop.mdl-cell--9-offset-desktop{margin-left:75%}.mdl-cell--10-offset,.mdl-cell--10-offset-desktop.mdl-cell--10-offset-desktop{margin-left:calc(83.3333333333% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--10-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--10-offset-desktop.mdl-cell--10-offset-desktop{margin-left:83.3333333333%}.mdl-cell--11-offset,.mdl-cell--11-offset-desktop.mdl-cell--11-offset-desktop{margin-left:calc(91.6666666667% + 8px)}.mdl-grid.mdl-grid--no-spacing>.mdl-cell--11-offset,.mdl-grid.mdl-grid--no-spacing>.mdl-cell--11-offset-desktop.mdl-cell--11-offset-desktop{margin-left:91.6666666667%}}.styles__container___3RbZD{position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:auto;overflow-y:auto}.styles__navigation___NYjO2 .styles__active___2VGIV{background-color:#eee}.progress-styles__path___EWzvx{stroke:#3f51b5;stroke-linecap:round;transition:stroke-dashoffset 5s ease 0s}.progress-styles__trail___33CET{stroke:#d6d6d6}.progress-styles__text___2Ny4s{fill:rgba(0,0,0,.7);font-size:25px;line-height:25px;dominant-baseline:middle;text-anchor:middle}.common__truncate___1HO4G{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.feature__action___3x5M_{color:#aaa!important;cursor:pointer}.feature__yes___hSOLA{color:green}.feature__no___2MSTG{color:red}.feature__link___17O3D{color:#212121;text-decoration:none}.feature__link___17O3D small{color:#aaa;font-weight:100}.feature__link___17O3D:hover{color:#000}.feature__iconList___hHnHM{display:flex}.feature__iconListItem___2v4ND{flex:1;color:#bbb!important}.feature__iconListItem___2v4ND :hover{color:#333}.feature__iconListItemChip___3BVh2{flex:1;margin-left:5px!important}.feature__topList___lzJpE{display:flex;margin:10px}.feature__topListItem0___3my85{flex:1;flex-grow:0}.feature__topListItem___2FEEF{flex:1}.feature__topListItem2___fjd8v{flex:2}@media (max-width:960px){.feature__hideLt960___3-OB2{display:none}}.history__history___2SlHd{width:100%;border-collapse:collapse}.history__history___2SlHd code{word-wrap:break-word;white-space:pre;font-family:monospace;line-height:100%;color:#0b8c8f}.history__history___2SlHd code>.history__diff-N___AXtC3{color:green}.history__history___2SlHd code>.history__diff-D___tE-cJ{color:red}.history__history___2SlHd .history__diff-E___qtsD_,.history__history___2SlHd code>.history__diff-A___r8S1s{color:#000}.history__history___2SlHd .history__negative___2G_kU{color:red}.history__history___2SlHd .history__positive___qcMCq{color:green}.history__history___2SlHd .history__blue___2HZTE{color:blue}.history__history___2SlHd dl{padding:.5em}.history__history___2SlHd dt{float:left;clear:left;width:100px;font-weight:700}.history__history___2SlHd dd{margin:0 0 0 110px;padding:0 0 .5em}.history__history-item___MA_uO:nth-child(odd){background-color:#efefef} -/*# sourceMappingURL=bundle.css.map*/ \ No newline at end of file diff --git a/frontend/dist/bundle.css.map b/frontend/dist/bundle.css.map deleted file mode 100644 index 8aeb2003d0..0000000000 --- a/frontend/dist/bundle.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack:///src/component/styles.scss","webpack:///webpack:///src/component/feature/progress-styles.scss","webpack:///webpack:///src/component/common/common.scss","webpack:///webpack:///src/component/feature/feature.scss","webpack:///webpack:///src/component/history/history.scss"],"names":[],"mappings":"murIAAA,2BAAW,kBAAkB,MAAM,SAAS,OAAO,QAAQ,WAAW,YAAY,eAAe,CAAC,oDAAoB,qBAAqB,CCA3I,+BAAM,eAAe,qBAAqB,uCAAuC,CAAC,gCAAO,cAAc,CAAC,+BAAM,oBAAqB,eAAe,iBAAiB,yBAAyB,kBAAkB,CCA9M,0BAAU,mBAAmB,gBAAgB,sBAAsB,CCAnE,yBAAQ,qBAAsB,cAAc,CAAC,sBAAK,WAAW,CAAC,qBAAI,SAAS,CAAC,uBAAM,cAAc,oBAAoB,CAAC,6BAAY,WAAW,eAAe,CAAC,6BAAY,UAAU,CAAC,2BAAU,YAAY,CAAC,+BAAc,OAAO,oBAAqB,CAAC,sCAAsB,UAAU,CAAC,mCAAkB,OAAO,yBAA0B,CAAC,0BAAS,aAAa,WAA0B,CAAC,+BAAc,OAAO,WAAW,CAAC,8BAAa,MAAM,CAAC,+BAAc,MAAM,CAAC,yBAA0B,4BAAW,YAAY,CAAC,CCAvf,0BAAS,WAAW,wBAAwB,CAAC,+BAAc,qBAAqB,gBAAgB,sBAAsB,iBAAiB,aAAa,CAAC,wDAAsB,WAAW,CAAC,wDAAsB,SAAS,CAAC,2GAAuC,UAAW,CAAC,qDAAmB,SAAS,CAAC,qDAAmB,WAAW,CAAC,iDAAe,UAAU,CAAC,6BAAY,YAAa,CAAC,6BAAY,WAAW,WAAW,YAAY,eAAgB,CAAC,6BAAY,mBAAmB,gBAAmB,CAAC,8CAA6B,wBAAwB","file":"bundle.css","sourcesContent":[".container{position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:auto;overflow-y:auto}.navigation .active{background-color:#EEE}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///src/component/styles.scss",".path{stroke:#3f51b5;stroke-linecap:round;transition:stroke-dashoffset 5s ease 0s}.trail{stroke:#d6d6d6}.text{fill:rgba(0,0,0,0.7);font-size:25px;line-height:25px;dominant-baseline:middle;text-anchor:middle}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///src/component/feature/progress-styles.scss",".truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///src/component/common/common.scss",".action{color:#aaa !important;cursor:pointer}.yes{color:green}.no{color:red}.link{color:#212121;text-decoration:none}.link small{color:#aaa;font-weight:100}.link:hover{color:#000}.iconList{display:flex}.iconListItem{flex:1;color:#bbb !important}.iconListItem *:hover{color:#333}.iconListItemChip{flex:1;margin-left:5px !important}.topList{display:flex;margin:10px 10px 10px 10px}.topListItem0{flex:1;flex-grow:0}.topListItem{flex:1}.topListItem2{flex:2}@media (max-width: 960px){.hideLt960{display:none}}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///src/component/feature/feature.scss",".history{width:100%;border-collapse:collapse}.history code{word-wrap:break-word;white-space:pre;font-family:monospace;line-height:100%;color:#0B8C8F}.history code>.diff-N{color:green}.history code>.diff-D{color:red}.history code>.diff-A,.history .diff-E{color:black}.history .negative{color:red}.history .positive{color:green}.history .blue{color:blue}.history dl{padding:0.5em}.history dt{float:left;clear:left;width:100px;font-weight:bold}.history dd{margin:0 0 0 110px;padding:0 0 0.5em 0}.history-item:nth-child(odd){background-color:#efefef}\n\n\n\n// WEBPACK FOOTER //\n// webpack:///src/component/history/history.scss"],"sourceRoot":""} \ No newline at end of file diff --git a/frontend/dist/bundle.js b/frontend/dist/bundle.js deleted file mode 100644 index f647e91fb7..0000000000 --- a/frontend/dist/bundle.js +++ /dev/null @@ -1,306 +0,0 @@ -!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="/static/",t(0)}([function(e,t,n){n(165),e.exports=n(214)},function(e,t,n){"use strict";e.exports=n(36)},function(e,t,n){var r,o;/*! - Copyright (c) 2016 Jed Watson. - Licensed under the MIT License (MIT), see - http://jedwatson.github.io/classnames - */ -!function(){"use strict";function n(){for(var e=[],t=0;t1&&void 0!==arguments[1]&&arguments[1];return e.prototype&&e.prototype.isReactComponent?i(e,t):a(e,t)}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e){switch(e){case"feature-updated":return"autorenew";case"feature-created":return"add";case"feature-deleted":return"remove";case"feature-archived":return"archived";default:return"star"}}function a(e,t,n){return"number"!=typeof e||"number"!=typeof t||"number"!=typeof n?null:0===t?0:(C.forEach(function(r){if([e,t,n].indexOf(r)>-1)return r}),(e/t*100).toFixed(n))}Object.defineProperty(t,"__esModule",{value:!0}),t.ExternalIconLink=t.IconLink=t.TogglesLinkList=t.SwitchWithLabel=t.FormButtons=t.HeaderTitle=t.AppsLinkList=t.shorten=void 0;var s=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:50;return e&&e.length>t?e.substring(0,t)+"...":e},E=(t.AppsLinkList=function(e){var t=e.apps;return c.createElement(p,{style:{textAlign:"left"}},t.length>0&&t.map(function(e){var t=e.appName,n=e.description,r=void 0===n?"-":n,o=e.icon,i=void 0===o?"apps":o;return c.createElement(d,{twoLine:!0,key:t},c.createElement(h,{avatar:i,subtitle:b(r)},c.createElement(g,{key:t,to:"/applications/"+t},t)))}))},t.HeaderTitle=function(e){var t=e.title,n=e.actions,r=e.subtitle;return c.createElement("div",{style:{display:"flex",borderBottom:"1px solid #f1f1f1",marginBottom:"10px",padding:"16px 20px "}},c.createElement("div",{style:{flex:"2"}},c.createElement("h6",{style:{margin:0}},t),r&&c.createElement("small",null,r)),n&&c.createElement("div",{style:{flex:"1",textAlign:"right"}},n))},t.FormButtons=function(e){var t=e.submitText,n=void 0===t?"Create":t,r=e.onCancel;return c.createElement("div",null,c.createElement(m,{type:"submit",ripple:!0,raised:!0,primary:!0,icon:"add"},c.createElement(_,{name:"add"}),"   ",n)," ",c.createElement(m,{type:"cancel",ripple:!0,raised:!0,onClick:r,style:{float:"right"}},c.createElement(_,{name:"cancel"}),"    Cancel"))},t.SwitchWithLabel=function(e){var t=e.onChange,n=e.children,r=e.checked;return c.createElement("span",null,c.createElement("span",{style:{cursor:"pointer",display:"inline-block",width:"45px"}},c.createElement(y,{onChange:t,checked:r})),c.createElement("span",null,n))},t.TogglesLinkList=function(e){var t=e.toggles;return c.createElement(p,{style:{textAlign:"left"},className:l.default.truncate},t.length>0&&t.map(function(e){var t=e.name,n=e.description,r=void 0===n?"-":n,o=e.icon,i=void 0===o?"toggle":o;return c.createElement(d,{twoLine:!0,key:t},c.createElement(h,{avatar:i,subtitle:r},c.createElement(g,{key:t,to:"/features/edit/"+t},t)))}))},function(e){var t=e.icon,n=e.children,r=o(e,["icon","children"]);return c.createElement("a",s({},r,{style:{textDecoration:"none"}}),c.createElement(_,{name:t,style:{marginRight:"5px",verticalAlign:"middle"}}),c.createElement("span",{style:{textDecoration:"none",verticalAlign:"middle"}},n))});t.IconLink=E;var C=(t.ExternalIconLink=function(e){var t=e.url,n=e.children;return c.createElement(E,{icon:"queue",href:t,target:"_blank",rel:"noopener"},n)},[NaN,1/0,-(1/0)])},function(e,t){"use strict";function n(e){return function(){return e}}var r=function(){};r.thatReturns=n,r.thatReturnsFalse=n(!1),r.thatReturnsTrue=n(!0),r.thatReturnsNull=n(null),r.thatReturnsThis=function(){return this},r.thatReturnsArgument=function(e){return e},e.exports=r},function(e,t,n){!function(t,n){e.exports=n()}(this,function(){"use strict";function e(e,t){t&&(e.prototype=Object.create(t.prototype)),e.prototype.constructor=e}function t(e){return i(e)?e:I(e)}function n(e){return a(e)?e:A(e)}function r(e){return s(e)?e:M(e)}function o(e){return i(e)&&!u(e)?e:L(e)}function i(e){return!(!e||!e[ln])}function a(e){return!(!e||!e[cn])}function s(e){return!(!e||!e[fn])}function u(e){return a(e)||s(e)}function l(e){return!(!e||!e[pn])}function c(e){return e.value=!1,e}function f(e){e&&(e.value=!0)}function p(){}function d(e,t){t=t||0;for(var n=Math.max(0,e.length-t),r=new Array(n),o=0;o>>0;if(""+n!==t||4294967295===n)return NaN;t=n}return t<0?h(e)+t:t}function _(){return!0}function y(e,t,n){return(0===e||void 0!==n&&e<=-n)&&(void 0===t||void 0!==n&&t>=n)}function v(e,t){return b(e,t,0)}function g(e,t){return b(e,t,t)}function b(e,t,n){return void 0===e?n:e<0?Math.max(0,t+e):void 0===t?e:Math.min(t,e)}function E(e){this.next=e}function C(e,t,n,r){var o=0===e?t:1===e?n:[t,n];return r?r.value=o:r={value:o,done:!1},r}function T(){return{value:void 0,done:!0}}function w(e){return!!S(e)}function O(e){return e&&"function"==typeof e.next}function P(e){var t=S(e);return t&&t.call(e)}function S(e){var t=e&&(Tn&&e[Tn]||e[wn]);if("function"==typeof t)return t}function R(e){return e&&"number"==typeof e.length}function I(e){return null===e||void 0===e?U():i(e)?e.toSeq():B(e)}function A(e){return null===e||void 0===e?U().toKeyedSeq():i(e)?a(e)?e.toSeq():e.fromEntrySeq():F(e)}function M(e){return null===e||void 0===e?U():i(e)?a(e)?e.entrySeq():e.toIndexedSeq():H(e)}function L(e){return(null===e||void 0===e?U():i(e)?a(e)?e.entrySeq():e:H(e)).toSetSeq()}function N(e){this._array=e,this.size=e.length}function x(e){var t=Object.keys(e);this._object=e,this._keys=t,this.size=t.length}function k(e){this._iterable=e,this.size=e.length||e.size}function j(e){this._iterator=e,this._iteratorCache=[]}function D(e){return!(!e||!e[Pn])}function U(){return Sn||(Sn=new N([]))}function F(e){var t=Array.isArray(e)?new N(e).fromEntrySeq():O(e)?new j(e).fromEntrySeq():w(e)?new k(e).fromEntrySeq():"object"==typeof e?new x(e):void 0;if(!t)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+e);return t}function H(e){var t=q(e);if(!t)throw new TypeError("Expected Array or iterable object of values: "+e);return t}function B(e){var t=q(e)||"object"==typeof e&&new x(e);if(!t)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+e);return t}function q(e){return R(e)?new N(e):O(e)?new j(e):w(e)?new k(e):void 0}function V(e,t,n,r){var o=e._cache;if(o){for(var i=o.length-1,a=0;a<=i;a++){var s=o[n?i-a:a];if(t(s[1],r?s[0]:a,e)===!1)return a+1}return a}return e.__iterateUncached(t,n)}function G(e,t,n,r){var o=e._cache;if(o){var i=o.length-1,a=0;return new E(function(){var e=o[n?i-a:a];return a++>i?T():C(t,r?e[0]:a-1,e[1])})}return e.__iteratorUncached(t,n)}function W(e,t){return t?z(t,e,"",{"":e}):K(e)}function z(e,t,n,r){return Array.isArray(t)?e.call(r,n,M(t).map(function(n,r){return z(e,n,r,t)})):Y(t)?e.call(r,n,A(t).map(function(n,r){return z(e,n,r,t)})):t}function K(e){return Array.isArray(e)?M(e).map(K).toList():Y(e)?A(e).map(K).toMap():e}function Y(e){return e&&(e.constructor===Object||void 0===e.constructor)}function J(e,t){if(e===t||e!==e&&t!==t)return!0;if(!e||!t)return!1;if("function"==typeof e.valueOf&&"function"==typeof t.valueOf){if(e=e.valueOf(),t=t.valueOf(),e===t||e!==e&&t!==t)return!0;if(!e||!t)return!1}return!("function"!=typeof e.equals||"function"!=typeof t.equals||!e.equals(t))}function X(e,t){if(e===t)return!0;if(!i(t)||void 0!==e.size&&void 0!==t.size&&e.size!==t.size||void 0!==e.__hash&&void 0!==t.__hash&&e.__hash!==t.__hash||a(e)!==a(t)||s(e)!==s(t)||l(e)!==l(t))return!1;if(0===e.size&&0===t.size)return!0;var n=!u(e);if(l(e)){var r=e.entries();return t.every(function(e,t){var o=r.next().value;return o&&J(o[1],e)&&(n||J(o[0],t))})&&r.next().done}var o=!1;if(void 0===e.size)if(void 0===t.size)"function"==typeof e.cacheResult&&e.cacheResult();else{o=!0;var c=e;e=t,t=c}var f=!0,p=t.__iterate(function(t,r){if(n?!e.has(t):o?!J(t,e.get(r,yn)):!J(e.get(r,yn),t))return f=!1,!1});return f&&e.size===p}function Q(e,t){if(!(this instanceof Q))return new Q(e,t);if(this._value=e,this.size=void 0===t?1/0:Math.max(0,t),0===this.size){if(Rn)return Rn;Rn=this}}function $(e,t){if(!e)throw new Error(t)}function Z(e,t,n){if(!(this instanceof Z))return new Z(e,t,n);if($(0!==n,"Cannot step a Range by 0"),e=e||0,void 0===t&&(t=1/0),n=void 0===n?1:Math.abs(n),t>>1&1073741824|3221225471&e}function ie(e){if(e===!1||null===e||void 0===e)return 0;if("function"==typeof e.valueOf&&(e=e.valueOf(),e===!1||null===e||void 0===e))return 0;if(e===!0)return 1;var t=typeof e;if("number"===t){if(e!==e||e===1/0)return 0;var n=0|e;for(n!==e&&(n^=4294967295*e);e>4294967295;)e/=4294967295,n^=e;return oe(n)}if("string"===t)return e.length>Dn?ae(e):se(e);if("function"==typeof e.hashCode)return e.hashCode();if("object"===t)return ue(e);if("function"==typeof e.toString)return se(e.toString());throw new Error("Value type "+t+" cannot be hashed.")}function ae(e){var t=Hn[e];return void 0===t&&(t=se(e),Fn===Un&&(Fn=0,Hn={}),Fn++,Hn[e]=t),t}function se(e){for(var t=0,n=0;n0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}function ce(e){$(e!==1/0,"Cannot perform this action with an infinite size.")}function fe(e){return null===e||void 0===e?Ce():pe(e)&&!l(e)?e:Ce().withMutations(function(t){var r=n(e);ce(r.size),r.forEach(function(e,n){return t.set(n,e)})})}function pe(e){return!(!e||!e[Bn])}function de(e,t){this.ownerID=e,this.entries=t}function he(e,t,n){this.ownerID=e,this.bitmap=t,this.nodes=n}function me(e,t,n){this.ownerID=e,this.count=t,this.nodes=n}function _e(e,t,n){this.ownerID=e,this.keyHash=t,this.entries=n}function ye(e,t,n){this.ownerID=e,this.keyHash=t,this.entry=n}function ve(e,t,n){this._type=t,this._reverse=n,this._stack=e._root&&be(e._root)}function ge(e,t){return C(e,t[0],t[1])}function be(e,t){return{node:e,index:0,__prev:t}}function Ee(e,t,n,r){var o=Object.create(qn);return o.size=e,o._root=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function Ce(){return Vn||(Vn=Ee(0))}function Te(e,t,n){var r,o;if(e._root){var i=c(vn),a=c(gn);if(r=we(e._root,e.__ownerID,0,void 0,t,n,i,a),!a.value)return e;o=e.size+(i.value?n===yn?-1:1:0)}else{if(n===yn)return e;o=1,r=new de(e.__ownerID,[[t,n]])}return e.__ownerID?(e.size=o,e._root=r,e.__hash=void 0,e.__altered=!0,e):r?Ee(o,r):Ce()}function we(e,t,n,r,o,i,a,s){return e?e.update(t,n,r,o,i,a,s):i===yn?e:(f(s),f(a),new ye(t,r,[o,i]))}function Oe(e){return e.constructor===ye||e.constructor===_e}function Pe(e,t,n,r,o){if(e.keyHash===r)return new _e(t,r,[e.entry,o]);var i,a=(0===n?e.keyHash:e.keyHash>>>n)&_n,s=(0===n?r:r>>>n)&_n,u=a===s?[Pe(e,t,n+hn,r,o)]:(i=new ye(t,r,o),a>>=1)a[s]=1&n?t[i++]:void 0;return a[r]=o,new me(e,i+1,a)}function Ae(e,t,r){for(var o=[],a=0;a>1&1431655765,e=(858993459&e)+(e>>2&858993459),e=e+(e>>4)&252645135,e+=e>>8,e+=e>>16,127&e}function je(e,t,n,r){var o=r?e:d(e);return o[t]=n,o}function De(e,t,n,r){var o=e.length+1;if(r&&t+1===o)return e[t]=n,e;for(var i=new Array(o),a=0,s=0;s0&&oi?0:i-n,l=a-n;return l>mn&&(l=mn),function(){if(o===l)return Xn;var e=t?--l:o++;return r&&r[e]}}function o(e,r,o){var s,u=e&&e.array,l=o>i?0:i-o>>r,c=(a-o>>r)+1;return c>mn&&(c=mn),function(){for(;;){if(s){var e=s();if(e!==Xn)return e;s=null}if(l===c)return Xn;var i=t?--c:l++;s=n(u&&u[i],r-hn,o+(i<=e.size||t<0)return e.withMutations(function(e){t<0?Je(e,t).set(0,n):Je(e,0,t+1).set(t,n)});t+=e._origin;var r=e._tail,o=e._root,i=c(gn);return t>=Qe(e._capacity)?r=ze(r,e.__ownerID,0,t,n,i):o=ze(o,e.__ownerID,e._level,t,n,i),i.value?e.__ownerID?(e._root=o,e._tail=r,e.__hash=void 0,e.__altered=!0,e):Ve(e._origin,e._capacity,e._level,o,r):e}function ze(e,t,n,r,o,i){var a=r>>>n&_n,s=e&&a0){var l=e&&e.array[a],c=ze(l,t,n-hn,r,o,i);return c===l?e:(u=Ke(e,t),u.array[a]=c,u)}return s&&e.array[a]===o?e:(f(i),u=Ke(e,t),void 0===o&&a===u.array.length-1?u.array.pop():u.array[a]=o,u)}function Ke(e,t){return t&&e&&t===e.ownerID?e:new Be(e?e.array.slice():[],t)}function Ye(e,t){if(t>=Qe(e._capacity))return e._tail;if(t<1<0;)n=n.array[t>>>r&_n],r-=hn;return n}}function Je(e,t,n){void 0!==t&&(t|=0),void 0!==n&&(n|=0);var r=e.__ownerID||new p,o=e._origin,i=e._capacity,a=o+t,s=void 0===n?i:n<0?i+n:o+n;if(a===o&&s===i)return e;if(a>=s)return e.clear();for(var u=e._level,l=e._root,c=0;a+c<0;)l=new Be(l&&l.array.length?[void 0,l]:[],r),u+=hn,c+=1<=1<f?new Be([],r):h;if(h&&d>f&&ahn;y-=hn){var v=f>>>y&_n;_=_.array[v]=Ke(_.array[v],r)}_.array[f>>>hn&_n]=h}if(s=d)a-=d,s-=d,u=hn,l=null,m=m&&m.removeBefore(r,0,a);else if(a>o||d>>u&_n;if(g!==d>>>u&_n)break;g&&(c+=(1<o&&(l=l.removeBefore(r,u,a-c)),l&&da&&(a=l.size),i(u)||(l=l.map(function(e){return W(e)})),o.push(l)}return a>e.size&&(e=e.setSize(a)),Ne(e,t,o)}function Qe(e){return e>>hn<=mn&&a.size>=2*i.size?(o=a.filter(function(e,t){return void 0!==e&&s!==t}),r=o.toKeyedSeq().map(function(e){return e[0]}).flip().toMap(),e.__ownerID&&(r.__ownerID=o.__ownerID=e.__ownerID)):(r=i.remove(t),o=s===a.size-1?a.pop():a.set(s,void 0))}else if(u){if(n===a.get(s)[1])return e;r=i,o=a.set(s,[t,n])}else r=i.set(t,a.size),o=a.set(a.size,[t,n]);return e.__ownerID?(e.size=r.size,e._map=r,e._list=o,e.__hash=void 0,e):et(r,o)}function rt(e,t){this._iter=e,this._useKeys=t,this.size=e.size}function ot(e){this._iter=e,this.size=e.size}function it(e){this._iter=e,this.size=e.size}function at(e){this._iter=e,this.size=e.size}function st(e){var t=Rt(e);return t._iter=e,t.size=e.size,t.flip=function(){return e},t.reverse=function(){var t=e.reverse.apply(this);return t.flip=function(){return e.reverse()},t},t.has=function(t){return e.includes(t)},t.includes=function(t){return e.has(t)},t.cacheResult=It,t.__iterateUncached=function(t,n){var r=this;return e.__iterate(function(e,n){return t(n,e,r)!==!1},n)},t.__iteratorUncached=function(t,n){if(t===Cn){var r=e.__iterator(t,n);return new E(function(){var e=r.next();if(!e.done){var t=e.value[0];e.value[0]=e.value[1],e.value[1]=t}return e})}return e.__iterator(t===En?bn:En,n)},t}function ut(e,t,n){var r=Rt(e);return r.size=e.size,r.has=function(t){return e.has(t)},r.get=function(r,o){var i=e.get(r,yn);return i===yn?o:t.call(n,i,r,e)},r.__iterateUncached=function(r,o){var i=this;return e.__iterate(function(e,o,a){return r(t.call(n,e,o,a),o,i)!==!1},o)},r.__iteratorUncached=function(r,o){var i=e.__iterator(Cn,o);return new E(function(){var o=i.next();if(o.done)return o;var a=o.value,s=a[0];return C(r,s,t.call(n,a[1],s,e),o)})},r}function lt(e,t){var n=Rt(e);return n._iter=e,n.size=e.size,n.reverse=function(){return e},e.flip&&(n.flip=function(){var t=st(e);return t.reverse=function(){return e.flip()},t}),n.get=function(n,r){return e.get(t?n:-1-n,r)},n.has=function(n){return e.has(t?n:-1-n)},n.includes=function(t){return e.includes(t)},n.cacheResult=It,n.__iterate=function(t,n){var r=this;return e.__iterate(function(e,n){return t(e,n,r)},!n)},n.__iterator=function(t,n){return e.__iterator(t,!n)},n}function ct(e,t,n,r){var o=Rt(e);return r&&(o.has=function(r){var o=e.get(r,yn);return o!==yn&&!!t.call(n,o,r,e)},o.get=function(r,o){ -var i=e.get(r,yn);return i!==yn&&t.call(n,i,r,e)?i:o}),o.__iterateUncached=function(o,i){var a=this,s=0;return e.__iterate(function(e,i,u){if(t.call(n,e,i,u))return s++,o(e,r?i:s-1,a)},i),s},o.__iteratorUncached=function(o,i){var a=e.__iterator(Cn,i),s=0;return new E(function(){for(;;){var i=a.next();if(i.done)return i;var u=i.value,l=u[0],c=u[1];if(t.call(n,c,l,e))return C(o,r?l:s++,c,i)}})},o}function ft(e,t,n){var r=fe().asMutable();return e.__iterate(function(o,i){r.update(t.call(n,o,i,e),0,function(e){return e+1})}),r.asImmutable()}function pt(e,t,n){var r=a(e),o=(l(e)?$e():fe()).asMutable();e.__iterate(function(i,a){o.update(t.call(n,i,a,e),function(e){return e=e||[],e.push(r?[a,i]:i),e})});var i=St(e);return o.map(function(t){return wt(e,i(t))})}function dt(e,t,n,r){var o=e.size;if(void 0!==t&&(t|=0),void 0!==n&&(n===1/0?n=o:n|=0),y(t,n,o))return e;var i=v(t,o),a=g(n,o);if(i!==i||a!==a)return dt(e.toSeq().cacheResult(),t,n,r);var s,u=a-i;u===u&&(s=u<0?0:u);var l=Rt(e);return l.size=0===s?s:e.size&&s||void 0,!r&&D(e)&&s>=0&&(l.get=function(t,n){return t=m(this,t),t>=0&&ts)return T();var e=o.next();return r||t===En?e:t===bn?C(t,u-1,void 0,e):C(t,u-1,e.value[1],e)})},l}function ht(e,t,n){var r=Rt(e);return r.__iterateUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterate(r,o);var a=0;return e.__iterate(function(e,o,s){return t.call(n,e,o,s)&&++a&&r(e,o,i)}),a},r.__iteratorUncached=function(r,o){var i=this;if(o)return this.cacheResult().__iterator(r,o);var a=e.__iterator(Cn,o),s=!0;return new E(function(){if(!s)return T();var e=a.next();if(e.done)return e;var o=e.value,u=o[0],l=o[1];return t.call(n,l,u,i)?r===Cn?e:C(r,u,l,e):(s=!1,T())})},r}function mt(e,t,n,r){var o=Rt(e);return o.__iterateUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterate(o,i);var s=!0,u=0;return e.__iterate(function(e,i,l){if(!s||!(s=t.call(n,e,i,l)))return u++,o(e,r?i:u-1,a)}),u},o.__iteratorUncached=function(o,i){var a=this;if(i)return this.cacheResult().__iterator(o,i);var s=e.__iterator(Cn,i),u=!0,l=0;return new E(function(){var e,i,c;do{if(e=s.next(),e.done)return r||o===En?e:o===bn?C(o,l++,void 0,e):C(o,l++,e.value[1],e);var f=e.value;i=f[0],c=f[1],u&&(u=t.call(n,c,i,a))}while(u);return o===Cn?e:C(o,i,c,e)})},o}function _t(e,t){var r=a(e),o=[e].concat(t).map(function(e){return i(e)?r&&(e=n(e)):e=r?F(e):H(Array.isArray(e)?e:[e]),e}).filter(function(e){return 0!==e.size});if(0===o.length)return e;if(1===o.length){var u=o[0];if(u===e||r&&a(u)||s(e)&&s(u))return u}var l=new N(o);return r?l=l.toKeyedSeq():s(e)||(l=l.toSetSeq()),l=l.flatten(!0),l.size=o.reduce(function(e,t){if(void 0!==e){var n=t.size;if(void 0!==n)return e+n}},0),l}function yt(e,t,n){var r=Rt(e);return r.__iterateUncached=function(r,o){function a(e,l){var c=this;e.__iterate(function(e,o){return(!t||l0}function Tt(e,n,r){var o=Rt(e);return o.size=new N(r).map(function(e){return e.size}).min(),o.__iterate=function(e,t){for(var n,r=this.__iterator(En,t),o=0;!(n=r.next()).done&&e(n.value,o++,this)!==!1;);return o},o.__iteratorUncached=function(e,o){var i=r.map(function(e){return e=t(e),P(o?e.reverse():e)}),a=0,s=!1;return new E(function(){var t;return s||(t=i.map(function(e){return e.next()}),s=t.some(function(e){return e.done})),s?T():C(e,a++,n.apply(null,t.map(function(e){return e.value})))})},o}function wt(e,t){return D(e)?t:e.constructor(t)}function Ot(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function Pt(e){return ce(e.size),h(e)}function St(e){return a(e)?n:s(e)?r:o}function Rt(e){return Object.create((a(e)?A:s(e)?M:L).prototype)}function It(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):I.prototype.cacheResult.call(this)}function At(e,t){return e>t?1:et?-1:0}function on(e){if(e.size===1/0)return 0;var t=l(e),n=a(e),r=t?1:0,o=e.__iterate(n?t?function(e,t){r=31*r+sn(ie(e),ie(t))|0}:function(e,t){r=r+sn(ie(e),ie(t))|0}:t?function(e){r=31*r+ie(e)|0}:function(e){r=r+ie(e)|0});return an(o,r)}function an(e,t){return t=Mn(t,3432918353),t=Mn(t<<15|t>>>-15,461845907),t=Mn(t<<13|t>>>-13,5),t=(t+3864292196|0)^e,t=Mn(t^t>>>16,2246822507),t=Mn(t^t>>>13,3266489909),t=oe(t^t>>>16)}function sn(e,t){return e^t+2654435769+(e<<6)+(e>>2)|0}var un=Array.prototype.slice;e(n,t),e(r,t),e(o,t),t.isIterable=i,t.isKeyed=a,t.isIndexed=s,t.isAssociative=u,t.isOrdered=l,t.Keyed=n,t.Indexed=r,t.Set=o;var ln="@@__IMMUTABLE_ITERABLE__@@",cn="@@__IMMUTABLE_KEYED__@@",fn="@@__IMMUTABLE_INDEXED__@@",pn="@@__IMMUTABLE_ORDERED__@@",dn="delete",hn=5,mn=1<r?T():C(e,o,n[t?r-o++:o++])})},e(x,A),x.prototype.get=function(e,t){return void 0===t||this.has(e)?this._object[e]:t},x.prototype.has=function(e){return this._object.hasOwnProperty(e)},x.prototype.__iterate=function(e,t){for(var n=this._object,r=this._keys,o=r.length-1,i=0;i<=o;i++){var a=r[t?o-i:i];if(e(n[a],a,this)===!1)return i+1}return i},x.prototype.__iterator=function(e,t){var n=this._object,r=this._keys,o=r.length-1,i=0;return new E(function(){var a=r[t?o-i:i];return i++>o?T():C(e,a,n[a])})},x.prototype[pn]=!0,e(k,M),k.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);var n=this._iterable,r=P(n),o=0;if(O(r))for(var i;!(i=r.next()).done&&e(i.value,o++,this)!==!1;);return o},k.prototype.__iteratorUncached=function(e,t){if(t)return this.cacheResult().__iterator(e,t);var n=this._iterable,r=P(n);if(!O(r))return new E(T);var o=0;return new E(function(){var t=r.next();return t.done?t:C(e,o++,t.value)})},e(j,M),j.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);for(var n=this._iterator,r=this._iteratorCache,o=0;o=r.length){var t=n.next();if(t.done)return t;r[o]=t.value}return C(e,o,r[o++])})};var Sn;e(Q,M),Q.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Q.prototype.get=function(e,t){return this.has(e)?this._value:t},Q.prototype.includes=function(e){return J(this._value,e)},Q.prototype.slice=function(e,t){var n=this.size;return y(e,t,n)?this:new Q(this._value,g(t,n)-v(e,n))},Q.prototype.reverse=function(){return this},Q.prototype.indexOf=function(e){return J(this._value,e)?0:-1},Q.prototype.lastIndexOf=function(e){return J(this._value,e)?this.size:-1},Q.prototype.__iterate=function(e,t){for(var n=0;n=0&&t=0&&nn?T():C(e,i++,a)})},Z.prototype.equals=function(e){return e instanceof Z?this._start===e._start&&this._end===e._end&&this._step===e._step:X(this,e)};var In;e(ee,t),e(te,ee),e(ne,ee),e(re,ee),ee.Keyed=te,ee.Indexed=ne,ee.Set=re;var An,Mn="function"==typeof Math.imul&&Math.imul(4294967295,2)===-2?Math.imul:function(e,t){e|=0,t|=0;var n=65535&e,r=65535&t;return n*r+((e>>>16)*r+n*(t>>>16)<<16>>>0)|0},Ln=Object.isExtensible,Nn=function(){try{return Object.defineProperty({},"@",{}),!0}catch(e){return!1}}(),xn="function"==typeof WeakMap;xn&&(An=new WeakMap);var kn=0,jn="__immutablehash__";"function"==typeof Symbol&&(jn=Symbol(jn));var Dn=16,Un=255,Fn=0,Hn={};e(fe,te),fe.of=function(){var e=un.call(arguments,0);return Ce().withMutations(function(t){for(var n=0;n=e.length)throw new Error("Missing value for key: "+e[n]);t.set(e[n],e[n+1])}})},fe.prototype.toString=function(){return this.__toString("Map {","}")},fe.prototype.get=function(e,t){return this._root?this._root.get(0,void 0,e,t):t},fe.prototype.set=function(e,t){return Te(this,e,t)},fe.prototype.setIn=function(e,t){return this.updateIn(e,yn,function(){return t})},fe.prototype.remove=function(e){return Te(this,e,yn)},fe.prototype.deleteIn=function(e){return this.updateIn(e,function(){return yn})},fe.prototype.update=function(e,t,n){return 1===arguments.length?e(this):this.updateIn([e],t,n)},fe.prototype.updateIn=function(e,t,n){n||(n=t,t=void 0);var r=xe(this,Mt(e),t,n);return r===yn?void 0:r},fe.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):Ce()},fe.prototype.merge=function(){return Ae(this,void 0,arguments)},fe.prototype.mergeWith=function(e){var t=un.call(arguments,1);return Ae(this,e,t)},fe.prototype.mergeIn=function(e){var t=un.call(arguments,1);return this.updateIn(e,Ce(),function(e){return"function"==typeof e.merge?e.merge.apply(e,t):t[t.length-1]})},fe.prototype.mergeDeep=function(){return Ae(this,Me,arguments)},fe.prototype.mergeDeepWith=function(e){var t=un.call(arguments,1);return Ae(this,Le(e),t)},fe.prototype.mergeDeepIn=function(e){var t=un.call(arguments,1);return this.updateIn(e,Ce(),function(e){return"function"==typeof e.mergeDeep?e.mergeDeep.apply(e,t):t[t.length-1]})},fe.prototype.sort=function(e){return $e(bt(this,e))},fe.prototype.sortBy=function(e,t){return $e(bt(this,t,e))},fe.prototype.withMutations=function(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this.__ownerID):this},fe.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new p)},fe.prototype.asImmutable=function(){return this.__ensureOwner()},fe.prototype.wasAltered=function(){return this.__altered},fe.prototype.__iterator=function(e,t){return new ve(this,e,t)},fe.prototype.__iterate=function(e,t){var n=this,r=0;return this._root&&this._root.iterate(function(t){return r++,e(t[1],t[0],n)},t),r},fe.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Ee(this.size,this._root,e,this.__hash):(this.__ownerID=e,this.__altered=!1,this)},fe.isMap=pe;var Bn="@@__IMMUTABLE_MAP__@@",qn=fe.prototype;qn[Bn]=!0,qn[dn]=qn.remove,qn.removeIn=qn.deleteIn,de.prototype.get=function(e,t,n,r){for(var o=this.entries,i=0,a=o.length;i=Gn)return Se(e,u,r,o);var h=e&&e===this.ownerID,m=h?u:d(u);return p?s?l===c-1?m.pop():m[l]=m.pop():m[l]=[r,o]:m.push([r,o]),h?(this.entries=m,this):new de(e,m)}},he.prototype.get=function(e,t,n,r){void 0===t&&(t=ie(n));var o=1<<((0===e?t:t>>>e)&_n),i=this.bitmap;return 0===(i&o)?r:this.nodes[ke(i&o-1)].get(e+hn,t,n,r)},he.prototype.update=function(e,t,n,r,o,i,a){void 0===n&&(n=ie(r));var s=(0===t?n:n>>>t)&_n,u=1<=Wn)return Ie(e,p,l,s,h);if(c&&!h&&2===p.length&&Oe(p[1^f]))return p[1^f];if(c&&h&&1===p.length&&Oe(h))return h;var m=e&&e===this.ownerID,_=c?h?l:l^u:l|u,y=c?h?je(p,f,h,m):Ue(p,f,m):De(p,f,h,m);return m?(this.bitmap=_,this.nodes=y,this):new he(e,_,y)},me.prototype.get=function(e,t,n,r){void 0===t&&(t=ie(n));var o=(0===e?t:t>>>e)&_n,i=this.nodes[o];return i?i.get(e+hn,t,n,r):r},me.prototype.update=function(e,t,n,r,o,i,a){void 0===n&&(n=ie(r));var s=(0===t?n:n>>>t)&_n,u=o===yn,l=this.nodes,c=l[s];if(u&&!c)return this;var f=we(c,e,t+hn,n,r,o,i,a);if(f===c)return this;var p=this.count;if(c){if(!f&&(p--,p=0&&e>>t&_n;if(r>=this.array.length)return new Be([],e);var o,i=0===r;if(t>0){var a=this.array[r];if(o=a&&a.removeBefore(e,t-hn,n),o===a&&i)return this}if(i&&!o)return this;var s=Ke(this,e);if(!i)for(var u=0;u>>t&_n;if(r>=this.array.length)return this;var o;if(t>0){var i=this.array[r];if(o=i&&i.removeAfter(e,t-hn,n),o===i&&r===this.array.length-1)return this}var a=Ke(this,e);return a.array.splice(r+1),o&&(a.array[r]=o),a};var Jn,Xn={};e($e,fe),$e.of=function(){return this(arguments)},$e.prototype.toString=function(){return this.__toString("OrderedMap {","}")},$e.prototype.get=function(e,t){var n=this._map.get(e);return void 0!==n?this._list.get(n)[1]:t},$e.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._map.clear(),this._list.clear(),this):tt()},$e.prototype.set=function(e,t){return nt(this,e,t)},$e.prototype.remove=function(e){return nt(this,e,yn)},$e.prototype.wasAltered=function(){return this._map.wasAltered()||this._list.wasAltered()},$e.prototype.__iterate=function(e,t){var n=this;return this._list.__iterate(function(t){return t&&e(t[1],t[0],n)},t)},$e.prototype.__iterator=function(e,t){return this._list.fromEntrySeq().__iterator(e,t)},$e.prototype.__ensureOwner=function(e){if(e===this.__ownerID)return this;var t=this._map.__ensureOwner(e),n=this._list.__ensureOwner(e);return e?et(t,n,e,this.__hash):(this.__ownerID=e,this._map=t,this._list=n,this)},$e.isOrderedMap=Ze,$e.prototype[pn]=!0,$e.prototype[dn]=$e.prototype.remove;var Qn;e(rt,A),rt.prototype.get=function(e,t){return this._iter.get(e,t)},rt.prototype.has=function(e){return this._iter.has(e)},rt.prototype.valueSeq=function(){return this._iter.valueSeq()},rt.prototype.reverse=function(){var e=this,t=lt(this,!0);return this._useKeys||(t.valueSeq=function(){return e._iter.toSeq().reverse()}),t},rt.prototype.map=function(e,t){var n=this,r=ut(this,e,t);return this._useKeys||(r.valueSeq=function(){return n._iter.toSeq().map(e,t)}),r},rt.prototype.__iterate=function(e,t){var n,r=this;return this._iter.__iterate(this._useKeys?function(t,n){return e(t,n,r)}:(n=t?Pt(this):0,function(o){return e(o,t?--n:n++,r)}),t)},rt.prototype.__iterator=function(e,t){if(this._useKeys)return this._iter.__iterator(e,t);var n=this._iter.__iterator(En,t),r=t?Pt(this):0;return new E(function(){var o=n.next();return o.done?o:C(e,t?--r:r++,o.value,o)})},rt.prototype[pn]=!0,e(ot,M),ot.prototype.includes=function(e){return this._iter.includes(e)},ot.prototype.__iterate=function(e,t){var n=this,r=0;return this._iter.__iterate(function(t){return e(t,r++,n)},t)},ot.prototype.__iterator=function(e,t){var n=this._iter.__iterator(En,t),r=0;return new E(function(){var t=n.next();return t.done?t:C(e,r++,t.value,t)})},e(it,L),it.prototype.has=function(e){return this._iter.includes(e)},it.prototype.__iterate=function(e,t){var n=this;return this._iter.__iterate(function(t){return e(t,t,n)},t)},it.prototype.__iterator=function(e,t){var n=this._iter.__iterator(En,t);return new E(function(){var t=n.next();return t.done?t:C(e,t.value,t.value,t)})},e(at,A),at.prototype.entrySeq=function(){return this._iter.toSeq()},at.prototype.__iterate=function(e,t){var n=this;return this._iter.__iterate(function(t){if(t){Ot(t);var r=i(t);return e(r?t.get(1):t[1],r?t.get(0):t[0],n)}},t)},at.prototype.__iterator=function(e,t){var n=this._iter.__iterator(En,t);return new E(function(){for(;;){var t=n.next();if(t.done)return t;var r=t.value;if(r){Ot(r);var o=i(r);return C(e,o?r.get(0):r[0],o?r.get(1):r[1],t)}}})},ot.prototype.cacheResult=rt.prototype.cacheResult=it.prototype.cacheResult=at.prototype.cacheResult=It,e(Lt,te),Lt.prototype.toString=function(){return this.__toString(xt(this)+" {","}")},Lt.prototype.has=function(e){return this._defaultValues.hasOwnProperty(e)},Lt.prototype.get=function(e,t){if(!this.has(e))return t;var n=this._defaultValues[e];return this._map?this._map.get(e,n):n},Lt.prototype.clear=function(){if(this.__ownerID)return this._map&&this._map.clear(),this;var e=this.constructor;return e._empty||(e._empty=Nt(this,Ce()))},Lt.prototype.set=function(e,t){if(!this.has(e))throw new Error('Cannot set unknown key "'+e+'" on '+xt(this));if(this._map&&!this._map.has(e)){var n=this._defaultValues[e];if(t===n)return this}var r=this._map&&this._map.set(e,t);return this.__ownerID||r===this._map?this:Nt(this,r)},Lt.prototype.remove=function(e){if(!this.has(e))return this;var t=this._map&&this._map.remove(e);return this.__ownerID||t===this._map?this:Nt(this,t)},Lt.prototype.wasAltered=function(){return this._map.wasAltered()},Lt.prototype.__iterator=function(e,t){var r=this;return n(this._defaultValues).map(function(e,t){return r.get(t)}).__iterator(e,t)},Lt.prototype.__iterate=function(e,t){var r=this;return n(this._defaultValues).map(function(e,t){return r.get(t)}).__iterate(e,t)},Lt.prototype.__ensureOwner=function(e){if(e===this.__ownerID)return this;var t=this._map&&this._map.__ensureOwner(e);return e?Nt(this,t,e):(this.__ownerID=e,this._map=t,this)};var $n=Lt.prototype;$n[dn]=$n.remove,$n.deleteIn=$n.removeIn=qn.removeIn,$n.merge=qn.merge,$n.mergeWith=qn.mergeWith,$n.mergeIn=qn.mergeIn,$n.mergeDeep=qn.mergeDeep,$n.mergeDeepWith=qn.mergeDeepWith,$n.mergeDeepIn=qn.mergeDeepIn,$n.setIn=qn.setIn,$n.update=qn.update,$n.updateIn=qn.updateIn,$n.withMutations=qn.withMutations,$n.asMutable=qn.asMutable,$n.asImmutable=qn.asImmutable,e(Dt,re),Dt.of=function(){return this(arguments)},Dt.fromKeys=function(e){return this(n(e).keySeq())},Dt.prototype.toString=function(){return this.__toString("Set {","}")},Dt.prototype.has=function(e){return this._map.has(e)},Dt.prototype.add=function(e){return Ft(this,this._map.set(e,!0))},Dt.prototype.remove=function(e){return Ft(this,this._map.remove(e))},Dt.prototype.clear=function(){return Ft(this,this._map.clear())},Dt.prototype.union=function(){var e=un.call(arguments,0);return e=e.filter(function(e){return 0!==e.size}),0===e.length?this:0!==this.size||this.__ownerID||1!==e.length?this.withMutations(function(t){for(var n=0;n=0;n--)t={value:arguments[n],next:t};return this.__ownerID?(this.size=e,this._head=t,this.__hash=void 0,this.__altered=!0,this):Yt(e,t)},zt.prototype.pushAll=function(e){if(e=r(e),0===e.size)return this;ce(e.size);var t=this.size,n=this._head;return e.reverse().forEach(function(e){t++,n={value:e,next:n}}),this.__ownerID?(this.size=t,this._head=n,this.__hash=void 0,this.__altered=!0,this):Yt(t,n)},zt.prototype.pop=function(){return this.slice(1)},zt.prototype.unshift=function(){return this.push.apply(this,arguments)},zt.prototype.unshiftAll=function(e){return this.pushAll(e)},zt.prototype.shift=function(){return this.pop.apply(this,arguments)},zt.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Jt()},zt.prototype.slice=function(e,t){if(y(e,t,this.size))return this;var n=v(e,this.size),r=g(t,this.size);if(r!==this.size)return ne.prototype.slice.call(this,e,t);for(var o=this.size-n,i=this._head;n--;)i=i.next; -return this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):Yt(o,i)},zt.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Yt(this.size,this._head,e,this.__hash):(this.__ownerID=e,this.__altered=!1,this)},zt.prototype.__iterate=function(e,t){if(t)return this.reverse().__iterate(e);for(var n=0,r=this._head;r&&e(r.value,n++,this)!==!1;)r=r.next;return n},zt.prototype.__iterator=function(e,t){if(t)return this.reverse().__iterator(e);var n=0,r=this._head;return new E(function(){if(r){var t=r.value;return r=r.next,C(e,n++,t)}return T()})},zt.isStack=Kt;var or="@@__IMMUTABLE_STACK__@@",ir=zt.prototype;ir[or]=!0,ir.withMutations=qn.withMutations,ir.asMutable=qn.asMutable,ir.asImmutable=qn.asImmutable,ir.wasAltered=qn.wasAltered;var ar;t.Iterator=E,Xt(t,{toArray:function(){ce(this.size);var e=new Array(this.size||0);return this.valueSeq().__iterate(function(t,n){e[n]=t}),e},toIndexedSeq:function(){return new ot(this)},toJS:function(){return this.toSeq().map(function(e){return e&&"function"==typeof e.toJS?e.toJS():e}).__toJS()},toJSON:function(){return this.toSeq().map(function(e){return e&&"function"==typeof e.toJSON?e.toJSON():e}).__toJS()},toKeyedSeq:function(){return new rt(this,!0)},toMap:function(){return fe(this.toKeyedSeq())},toObject:function(){ce(this.size);var e={};return this.__iterate(function(t,n){e[n]=t}),e},toOrderedMap:function(){return $e(this.toKeyedSeq())},toOrderedSet:function(){return qt(a(this)?this.valueSeq():this)},toSet:function(){return Dt(a(this)?this.valueSeq():this)},toSetSeq:function(){return new it(this)},toSeq:function(){return s(this)?this.toIndexedSeq():a(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return zt(a(this)?this.valueSeq():this)},toList:function(){return Fe(a(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(e,t){return 0===this.size?e+t:e+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+t},concat:function(){var e=un.call(arguments,0);return wt(this,_t(this,e))},includes:function(e){return this.some(function(t){return J(t,e)})},entries:function(){return this.__iterator(Cn)},every:function(e,t){ce(this.size);var n=!0;return this.__iterate(function(r,o,i){if(!e.call(t,r,o,i))return n=!1,!1}),n},filter:function(e,t){return wt(this,ct(this,e,t,!0))},find:function(e,t,n){var r=this.findEntry(e,t);return r?r[1]:n},forEach:function(e,t){return ce(this.size),this.__iterate(t?e.bind(t):e)},join:function(e){ce(this.size),e=void 0!==e?""+e:",";var t="",n=!0;return this.__iterate(function(r){n?n=!1:t+=e,t+=null!==r&&void 0!==r?r.toString():""}),t},keys:function(){return this.__iterator(bn)},map:function(e,t){return wt(this,ut(this,e,t))},reduce:function(e,t,n){ce(this.size);var r,o;return arguments.length<2?o=!0:r=t,this.__iterate(function(t,i,a){o?(o=!1,r=t):r=e.call(n,r,t,i,a)}),r},reduceRight:function(e,t,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return wt(this,lt(this,!0))},slice:function(e,t){return wt(this,dt(this,e,t,!0))},some:function(e,t){return!this.every(Zt(e),t)},sort:function(e){return wt(this,bt(this,e))},values:function(){return this.__iterator(En)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some(function(){return!0})},count:function(e,t){return h(e?this.toSeq().filter(e,t):this)},countBy:function(e,t){return ft(this,e,t)},equals:function(e){return X(this,e)},entrySeq:function(){var e=this;if(e._cache)return new N(e._cache);var t=e.toSeq().map($t).toIndexedSeq();return t.fromEntrySeq=function(){return e.toSeq()},t},filterNot:function(e,t){return this.filter(Zt(e),t)},findEntry:function(e,t,n){var r=n;return this.__iterate(function(n,o,i){if(e.call(t,n,o,i))return r=[o,n],!1}),r},findKey:function(e,t){var n=this.findEntry(e,t);return n&&n[0]},findLast:function(e,t,n){return this.toKeyedSeq().reverse().find(e,t,n)},findLastEntry:function(e,t,n){return this.toKeyedSeq().reverse().findEntry(e,t,n)},findLastKey:function(e,t){return this.toKeyedSeq().reverse().findKey(e,t)},first:function(){return this.find(_)},flatMap:function(e,t){return wt(this,vt(this,e,t))},flatten:function(e){return wt(this,yt(this,e,!0))},fromEntrySeq:function(){return new at(this)},get:function(e,t){return this.find(function(t,n){return J(n,e)},void 0,t)},getIn:function(e,t){for(var n,r=this,o=Mt(e);!(n=o.next()).done;){var i=n.value;if(r=r&&r.get?r.get(i,yn):yn,r===yn)return t}return r},groupBy:function(e,t){return pt(this,e,t)},has:function(e){return this.get(e,yn)!==yn},hasIn:function(e){return this.getIn(e,yn)!==yn},isSubset:function(e){return e="function"==typeof e.includes?e:t(e),this.every(function(t){return e.includes(t)})},isSuperset:function(e){return e="function"==typeof e.isSubset?e:t(e),e.isSubset(this)},keyOf:function(e){return this.findKey(function(t){return J(t,e)})},keySeq:function(){return this.toSeq().map(Qt).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(e){return this.toKeyedSeq().reverse().keyOf(e)},max:function(e){return Et(this,e)},maxBy:function(e,t){return Et(this,t,e)},min:function(e){return Et(this,e?en(e):rn)},minBy:function(e,t){return Et(this,t?en(t):rn,e)},rest:function(){return this.slice(1)},skip:function(e){return this.slice(Math.max(0,e))},skipLast:function(e){return wt(this,this.toSeq().reverse().skip(e).reverse())},skipWhile:function(e,t){return wt(this,mt(this,e,t,!0))},skipUntil:function(e,t){return this.skipWhile(Zt(e),t)},sortBy:function(e,t){return wt(this,bt(this,t,e))},take:function(e){return this.slice(0,Math.max(0,e))},takeLast:function(e){return wt(this,this.toSeq().reverse().take(e).reverse())},takeWhile:function(e,t){return wt(this,ht(this,e,t))},takeUntil:function(e,t){return this.takeWhile(Zt(e),t)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=on(this))}});var sr=t.prototype;sr[ln]=!0,sr[On]=sr.values,sr.__toJS=sr.toArray,sr.__toStringMapper=tn,sr.inspect=sr.toSource=function(){return this.toString()},sr.chain=sr.flatMap,sr.contains=sr.includes,Xt(n,{flip:function(){return wt(this,st(this))},mapEntries:function(e,t){var n=this,r=0;return wt(this,this.toSeq().map(function(o,i){return e.call(t,[i,o],r++,n)}).fromEntrySeq())},mapKeys:function(e,t){var n=this;return wt(this,this.toSeq().flip().map(function(r,o){return e.call(t,r,o,n)}).flip())}});var ur=n.prototype;ur[cn]=!0,ur[On]=sr.entries,ur.__toJS=sr.toObject,ur.__toStringMapper=function(e,t){return JSON.stringify(t)+": "+tn(e)},Xt(r,{toKeyedSeq:function(){return new rt(this,!1)},filter:function(e,t){return wt(this,ct(this,e,t,!1))},findIndex:function(e,t){var n=this.findEntry(e,t);return n?n[0]:-1},indexOf:function(e){var t=this.keyOf(e);return void 0===t?-1:t},lastIndexOf:function(e){var t=this.lastKeyOf(e);return void 0===t?-1:t},reverse:function(){return wt(this,lt(this,!1))},slice:function(e,t){return wt(this,dt(this,e,t,!1))},splice:function(e,t){var n=arguments.length;if(t=Math.max(0|t,0),0===n||2===n&&!t)return this;e=v(e,e<0?this.count():this.size);var r=this.slice(0,e);return wt(this,1===n?r:r.concat(d(arguments,2),this.slice(e+t)))},findLastIndex:function(e,t){var n=this.findLastEntry(e,t);return n?n[0]:-1},first:function(){return this.get(0)},flatten:function(e){return wt(this,yt(this,e,!1))},get:function(e,t){return e=m(this,e),e<0||this.size===1/0||void 0!==this.size&&e>this.size?t:this.find(function(t,n){return n===e},void 0,t)},has:function(e){return e=m(this,e),e>=0&&(void 0!==this.size?this.size===1/0||e0?e.details[0].message:i}function r(e){return e&&e.length>0?e[0].msg:i}function o(e){return e.ok?Promise.resolve(e):e.status>399&&e.status<404?new Promise(function(t,o){e.json().then(function(t){var i=t&&t.isJoi?n(t):r(t),a=new Error(i);a.statusCode=e.status,o(a)})}):Promise.reject(new Error(i))}Object.defineProperty(t,"__esModule",{value:!0}),t.throwIfNotSuccess=o;var i="Unexptected exception when talking to unleash-api";t.headers={Accept:"application/json","Content-Type":"application/json"}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){return function(n){throw e({type:t,error:n,receivedAt:Date.now()}),n}}function i(){return function(e){return e(S()),f.default.fetchAll().then(function(t){return e(R(t))}).catch(function(t){return e(A(t))})}}function a(e){return function(t){return t(I()),f.default.create(e).then(function(){return t(T(e))}).catch(function(e){return t(P(e))})}}function s(e){return function(t){return t(M()),f.default.update(e).then(function(){return t(O(e))}).catch(o(t,C))}}function u(e){return function(t){return f.default.remove(e).then(function(){return t(w(e))}).catch(function(e){return t(P(e))})}}function l(e){return(0,p.fetchApplicationsWithStrategyName)(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.ERROR_UPDATING_STRATEGY=t.ERROR_CREATING_STRATEGY=t.ERROR_RECEIVE_STRATEGIES=t.RECEIVE_STRATEGIES=t.START_UPDATE_STRATEGY=t.START_CREATE_STRATEGY=t.REQUEST_STRATEGIES=t.REMOVE_STRATEGY=t.UPDATE_STRATEGY=t.ADD_STRATEGY=void 0,t.fetchStrategies=i,t.createStrategy=a,t.updateStrategy=s,t.removeStrategy=u,t.getApplicationsWithStrategy=l;var c=n(213),f=r(c),p=n(104),d=t.ADD_STRATEGY="ADD_STRATEGY",h=t.UPDATE_STRATEGY="UPDATE_STRATEGY",m=t.REMOVE_STRATEGY="REMOVE_STRATEGY",_=t.REQUEST_STRATEGIES="REQUEST_STRATEGIES",y=t.START_CREATE_STRATEGY="START_CREATE_STRATEGY",v=t.START_UPDATE_STRATEGY="START_UPDATE_STRATEGY",g=t.RECEIVE_STRATEGIES="RECEIVE_STRATEGIES",b=t.ERROR_RECEIVE_STRATEGIES="ERROR_RECEIVE_STRATEGIES",E=t.ERROR_CREATING_STRATEGY="ERROR_CREATING_STRATEGY",C=t.ERROR_UPDATING_STRATEGY="ERROR_UPDATING_STRATEGY",T=function(e){return{type:d,strategy:e}},w=function(e){return{type:m,strategy:e}},O=function(e){return{type:h,strategy:e}},P=function(e){return{type:E,statusCode:e}},S=function(){return{type:_}},R=function(e){return{type:g,value:e.strategies}},I=function(){return{type:y}},A=function(e){return{type:b,statusCode:e}},M=function(){return{type:v}}},function(e,t,n){"use strict";var r=n(5),o=(n(3),function(e){var t=this;if(t.instancePool.length){var n=t.instancePool.pop();return t.call(n,e),n}return new t(e)}),i=function(e,t){var n=this;if(n.instancePool.length){var r=n.instancePool.pop();return n.call(r,e,t),r}return new n(e,t)},a=function(e,t,n){var r=this;if(r.instancePool.length){var o=r.instancePool.pop();return r.call(o,e,t,n),o}return new r(e,t,n)},s=function(e,t,n,r){var o=this;if(o.instancePool.length){var i=o.instancePool.pop();return o.call(i,e,t,n,r),i}return new o(e,t,n,r)},u=function(e,t,n,r,o){var i=this;if(i.instancePool.length){var a=i.instancePool.pop();return i.call(a,e,t,n,r,o),a}return new i(e,t,n,r,o)},l=function(e){var t=this;e instanceof t?void 0:r("25"),e.destructor(),t.instancePool.length=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:"div",r=function(e){var r=e.className,a=e.children,u=o(e,["className","children"]);return s.default.createElement(n,i({className:(0,l.default)(t,r)},u),a)};return r.displayName=e,r.propTypes={className:a.PropTypes.string},r}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function i(e){for(var t="",n=[],r=[],i=void 0,a=0,s=/:([a-zA-Z_$][a-zA-Z0-9_$]*)|\*\*|\*|\(|\)/g;i=s.exec(e);)i.index!==a&&(r.push(e.slice(a,i.index)),t+=o(e.slice(a,i.index))),i[1]?(t+="([^/]+)",n.push(i[1])):"**"===i[0]?(t+="(.*)",n.push("splat")):"*"===i[0]?(t+="(.*?)",n.push("splat")):"("===i[0]?t+="(?:":")"===i[0]&&(t+=")?"),r.push(i[0]),a=s.lastIndex;return a!==e.length&&(r.push(e.slice(a,e.length)),t+=o(e.slice(a,e.length))),{pattern:e,regexpSource:t,paramNames:n,tokens:r}}function a(e){return d[e]||(d[e]=i(e)),d[e]}function s(e,t){"/"!==e.charAt(0)&&(e="/"+e);var n=a(e),r=n.regexpSource,o=n.paramNames,i=n.tokens;"/"!==e.charAt(e.length-1)&&(r+="/?"),"*"===i[i.length-1]&&(r+="$");var s=t.match(new RegExp("^"+r,"i"));if(null==s)return null;var u=s[0],l=t.substr(u.length);if(l){if("/"!==u.charAt(u.length-1))return null;l="/"+l}return{remainingPathname:l,paramNames:o,paramValues:s.slice(1).map(function(e){return e&&decodeURIComponent(e)})}}function u(e){return a(e).paramNames}function l(e,t){var n=s(e,t);if(!n)return null;var r=n.paramNames,o=n.paramValues,i={};return r.forEach(function(e,t){i[e]=o[t]}),i}function c(e,t){t=t||{};for(var n=a(e),r=n.tokens,o=0,i="",s=0,u=[],l=void 0,c=void 0,f=void 0,d=0,h=r.length;d0?void 0:(0,p.default)(!1),null!=f&&(i+=encodeURI(f));else if("("===l)u[o]="",o+=1;else if(")"===l){var m=u.pop();o-=1,o?u[o-1]+=m:i+=m}else if(":"===l.charAt(0))if(c=l.substring(1),f=t[c],null!=f||o>0?void 0:(0,p.default)(!1),null==f){if(o){u[o-1]="";for(var _=r.indexOf(l),y=r.slice(_,r.length),v=-1,g=0;g0?void 0:(0,p.default)(!1),d=_+v-1}}else o?u[o-1]+=encodeURIComponent(f):i+=encodeURIComponent(f);else o?u[o-1]+=l:i+=l;return o<=0?void 0:(0,p.default)(!1),i.replace(/\/+/g,"/")}t.__esModule=!0,t.compilePattern=a,t.matchPattern=s,t.getParamNames=u,t.getParams=l,t.formatPattern=c;var f=n(10),p=r(f),d=Object.create(null)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(t.indexOf("deprecated")!==-1){if(u[t])return;u[t]=!0}t="[react-router] "+t;for(var n=arguments.length,r=Array(n>2?n-2:0),o=2;o1){for(var _=Array(m),y=0;y1){for(var g=Array(v),b=0;b=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t should not have a "'+t+'" prop')}t.__esModule=!0,t.routes=t.route=t.components=t.component=t.history=void 0,t.falsy=r;var o=n(1),i=o.PropTypes.func,a=o.PropTypes.object,s=o.PropTypes.arrayOf,u=o.PropTypes.oneOfType,l=o.PropTypes.element,c=o.PropTypes.shape,f=o.PropTypes.string,p=(t.history=c({listen:i.isRequired,push:i.isRequired,replace:i.isRequired,go:i.isRequired,goBack:i.isRequired,goForward:i.isRequired}),t.component=u([i,f])),d=(t.components=u([p,a]),t.route=u([a,l]));t.routes=u([d,s(d)])},function(e,t,n){"use strict";function r(e,t){return"function"==typeof e?e(t):[e]}function o(e){var t=e.id,n=e.getDefault,o=e.prepare,i=void 0===o?function(e){return e}:o;return function(e,o){var a=void 0,s=!1,u=r(t,o);return e.input.hasIn(u)?a=e.input.getIn(u).toJS():(s=!0,a=n?n(e,o):{}),i({initCallRequired:s,input:a},e,o)}}function i(e){var t=e.id,n=e.prepare,o=void 0===n?function(e){return e}:n;return function(e,n){return o({clear:function(){e((0,a.createClear)({id:r(t,n)}))},init:function(o){e((0,a.createInit)({id:r(t,n),value:o}))},setValue:function(o,i){e((0,a.createSet)({id:r(t,n),key:o,value:i}))},pushToList:function(o,i){e((0,a.createPush)({id:r(t,n),key:o,value:i}))},removeFromList:function(o,i){e((0,a.createPop)({id:r(t,n),key:o,index:i}))},updateInList:function(o,i,s){var u=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e((0,a.createUp)({id:r(t,n),key:o,index:i,newValue:s,merge:u}))},incValue:function(o){e((0,a.createInc)({id:r(t,n),key:o}))}},e,n)}}Object.defineProperty(t,"__esModule",{value:!0}),t.createMapper=o,t.createActions=i;var a=n(107)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){return function(e){return u.default.fetchAll().then(function(t){return e(d(t))}).catch(function(t){return e(m(t))})}}function i(e,t,n){return function(r){return u.default.storeApplicationMetaData(e,t,n).catch(function(e){return r(m(e,f))})}}function a(e){return function(t){return u.default.fetchApplication(e).then(function(e){return t(h(e))}).catch(function(e){return t(m(e))})}}Object.defineProperty(t,"__esModule",{value:!0}),t.RECEIVE_APPLICATION=t.ERROR_UPDATING_APPLICATION_DATA=t.ERROR_RECEIVE_ALL_APPLICATIONS=t.RECEIVE_ALL_APPLICATIONS=void 0,t.fetchAll=o,t.storeApplicationMetaData=i,t.fetchApplication=a;var s=n(104),u=r(s),l=t.RECEIVE_ALL_APPLICATIONS="RECEIVE_ALL_APPLICATIONS",c=t.ERROR_RECEIVE_ALL_APPLICATIONS="ERROR_RECEIVE_ALL_APPLICATIONS",f=t.ERROR_UPDATING_APPLICATION_DATA="ERROR_UPDATING_APPLICATION_DATA",p=t.RECEIVE_APPLICATION="RECEIVE_APPLICATION",d=function(e){return{type:l,value:e}},h=function(e){return{type:p,value:e}},m=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c;return{type:t,statusCode:e}}},function(e,t){function n(e,t,n){return tn?n:e:et?t:e}e.exports=n},function(e,t){"use strict";t.__esModule=!0;t.PUSH="PUSH",t.REPLACE="REPLACE",t.POP="POP"},function(e,t){"use strict";t.__esModule=!0;t.addEventListener=function(e,t,n){return e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent("on"+t,n)},t.removeEventListener=function(e,t,n){return e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent("on"+t,n)},t.supportsHistory=function(){var e=window.navigator.userAgent;return(e.indexOf("Android 2.")===-1&&e.indexOf("Android 4.0")===-1||e.indexOf("Mobile Safari")===-1||e.indexOf("Chrome")!==-1||e.indexOf("Windows Phone")!==-1)&&(window.history&&"pushState"in window.history)},t.supportsGoWithoutReloadUsingHash=function(){return window.navigator.userAgent.indexOf("Firefox")===-1},t.supportsPopstateOnHashchange=function(){return window.navigator.userAgent.indexOf("Trident")===-1}},function(e,t,n){"use strict";function r(e){return Object.prototype.hasOwnProperty.call(e,m)||(e[m]=d++,f[e[m]]={}),f[e[m]]}var o,i=n(6),a=n(74),s=n(303),u=n(129),l=n(336),c=n(85),f={},p=!1,d=0,h={topAbort:"abort",topAnimationEnd:l("animationend")||"animationend",topAnimationIteration:l("animationiteration")||"animationiteration",topAnimationStart:l("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:l("transitionend")||"transitionend",topVolumeChange:"volumechange",topWaiting:"waiting",topWheel:"wheel"},m="_reactListenersID"+String(Math.random()).slice(2),_=i({},s,{ReactEventListener:null,injection:{injectReactEventListener:function(e){e.setHandleTopLevel(_.handleTopLevel),_.ReactEventListener=e}},setEnabled:function(e){_.ReactEventListener&&_.ReactEventListener.setEnabled(e)},isEnabled:function(){return!(!_.ReactEventListener||!_.ReactEventListener.isEnabled())},listenTo:function(e,t){for(var n=t,o=r(n),i=a.registrationNameDependencies[e],s=0;s]/;e.exports=r},function(e,t,n){"use strict";var r,o=n(12),i=n(73),a=/^[ \r\n\t\f]/,s=/<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/,u=n(81),l=u(function(e,t){if(e.namespaceURI!==i.svg||"innerHTML"in e)e.innerHTML=t;else{r=r||document.createElement("div"),r.innerHTML=""+t+"";for(var n=r.firstChild;n.firstChild;)e.appendChild(n.firstChild)}});if(o.canUseDOM){var c=document.createElement("div");c.innerHTML=" ",""===c.innerHTML&&(l=function(e,t){if(e.parentNode&&e.parentNode.replaceChild(e,e),a.test(t)||"<"===t[0]&&s.test(t)){e.innerHTML=String.fromCharCode(65279)+t;var n=e.firstChild;1===n.data.length?e.removeChild(n):n.deleteData(0,1)}else e.innerHTML=t}),c=null}e.exports=l},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=31||navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function i(e){var n=this.useColors;if(e[0]=(n?"%c":"")+this.namespace+(n?" %c":" ")+e[0]+(n?"%c ":" ")+"+"+t.humanize(this.diff),n){var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var o=0,i=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&(o++,"%c"===e&&(i=o))}),e.splice(i,0,r)}}function a(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(e){try{null==e?t.storage.removeItem("debug"):t.storage.debug=e}catch(e){}}function u(){try{return t.storage.debug}catch(e){}if("undefined"!=typeof r&&"env"in r)return{NODE_ENV:"production"}.DEBUG}function l(){try{return window.localStorage}catch(e){}}t=e.exports=n(239),t.log=a,t.formatArgs=i,t.save=s,t.load=u,t.useColors=o,t.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:l(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},t.enable(u()),window&&(window.debug=t)}).call(t,n(71))},function(e,t){e.exports={history:"history__history___2SlHd","diff-N":"history__diff-N___AXtC3","diff-D":"history__diff-D___tE-cJ","diff-A":"history__diff-A___r8S1s","diff-E":"history__diff-E___qtsD_",negative:"history__negative___2G_kU",positive:"history__positive___qcMCq",blue:"history__blue___2HZTE","history-item":"history__history-item___MA_uO"}},function(e,t){"use strict";function n(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function r(e,t){if(n(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var r=Object.keys(e),i=Object.keys(t);if(r.length!==i.length)return!1;for(var a=0;a1)for(var n=1;n-1?void 0:a("96",e),!l.plugins[n]){t.extractEvents?void 0:a("97",e),l.plugins[n]=t;var r=t.eventTypes;for(var i in r)o(r[i],t,i)?void 0:a("98",i,e)}}}function o(e,t,n){l.eventNameDispatchConfigs.hasOwnProperty(n)?a("99",n):void 0,l.eventNameDispatchConfigs[n]=e;var r=e.phasedRegistrationNames;if(r){for(var o in r)if(r.hasOwnProperty(o)){var s=r[o];i(s,t,n)}return!0}return!!e.registrationName&&(i(e.registrationName,t,n),!0)}function i(e,t,n){l.registrationNameModules[e]?a("100",e):void 0,l.registrationNameModules[e]=t,l.registrationNameDependencies[e]=t.eventTypes[n].dependencies}var a=n(5),s=(n(3),null),u={},l={plugins:[],eventNameDispatchConfigs:{},registrationNameModules:{},registrationNameDependencies:{},possibleRegistrationNames:null,injectEventPluginOrder:function(e){s?a("101"):void 0,s=Array.prototype.slice.call(e),r()},injectEventPluginsByName:function(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n];u.hasOwnProperty(n)&&u[n]===o||(u[n]?a("102",n):void 0,u[n]=o,t=!0)}t&&r()},getPluginModuleForEvent:function(e){var t=e.dispatchConfig;if(t.registrationName)return l.registrationNameModules[t.registrationName]||null;if(void 0!==t.phasedRegistrationNames){var n=t.phasedRegistrationNames;for(var r in n)if(n.hasOwnProperty(r)){var o=l.registrationNameModules[n[r]];if(o)return o}}return null},_resetEventPlugins:function(){s=null;for(var e in u)u.hasOwnProperty(e)&&delete u[e];l.plugins.length=0;var t=l.eventNameDispatchConfigs;for(var n in t)t.hasOwnProperty(n)&&delete t[n];var r=l.registrationNameModules;for(var o in r)r.hasOwnProperty(o)&&delete r[o]}};e.exports=l},function(e,t,n){"use strict";function r(e){return"topMouseUp"===e||"topTouchEnd"===e||"topTouchCancel"===e}function o(e){return"topMouseMove"===e||"topTouchMove"===e}function i(e){return"topMouseDown"===e||"topTouchStart"===e}function a(e,t,n,r){var o=e.type||"unknown-event";e.currentTarget=y.getNodeFromInstance(r),t?m.invokeGuardedCallbackWithCatch(o,n,e):m.invokeGuardedCallback(o,n,e),e.currentTarget=null}function s(e,t){var n=e._dispatchListeners,r=e._dispatchInstances;if(Array.isArray(n))for(var o=0;o0&&r.length<20?n+" (keys: "+r.join(", ")+")":n}function i(e,t){var n=s.get(e);if(!n){return null}return n}var a=n(5),s=(n(21),n(42)),u=(n(18),n(19)),l=(n(3),n(4),{isMounted:function(e){var t=s.get(e);return!!t&&!!t._renderedComponent},enqueueCallback:function(e,t,n){l.validateCallback(t,n);var o=i(e);return o?(o._pendingCallbacks?o._pendingCallbacks.push(t):o._pendingCallbacks=[t],void r(o)):null},enqueueCallbackInternal:function(e,t){e._pendingCallbacks?e._pendingCallbacks.push(t):e._pendingCallbacks=[t],r(e)},enqueueForceUpdate:function(e){var t=i(e,"forceUpdate");t&&(t._pendingForceUpdate=!0,r(t))},enqueueReplaceState:function(e,t){var n=i(e,"replaceState");n&&(n._pendingStateQueue=[t],n._pendingReplaceState=!0,r(n))},enqueueSetState:function(e,t){var n=i(e,"setState");if(n){var o=n._pendingStateQueue||(n._pendingStateQueue=[]);o.push(t),r(n)}},enqueueElementInternal:function(e,t,n){e._pendingElement=t,e._context=n,r(e)},validateCallback:function(e,t){e&&"function"!=typeof e?a("122",t,o(e)):void 0}});e.exports=l},function(e,t){"use strict";var n=function(e){return"undefined"!=typeof MSApp&&MSApp.execUnsafeLocalFunction?function(t,n,r,o){MSApp.execUnsafeLocalFunction(function(){return e(t,n,r,o)})}:e};e.exports=n},function(e,t){"use strict";function n(e){var t,n=e.keyCode;return"charCode"in e?(t=e.charCode,0===t&&13===n&&(t=13)):t=n,t>=32||13===t?t:0}e.exports=n},function(e,t){"use strict";function n(e){var t=this,n=t.nativeEvent;if(n.getModifierState)return n.getModifierState(e);var r=o[e];return!!r&&!!n[r]}function r(e){return n}var o={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};e.exports=r},function(e,t){"use strict";function n(e){var t=e.target||e.srcElement||window;return t.correspondingUseElement&&(t=t.correspondingUseElement),3===t.nodeType?t.parentNode:t}e.exports=n},function(e,t,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(e,t){if(!i.canUseDOM||t&&!("addEventListener"in document))return!1;var n="on"+e,r=n in document;if(!r){var a=document.createElement("div");a.setAttribute(n,"return;"),r="function"==typeof a[n]}return!r&&o&&"wheel"===e&&(r=document.implementation.hasFeature("Events.wheel","3.0")),r}var o,i=n(12);i.canUseDOM&&(o=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0),e.exports=r},function(e,t){"use strict";function n(e,t){var n=null===e||e===!1,r=null===t||t===!1;if(n||r)return n===r;var o=typeof e,i=typeof t;return"string"===o||"number"===o?"string"===i||"number"===i:"object"===i&&e.type===t.type&&e.key===t.key}e.exports=n},function(e,t,n){"use strict";var r=(n(6),n(16)),o=(n(4),r);e.exports=o},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var l=Object.assign||function(e){for(var t=1;t=e&&u&&(a=!0,n()))}}var i=0,a=!1,s=!1,u=!1,l=void 0;o()}function r(e,t,n){function r(e,t,r){a||(t?(a=!0,n(t)):(i[e]=r,a=++s===o,a&&n(null,i)))}var o=e.length,i=[];if(0===o)return n(null,i);var a=!1,s=0;e.forEach(function(e,n){t(e,n,function(e,t){r(n,e,t)})})}t.__esModule=!0,t.loopAsync=n,t.mapAsync=r},function(e,t,n){"use strict";function r(e){return"@@contextSubscriber/"+e}function o(e){var t,n,o=r(e),i=o+"/listeners",a=o+"/eventIndex",u=o+"/subscribe";return n={childContextTypes:(t={},t[o]=s.isRequired,t),getChildContext:function(){var e;return e={},e[o]={eventIndex:this[a],subscribe:this[u]},e},componentWillMount:function(){this[i]=[],this[a]=0},componentWillReceiveProps:function(){this[a]++},componentDidUpdate:function(){var e=this;this[i].forEach(function(t){return t(e[a])})}},n[u]=function(e){var t=this;return this[i].push(e),function(){t[i]=t[i].filter(function(t){return t!==e})}},n}function i(e){var t,n,o=r(e),i=o+"/lastRenderedEventIndex",a=o+"/handleContextUpdate",u=o+"/unsubscribe";return n={contextTypes:(t={},t[o]=s,t),getInitialState:function(){var e;return this.context[o]?(e={},e[i]=this.context[o].eventIndex,e):{}},componentDidMount:function(){this.context[o]&&(this[u]=this.context[o].subscribe(this[a]))},componentWillReceiveProps:function(){var e;this.context[o]&&this.setState((e={},e[i]=this.context[o].eventIndex,e))},componentWillUnmount:function(){this[u]&&(this[u](),this[u]=null)}},n[a]=function(e){if(e!==this.state[i]){var t;this.setState((t={},t[i]=e,t))}},n}t.__esModule=!0,t.ContextProvider=o,t.ContextSubscriber=i;var a=n(1),s=a.PropTypes.shape({subscribe:a.PropTypes.func.isRequired,eventIndex:a.PropTypes.number.isRequired})},function(e,t,n){"use strict";t.__esModule=!0,t.locationShape=t.routerShape=void 0;var r=n(1),o=r.PropTypes.func,i=r.PropTypes.object,a=r.PropTypes.shape,s=r.PropTypes.string;t.routerShape=a({push:o.isRequired,replace:o.isRequired,go:o.isRequired,goBack:o.isRequired,goForward:o.isRequired,setRouteLeaveHook:o.isRequired,isActive:o.isRequired}),t.locationShape=a({pathname:s.isRequired,search:s.isRequired,state:i,action:s.isRequired,key:s})},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=Object.assign||function(e){for(var t=1;te?-(t-e):e-t,o=n/r,i=Math.round(Math.abs(n/o)),a=Math.round(Math.abs(o));return{start:t,target:e,cyclesCounter:i,perCycleTime:a,increment:r/i}}},{key:"animateTo",value:function(e,t){var n=this;cancelAnimationFrame(this.rafCounterTimer),clearTimeout(this.nextTimer);var r=this.state.percentageText;if(t.cyclesCounter--,t.cyclesCounter<=0)return void this.setState({percentageText:t.target});var o=Math.round(r+t.increment);this.rafCounterTimer=requestAnimationFrame(function(){n.setState({percentageText:o}),n.nextTimer=setTimeout(function(){n.animateTo(o,t)},t.perCycleTime)})}},{key:"componentWillUnmount",value:function(){clearTimeout(this.initialTimeout),clearTimeout(this.nextTimer),window.cancelAnimationFrame(this.rafTimerInit),window.cancelAnimationFrame(this.rafCounterTimer)}},{key:"render",value:function(){var e=this.props.strokeWidth,t=50-e/2,n="\n M 50,50 m 0,-"+t+"\n a "+t+","+t+" 0 1 1 0,"+2*t+"\n a "+t+","+t+" 0 1 1 0,-"+2*t+"\n ",r=2*Math.PI*t,o={strokeDasharray:r+"px "+r+"px",strokeDashoffset:(100-this.state.percentage)/100*r+"px"};return l.default.createElement("svg",{viewBox:"0 0 100 100"},l.default.createElement("path",{className:f.default.trail,d:n,strokeWidth:e,fillOpacity:0}),l.default.createElement("path",{className:f.default.path,d:n,strokeWidth:e,fillOpacity:0,style:o}),l.default.createElement("text",{className:f.default.text,x:50,y:50},this.state.percentageText,"%"))}}]),t}(u.Component);p.propTypes={percentage:u.PropTypes.number.isRequired,strokeWidth:u.PropTypes.number,initialAnimation:u.PropTypes.bool,animatePercentageText:u.PropTypes.bool,textForPercentage:u.PropTypes.func},p.defaultProps={strokeWidth:8,animatePercentageText:!1,initialAnimation:!1},t.default=p},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(9),i=n(195),a=r(i),s=n(61),u=function(e){var t=e.settings.toJS().history||{};return{settings:t}},l=(0,o.connect)(u,{updateSetting:(0,s.updateSettingForGroup)("history")})(a.default);t.default=l},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){return t&&e.history.hasIn(["toggles",t])?e.history.getIn(["toggles",t]).toArray():[]}Object.defineProperty(t,"__esModule",{value:!0});var i=n(9),a=n(196),s=r(a),u=n(60),l=function(e,t){return{history:o(e,t.toggleName)}},c=(0,i.connect)(l,{fetchHistoryForToggle:u.fetchHistoryForToggle})(s.default);t.default=c},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){return Array.from(Array(e))}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;n1?t-1:0),o=1;o1?t-1:0),o=1;o1?n[o-1]:void 0,a=o>2?n[2]:void 0;for(i=e.length>3&&"function"==typeof i?(o--,i):void 0,a&&p(n[0],n[1],a)&&(i=o<3?void 0:i,o=1),t=Object(t);++r-1&&e%1==0&&e-1&&e%1==0&&e<=T}function b(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function E(e){return!!e&&"object"==typeof e}function C(e){return _(e)?i(e):s(e)}var T=9007199254740991,w="[object Arguments]",O="[object Function]",P="[object GeneratorFunction]",S=/^(?:0|[1-9]\d*)$/,R=Object.prototype,I=R.hasOwnProperty,A=R.toString,M=R.propertyIsEnumerable,L=o(Object.keys,Object),N=Math.max,x=!M.call({valueOf:1},"valueOf"),k=Array.isArray,j=c(function(e,t){if(x||d(t)||_(t))return void l(t,C(t),e);for(var n in t)I.call(t,n)&&a(e,n,t[n])});e.exports=j},function(e,t,n){var r=n(271),o=r.Symbol;e.exports=o},function(e,t){"use strict";function n(e,t){return e+t.charAt(0).toUpperCase()+t.substring(1)}var r={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridRow:!0,gridColumn:!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(r).forEach(function(e){o.forEach(function(t){r[n(t,e)]=r[e]})});var i={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}},a={isUnitlessNumber:r,shorthandPropertyExpansions:i};e.exports=a},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=n(5),i=n(28),a=(n(3),function(){function e(t){r(this,e),this._callbacks=null,this._contexts=null,this._arg=t}return e.prototype.enqueue=function(e,t){this._callbacks=this._callbacks||[],this._callbacks.push(e),this._contexts=this._contexts||[],this._contexts.push(t)},e.prototype.notifyAll=function(){var e=this._callbacks,t=this._contexts,n=this._arg;if(e&&t){e.length!==t.length?o("24"):void 0,this._callbacks=null,this._contexts=null;for(var r=0;r.":"function"==typeof t?" Instead of passing a class like Foo, pass React.createElement(Foo) or .":null!=t&&void 0!==t.props?" This may be caused by unintentionally loading two independent copies of React.":"");var a,s=_.createElement(U,{child:t});if(e){var u=C.get(e);a=u._processChildContext(u._context)}else a=S;var c=p(n);if(c){var f=c._currentElement,h=f.props.child;if(A(h,t)){var m=c._renderedComponent.getPublicInstance(),y=r&&function(){r.call(m)};return F._updateRootComponent(c,s,a,n,y),m}F.unmountComponentAtNode(n)}var v=o(n),g=v&&!!i(v),b=l(n),E=g&&!c&&!b,T=F._renderNewRootComponent(s,n,E,a)._renderedComponent.getPublicInstance();return r&&r.call(T),T},render:function(e,t,n){return F._renderSubtreeIntoContainer(null,e,t,n)},unmountComponentAtNode:function(e){c(e)?void 0:d("40");var t=p(e);if(!t){l(e),1===e.nodeType&&e.hasAttribute(L);return!1}return delete j[t._instance.rootID],P.batchedUpdates(u,t,e,!1),!0},_mountImageIntoNode:function(e,t,n,i,a){if(c(t)?void 0:d("41"),i){var s=o(t);if(T.canReuseMarkup(e,s))return void v.precacheNode(n,s);var u=s.getAttribute(T.CHECKSUM_ATTR_NAME);s.removeAttribute(T.CHECKSUM_ATTR_NAME);var l=s.outerHTML;s.setAttribute(T.CHECKSUM_ATTR_NAME,u);var f=e,p=r(f,l),m=" (client) "+f.substring(p-20,p+20)+"\n (server) "+l.substring(p-20,p+20);t.nodeType===x?d("42",m):void 0}if(t.nodeType===x?d("43"):void 0,a.useCreateElement){for(;t.lastChild;)t.removeChild(t.lastChild);h.insertTreeBefore(t,e,null)}else I(t,e),v.precacheNode(n,t.firstChild)}};e.exports=F},function(e,t,n){"use strict";var r=n(5),o=n(36),i=(n(3),{HOST:0,COMPOSITE:1,EMPTY:2,getType:function(e){return null===e||e===!1?i.EMPTY:o.isValidElement(e)?"function"==typeof e.type?i.COMPOSITE:i.HOST:void r("26",e)}});e.exports=i},function(e,t){"use strict";var n={currentScrollLeft:0,currentScrollTop:0,refreshScrollValues:function(e){n.currentScrollLeft=e.x,n.currentScrollTop=e.y}};e.exports=n},function(e,t,n){"use strict";function r(e,t){return null==t?o("30"):void 0,null==e?t:Array.isArray(e)?Array.isArray(t)?(e.push.apply(e,t),e):(e.push(t),e):Array.isArray(t)?[e].concat(t):[e,t]}var o=n(5);n(3);e.exports=r},function(e,t){"use strict";function n(e,t,n){Array.isArray(e)?e.forEach(t,n):e&&t.call(n,e)}e.exports=n},function(e,t,n){"use strict";function r(e){for(var t;(t=e._renderedNodeType)===o.COMPOSITE;)e=e._renderedComponent;return t===o.HOST?e._renderedComponent:t===o.EMPTY?null:void 0}var o=n(128);e.exports=r},function(e,t,n){"use strict";function r(){return!i&&o.canUseDOM&&(i="textContent"in document.documentElement?"textContent":"innerText"),i}var o=n(12),i=null;e.exports=r},function(e,t,n){"use strict";function r(e){if(e){var t=e.getName();if(t)return" Check the render method of `"+t+"`."}return""}function o(e){return"function"==typeof e&&"undefined"!=typeof e.prototype&&"function"==typeof e.prototype.mountComponent&&"function"==typeof e.prototype.receiveComponent}function i(e,t){var n;if(null===e||e===!1)n=l.create(i);else if("object"==typeof e){var s=e;!s||"function"!=typeof s.type&&"string"!=typeof s.type?a("130",null==s.type?s.type:typeof s.type,r(s._owner)):void 0,"string"==typeof s.type?n=c.createInternalComponent(s):o(s.type)?(n=new s.type(s),n.getHostNode||(n.getHostNode=n.getNativeNode)):n=new f(s)}else"string"==typeof e||"number"==typeof e?n=c.createInstanceForText(e):a("131",typeof e);return n._mountIndex=0,n._mountImage=null,n}var a=n(5),s=n(6),u=n(287),l=n(123),c=n(125),f=(n(334),n(3),n(4),function(e){this.construct(e)});s(f.prototype,u,{_instantiateReactComponent:i}),e.exports=i},function(e,t){"use strict";function n(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!r[e.type]:"textarea"===t}var r={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};e.exports=n},function(e,t,n){"use strict";var r=n(12),o=n(54),i=n(55),a=function(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t};r.canUseDOM&&("textContent"in document.documentElement||(a=function(e,t){return 3===e.nodeType?void(e.nodeValue=t):void i(e,o(t))})),e.exports=a},function(e,t,n){"use strict";function r(e,t){return e&&"object"==typeof e&&null!=e.key?l.escape(e.key):t.toString(36)}function o(e,t,n,i){var p=typeof e;if("undefined"!==p&&"boolean"!==p||(e=null),null===e||"string"===p||"number"===p||"object"===p&&e.$$typeof===s)return n(i,e,""===t?c+r(e,0):t),1;var d,h,m=0,_=""===t?c:t+f;if(Array.isArray(e))for(var y=0;y=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){return"string"==typeof t?u.default.createElement(p.default,{className:"mdl-list__item-"+e,name:t}):u.default.cloneElement(t,{className:"mdl-list__item-"+e})}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0)&&n(e,!r)}function a(e){return[].slice.call(e.querySelectorAll("*"),0).filter(function(e){return i(e)})}e.exports=a},function(e,t,n){"use strict";t.__esModule=!0;var r=n(1);t.default=r.PropTypes.shape({subscribe:r.PropTypes.func.isRequired,dispatch:r.PropTypes.func.isRequired,getState:r.PropTypes.func.isRequired})},function(e,t){"use strict";function n(e){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(e);try{throw new Error(e)}catch(e){}}t.__esModule=!0,t.default=n},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e){return 0===e.button}function a(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function s(e){for(var t in e)if(Object.prototype.hasOwnProperty.call(e,t))return!1;return!0}function u(e,t){return"function"==typeof e?e(t.location):e}t.__esModule=!0;var l=Object.assign||function(e){for(var t=1;t=0;r--){var o=e[r],i=o.path||"";if(n=i.replace(/\/*$/,"/")+n,0===i.indexOf("/"))break}return"/"+n}},propTypes:{path:p,from:p,to:p.isRequired,query:d,state:d,onEnter:c.falsy,children:c.falsy},render:function(){(0,s.default)(!1)}});t.default=h,e.exports=t.default},function(e,t){"use strict";function n(e,t,n){var i=o({},e,{setRouteLeaveHook:t.listenBeforeLeavingRoute,isActive:t.isActive});return r(i,n)}function r(e,t){var n=t.location,r=t.params,o=t.routes;return e.location=n,e.params=r,e.routes=o,e}t.__esModule=!0;var o=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]&&arguments[1];return e.__id__||t&&(e.__id__=E++)}function u(e){return e.map(function(e){return C[s(e)]}).filter(function(e){return e})}function f(e,n){(0,_.default)(t,e,function(t,r){if(null==r)return void n();b=a({},r,{location:e});for(var o=u((0,l.default)(g,b).leaveRoutes),i=void 0,s=0,c=o.length;null==i&&s-1?t:e}function d(e,t){t=t||{};var n=t.body;if("string"==typeof e)this.url=e;else{if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new o(e.headers)),this.method=e.method,this.mode=e.mode,n||null==e._bodyInit||(n=e._bodyInit,e.bodyUsed=!0)}if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new o(t.headers)),this.method=p(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function h(e){var t=new FormData;return e.trim().split("&").forEach(function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),o=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(o))}}),t}function m(e){var t=new o;return e.split("\r\n").forEach(function(e){var n=e.split(":"),r=n.shift().trim();if(r){var o=n.join(":").trim();t.append(r,o)}}),t}function _(e,t){t||(t={}),this.type="default",this.status="status"in t?t.status:200,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new o(t.headers),this.url=t.url||"",this._initBody(e)}if(!e.fetch){var y={searchParams:"URLSearchParams"in e,iterable:"Symbol"in e&&"iterator"in Symbol,blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e};if(y.arrayBuffer)var v=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],g=function(e){return e&&DataView.prototype.isPrototypeOf(e)},b=ArrayBuffer.isView||function(e){return e&&v.indexOf(Object.prototype.toString.call(e))>-1};o.prototype.append=function(e,r){e=t(e),r=n(r);var o=this.map[e];this.map[e]=o?o+","+r:r},o.prototype.delete=function(e){delete this.map[t(e)]},o.prototype.get=function(e){return e=t(e),this.has(e)?this.map[e]:null},o.prototype.has=function(e){return this.map.hasOwnProperty(t(e))},o.prototype.set=function(e,r){this.map[t(e)]=n(r)},o.prototype.forEach=function(e,t){for(var n in this.map)this.map.hasOwnProperty(n)&&e.call(t,this.map[n],n,this)},o.prototype.keys=function(){var e=[];return this.forEach(function(t,n){e.push(n)}),r(e)},o.prototype.values=function(){var e=[];return this.forEach(function(t){e.push(t)}),r(e)},o.prototype.entries=function(){var e=[];return this.forEach(function(t,n){e.push([n,t])}),r(e)},y.iterable&&(o.prototype[Symbol.iterator]=o.prototype.entries);var E=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];d.prototype.clone=function(){return new d(this,{body:this._bodyInit})},f.call(d.prototype),f.call(_.prototype),_.prototype.clone=function(){return new _(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new o(this.headers),url:this.url})},_.error=function(){var e=new _(null,{status:0,statusText:""});return e.type="error",e};var C=[301,302,303,307,308];_.redirect=function(e,t){if(C.indexOf(t)===-1)throw new RangeError("Invalid status code");return new _(null,{status:t,headers:{location:e}})},e.Headers=o,e.Request=d,e.Response=_,e.fetch=function(e,t){return new Promise(function(n,r){var o=new d(e,t),i=new XMLHttpRequest;i.onload=function(){var e={status:i.status,statusText:i.statusText,headers:m(i.getAllResponseHeaders()||"")};e.url="responseURL"in i?i.responseURL:e.headers.get("X-Request-URL");var t="response"in i?i.response:i.responseText;n(new _(t,e))},i.onerror=function(){r(new TypeError("Network request failed"))},i.ontimeout=function(){r(new TypeError("Network request failed"))},i.open(o.method,o.url,!0),"include"===o.credentials&&(i.withCredentials=!0),"responseType"in i&&y.blob&&(i.responseType="blob"),o.headers.forEach(function(e,t){i.setRequestHeader(t,e)}),i.send("undefined"==typeof o._bodyInit?null:o._bodyInit)})},e.fetch.polyfill=!0}}("undefined"!=typeof self?self:this)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e,t){return t?(Object.keys(t).forEach(function(n){e=e.replace(":"+n,t[n])}),e):e}Object.defineProperty(t,"__esModule",{value:!0});var u=function(){function e(e,t){for(var n=0;n0?l.default.createElement(f.DataTable,{rows:t,style:{width:"100%"}},l.default.createElement(f.TableHeader,{style:{width:"25px"},name:"reviveName",cellFormatter:function(e){return l.default.createElement(f.IconButton,{colored:!0,name:"undo",onClick:function(){return n(e)}})}},"Revive"),l.default.createElement(f.TableHeader,{style:{width:"25px"},name:"enabled",cellFormatter:function(e){return e?"Yes":"-"}},"Enabled"),l.default.createElement(f.TableHeader,{name:"name"},"Toggle name"),l.default.createElement(f.TableHeader,{numeric:!0,name:"createdAt"},"Created")):l.default.createElement("div",{style:{textAlign:"center"}},l.default.createElement(f.Icon,{name:"report",style:{color:"#aaa",fontSize:"40px"}}),l.default.createElement("br",null),"No archived feature toggles, go see ",l.default.createElement(c.Link,{to:"/features"},"active toggles here")))}}]),t}(u.Component);t.default=d},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0,n=t?this.props.errors[0]:void 0,r=function(){return e.props.muteError(n)};return l.default.createElement(c.Snackbar,{action:"Dismiss",active:t,onActionClick:r,onTimeout:r,timeout:1e4},l.default.createElement(c.Icon,{name:"question_answer"})," ",n)}}],[{key:"propTypes",value:function(){return{errors:u.PropTypes.array.isRequired,muteError:u.PropTypes.func.isRequired}}}]),t}(l.default.Component);t.default=f},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(9),i=n(173),a=r(i),s=n(106),u={muteError:s.muteError},l=function(e){return{errors:e.error.get("list").toArray()}};t.default=(0,o.connect)(l,u)(a.default)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(1),i=r(o),a=n(11),s=n(7),u=n(100),l=r(u),c=n(15),f=n(108),p=r(f),d=function(e){var t=e.feature,n=e.onFeatureClick,r=e.onFeatureRemove,o=e.settings,u=e.metricsLastHour,f=void 0===u?{yes:0,no:0,isFallback:!0}:u,d=e.metricsLastMinute,h=void 0===d?{yes:0,no:0,isFallback:!0}:d,m=t.name,_=t.description,y=t.enabled,v=t.strategies,g=o.showLastHour,b=void 0!==g&&g,E=b?f.isFallback:h.isFallback,C=1*(b?(0,c.calc)(f.yes,f.yes+f.no,0):(0,c.calc)(h.yes,h.yes+h.no,0)),T=function(){window.confirm("Are you sure you want to remove this toggle?")&&r(m)};return i.default.createElement("li",{key:m,className:"mdl-list__item"},i.default.createElement("span",{className:"mdl-list__item-primary-content"},i.default.createElement("div",{style:{width:"40px",textAlign:"center"}},E?i.default.createElement(s.Icon,{style:{width:"25px",marginTop:"4px",fontSize:"25px",color:"#ccc"},name:"report problem",title:"No metrics avaiable"}):i.default.createElement("div",null,i.default.createElement(l.default,{strokeWidth:15,percentage:C,width:"50"})))," ",i.default.createElement("span",{style:{display:"inline-block",width:"45px"},title:"Toggle "+m},i.default.createElement(s.Switch,{title:"test",key:"left-actions",onChange:function(){return n(t)},checked:y})),i.default.createElement(a.Link,{to:"/features/view/"+m,className:p.default.link},(0,c.shorten)(m,50)," ",i.default.createElement("small",{className:p.default.hideLt960},(0,c.shorten)(_,30)||""))),i.default.createElement("span",{className:p.default.iconList},v&&v.map(function(e,t){return i.default.createElement(s.Chip,{className:[p.default.iconListItemChip,p.default.hideLt960].join(" "),key:t},i.default.createElement("small",null,e.name))}),i.default.createElement(s.IconButton,{name:"delete",onClick:T,className:p.default.iconListItem})))};d.propTypes={feature:o.PropTypes.object,onFeatureClick:o.PropTypes.func,onFeatureRemove:o.PropTypes.func},t.default=d},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(e,t){var n=[],r=!0,o=!1,i=void 0;try{for(var a,s=e[Symbol.iterator]();!(r=(a=s.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(e){o=!0,i=e}finally{try{!r&&s.return&&s.return()}finally{if(o)throw i}}return n}return function(t,n){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),i=n(9),a=n(11),s=n(22),u=n(46),l=n(99),c=r(l),f="add-feature-toggle",p=(0,u.createMapper)({id:f,getDefault:function(){var e=void 0;try{var t=document.location.hash.match(/name=([a-z0-9-_]+)/i),n=o(t,2);e=n[1]}catch(e){}return{name:e}}}),d=function(e,t){return e.onSubmit=function(n){return function(r){r.preventDefault(),(0,s.createFeatureToggles)(n)(t).then(function(){return e.clear()}).then(function(){return a.hashHistory.push("/features/edit/"+n.name)})}},e.onCancel=function(t){t.preventDefault(),e.clear(),a.hashHistory.push("/features")},e.addStrategy=function(t){e.pushToList("strategies",t)},e.updateStrategy=function(t,n){e.updateInList("strategies",t,n)},e.removeStrategy=function(t){e.removeFromList("strategies",t)},e.validateName=function(t){var n=t.target.value;(0,s.validateName)(n).then(function(){return e.setValue("nameError",void 0)}).catch(function(t){return e.setValue("nameError",t.message)})},e},h=(0,u.createActions)({id:f,prepare:d});t.default=(0,i.connect)(p,h)(c.default)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e){return[f,e.featureToggle.name]}Object.defineProperty(t,"__esModule",{value:!0});var i=n(9),a=n(11),s=n(22),u=n(46),l=n(99),c=r(l),f="edit-feature-toggle",p=(0,u.createMapper)({id:o,getDefault:function(e,t){return t.featureToggle},prepare:function(e){return e.editmode=!0,e}}),d=function(e,t){return e.onSubmit=function(n){return function(r){r.preventDefault(),(0,s.requestUpdateFeatureToggle)(n)(t).then(function(){return e.clear()}).then(function(){return a.hashHistory.push("/features/view/"+n.name)})}},e.onCancel=function(t){t.preventDefault(),e.clear(),window.history.back()},e.addStrategy=function(t){e.pushToList("strategies",t)},e.removeStrategy=function(t){e.removeFromList("strategies",t)},e.updateStrategy=function(t,n){e.updateInList("strategies",t,n)},e.validateName=function(){},e},h=(0,u.createActions)({id:o,prepare:d});t.default=(0,i.connect)(p,h)(c.default)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0?n.map(function(e){var n=e.name,r=e.type,o=e.description,i=e.required,a=t.props.strategy.parameters[n];if("percentage"===r)return(null==a||"string"==typeof a&&""===a)&&(a=50),l.default.createElement("div",{key:n},l.default.createElement(d.default,{name:n,onChange:t.handleConfigChange.bind(t,n),value:1*a}),o&&l.default.createElement("p",{style:y},o));if("list"===r){var s=[];return"string"==typeof a&&(s=a.trim().split(",").filter(Boolean)),l.default.createElement("div",{key:n},l.default.createElement(m.default,{name:n,list:s,setConfig:t.setConfig}),o&&l.default.createElement("p",{style:y},o))}return"number"===r?l.default.createElement("div",{key:n},l.default.createElement(c.Textfield,{pattern:"-?[0-9]*(\\.[0-9]+)?",error:n+" is not a number!",floatingLabel:!0,required:i,style:{width:"100%"},name:n,label:n,onChange:t.handleConfigChange.bind(t,n),value:a}),o&&l.default.createElement("p",{style:y},o)):l.default.createElement("div",{key:n},l.default.createElement(c.Textfield,{floatingLabel:!0,rows:1,style:{width:"100%"},required:i,name:n,label:n,onChange:t.handleConfigChange.bind(t,n),value:a}),o&&l.default.createElement("p",{style:y},o))}):null}},{key:"render",value:function(){if(!this.props.strategyDefinition){var e=this.props.strategy.name;return l.default.createElement(c.Card,{shadow:0,style:_},l.default.createElement(c.CardTitle,null,'"',e,'" deleted?'),l.default.createElement(c.CardText,null,'The strategy "',e,'" does not exist on this server.',l.default.createElement(f.Link,{to:"/strategies/create?name="+e},"Want to create it now?")),l.default.createElement(c.CardActions,null,l.default.createElement(c.Button,{onClick:this.handleRemove,label:"remove strategy",accent:!0,raised:!0},"Remove")))}var t=this.renderInputFields(this.props.strategyDefinition),n=this.props.strategy.name;return l.default.createElement(c.Card,{shadow:0,style:_},l.default.createElement(c.CardTitle,{style:{color:"#fff",height:"65px",background:"#607d8b"}},l.default.createElement(c.Icon,{name:"extension"})," ",n),l.default.createElement(c.CardText,null,this.props.strategyDefinition.description),t&&l.default.createElement(c.CardActions,{border:!0,style:{padding:"20px"}},t),l.default.createElement(c.CardMenu,{style:{color:"#fff"}},l.default.createElement(f.Link,{title:"View strategy",to:"/strategies/view/"+n,style:{color:"#fff",display:"inline-block",verticalAlign:"bottom",marginRight:"5px"}},l.default.createElement(c.Icon,{name:"link"})),l.default.createElement(c.IconButton,{title:"Remove strategy from toggle",name:"delete",onClick:this.handleRemove})))}}],[{key:"propTypes",value:function(){return{strategy:u.PropTypes.object.isRequired,strategyDefinition:u.PropTypes.object.isRequired,updateStrategy:u.PropTypes.func.isRequired,removeStrategy:u.PropTypes.func.isRequired}}}]),t}(l.default.Component);t.default=v},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n-1||e.description.indexOf(n.filter)>-1||e.strategies.some(function(e){return e&&e.name&&e.name.indexOf(n.filter)>-1})})),n.sort&&("enabled"===n.sort?r=r.sort(function(e,t){return e.enabled===t.enabled?0:e.enabled?-1:1}):"appName"===n.sort||("created"===n.sort?r=r.sort(function(e,t){return new Date(e.createdAt)>new Date(t.createdAt)?-1:1}):"name"===n.sort?r=r.sort(function(e,t){return e.namet.name?1:0}):"strategies"===n.sort?r=r.sort(function(e,t){return e.strategies.length>t.strategies.length?-1:1}):"metrics"===n.sort&&!function(){var e=n.showLastHour?t.lastHour:t.lastMinute;r=r.sort(function(t,n){return e[t.name]?e[n.name]?e[t.name].yes>e[n.name].yes?-1:1:-1:1})}())),{features:r,featureMetrics:t,settings:n}},f={onFeatureClick:i.toggleFeature,onFeatureRemove:i.removeFeatureToggle,fetchFeatureToggles:i.fetchFeatureToggles,fetchFeatureMetrics:a.fetchFeatureMetrics,updateSetting:(0,s.updateSettingForGroup)("feature")},p=(0,o.connect)(c,f)(l.default);t.default=p},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0?l.default.createElement("div",null,l.default.createElement("strong",null,"Seen in applications:")):l.default.createElement("div",null,l.default.createElement(c.Icon,{style:{width:"100px",height:"100px",fontSize:"100px",color:"#ccc"},name:"report problem",title:"Not used in a app in the last hour"}),l.default.createElement("div",null,l.default.createElement("small",null,l.default.createElement("strong",null,"Not used in a app in the last hour."),"This might be due to your client implementation is not reporting usage."))),l.default.createElement(d.AppsLinkList,{apps:h}))))}}],[{key:"propTypes",value:function(){return{metrics:u.PropTypes.object.isRequired,featureToggle:u.PropTypes.object.isRequired,toggleFeature:u.PropTypes.func.isRequired,fetchSeenApps:u.PropTypes.func.isRequired,fetchFeatureMetrics:u.PropTypes.func.isRequired}}}]),t}(l.default.Component);t.default=h},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(t){var n={};return e.featureMetrics.hasIn(["seenApps",t])&&(n.seenApps=e.featureMetrics.getIn(["seenApps",t])),e.featureMetrics.hasIn(["lastHour",t])&&(n.lastHour=e.featureMetrics.getIn(["lastHour",t]),n.lastMinute=e.featureMetrics.getIn(["lastMinute",t])),n}}Object.defineProperty(t,"__esModule",{value:!0});var i=n(9),a=n(59),s=n(22),u=n(187),l=r(u);t.default=(0,i.connect)(function(e,t){return{metrics:o(e,t.featureToggle.name)}},{fetchFeatureMetrics:a.fetchFeatureMetrics,toggleFeature:s.toggleFeature,fetchSeenApps:a.fetchSeenApps})(l.default)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0?n.map(function(e,t){return l.default.createElement(f.ListItem,{key:t,twoLine:!0},l.default.createElement(f.ListItemContent,{icon:"extension",subtitle:e.description},l.default.createElement(c.Link,{to:"/strategies/view/"+e.name},l.default.createElement("strong",null,e.name))),l.default.createElement(f.IconButton,{name:"delete",onClick:function(){return r(e)}}))}):l.default.createElement(f.ListItem,null,"No entries")))}}]),t}(u.Component);d.contextTypes={router:l.default.PropTypes.object},t.default=d},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(9),i=n(199),a=r(i),s=n(27),u=function(e){var t=e.strategies.get("list").toArray();return{strategies:t}},l=function(e){return{removeStrategy:function(t){window.confirm("Are you sure you want to remove this strategy?")&&(0,s.removeStrategy)(t)(e)},fetchStrategies:function(){return(0,s.fetchStrategies)()(e)}}},c=(0,o.connect)(u,l)(a.default);t.default=c},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n-1});return{strategy:n,strategyName:t.strategyName,applications:r&&r.toJS(),toggles:o&&o.toJS(),activeTab:t.activeTab}},f=(0,o.connect)(c,{fetchStrategies:s.fetchStrategies,fetchApplications:u.fetchAll,fetchFeatureToggles:l.fetchFeatureToggles})(a.default);t.default=f},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:r(),t=arguments[1];switch(t.type){case i.RECEIVE_APPLICATION:return e.setIn(["apps",t.value.appName],new o.Map(t.value));case i.RECEIVE_ALL_APPLICATIONS:return e.set("list",new o.List(t.value.applications));default:return e}};t.default=a},function(e,t,n){"use strict";function r(){return new o.Map({list:new o.List})}Object.defineProperty(t,"__esModule",{value:!0});var o=n(17),i=n(105),a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r(),t=arguments[1];switch(t.type){case i.REVIVE_TOGGLE:return e.update("list",function(e){return e.remove(e.indexOf(t.value))});case i.RECEIVE_ARCHIVE:return e.set("list",new o.List(t.value));default:return e}};t.default=a},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){return function(e){return a.default.fetchAll().then(function(t){return e(u(t))}).catch(function(t){return e(l(t))})}}Object.defineProperty(t,"__esModule",{value:!0}),t.ERROR_RECEIVE_CLIENT_INSTANCES=t.RECEIVE_CLIENT_INSTANCES=void 0,t.fetchClientInstances=o;var i=n(209),a=r(i),s=t.RECEIVE_CLIENT_INSTANCES="RECEIVE_CLIENT_INSTANCES",u=(t.ERROR_RECEIVE_CLIENT_INSTANCES="ERROR_RECEIVE_CLIENT_INSTANCES",function(e){return{type:s,value:e}}),l=function(e){return{type:s,statusCode:e}}},function(e,t,n){"use strict";function r(){return(0,o.fromJS)([])}Object.defineProperty(t,"__esModule",{value:!0});var o=n(17),i=n(228),a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r(),t=arguments[1];switch(t.type){case i.RECEIVE_CLIENT_INSTANCES:return(0,o.fromJS)(t.value);default:return e}};t.default=a},function(e,t,n){"use strict";function r(){return new i.Map({list:new i.List})}function o(e,t){return l("Got error",t),e.get("list").indexOf(t)<0?e.update("list",function(e){return e.push(t)}):e}Object.defineProperty(t,"__esModule",{value:!0});var i=n(17),a=n(106),s=n(22),u=n(27),l=n(63)("unleash:error-store"),c=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r(),t=arguments[1];switch(t.type){case s.ERROR_CREATING_FEATURE_TOGGLE:case s.ERROR_REMOVE_FEATURE_TOGGLE:case s.ERROR_FETCH_FEATURE_TOGGLES:case s.ERROR_UPDATE_FEATURE_TOGGLE:case u.ERROR_UPDATING_STRATEGY:case u.ERROR_CREATING_STRATEGY:case u.ERROR_RECEIVE_STRATEGIES:return o(e,t.error.message);case a.MUTE_ERROR:return e.update("list",function(e){return e.remove(e.indexOf(t.error))});default:return e}};t.default=c},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(17),o=n(59),i=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:(0,r.fromJS)({lastHour:{},lastMinute:{},seenApps:{}}),t=arguments[1];switch(t.type){case o.RECEIVE_SEEN_APPS:return e.set("seenApps",new r.Map(t.value));case o.RECEIVE_FEATURE_METRICS:return e.withMutations(function(e){return e.set("lastHour",new r.Map(t.value.lastHour)),e.set("lastMinute",new r.Map(t.value.lastMinute)),e});default:return e}};t.default=i},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(17),o=n(22),i=n(63)("unleash:feature-store"),a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new r.List([]),t=arguments[1];switch(t.type){case o.ADD_FEATURE_TOGGLE:return i(o.ADD_FEATURE_TOGGLE,t),e.push(new r.Map(t.featureToggle));case o.REMOVE_FEATURE_TOGGLE:return i(o.REMOVE_FEATURE_TOGGLE,t),e.filter(function(e){return e.get("name")!==t.featureToggleName});case o.UPDATE_FEATURE_TOGGLE:return i(o.UPDATE_FEATURE_TOGGLE,t),e.map(function(e){return e.get("name")===t.featureToggle.name?new r.Map(t.featureToggle):e});case o.RECEIVE_FEATURE_TOGGLES:return i(o.RECEIVE_FEATURE_TOGGLES,t),new r.List(t.featureToggles.map(r.Map));default:return e}};t.default=a},function(e,t,n){"use strict";function r(){return new o.Map({list:new o.List,toggles:new o.Map})}Object.defineProperty(t,"__esModule",{value:!0});var o=n(17),i=n(60),a=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r(),t=arguments[1];switch(t.type){case i.RECEIVE_HISTORY_FOR_TOGGLE:return e.setIn(["toggles",t.value.toggleName],new o.List(t.value.events));case i.RECEIVE_HISTORY:return e.set("list",new o.List(t.value));default:return e}};t.default=a},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var o=n(98),i=n(232),a=r(i),s=n(231),u=r(s),l=n(237),c=r(l),f=n(235),p=r(f),d=n(233),h=r(d),m=n(227),_=r(m),y=n(230),v=r(y),g=n(229),b=r(g),E=n(236),C=r(E),T=n(238),w=r(T),O=n(226),P=r(O),S=(0,o.combineReducers)({features:a.default,featureMetrics:u.default,strategies:c.default,input:p.default,history:h.default,archive:_.default,error:v.default,clientInstances:b.default,settings:C.default,user:w.default,applications:P.default});t.default=S},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(){return new h.Map}function i(e,t){var n=t.id,r=t.value;return e=a(e,n),e.setIn(n,(0,h.fromJS)(r))}function a(e,t){return e.hasIn(t)?e:e.setIn(t,new h.Map({inputId:t}))}function s(e,t,n){return e.getIn(t).has(n)?e:e.setIn(t.concat([n]),new h.List)}function u(e,t){var n=t.id,r=t.key,o=t.value;return e=a(e,n),e.setIn(n.concat([r]),o)}function l(e,t){var n=t.id,r=t.key;return e=a(e,n),e.updateIn(n.concat([r]),function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return e+1})}function c(e,t){var n=t.id;return e.hasIn(n)?e.removeIn(n):e}function f(e,t){var n=t.id,r=t.key,o=t.value;return e=a(e,n),e=s(e,n,r),e.updateIn(n.concat([r]),function(e){return e.push(o)})}function p(e,t){var n=t.id,r=t.key,o=t.index,i=t.newValue,u=t.merge;return e=a(e,n),e=s(e,n,r),e.updateIn(n.concat([r]),function(e){return u&&e.has(o)?i=e.get(o).merge(new h.Map(i)):"string"!=typeof i&&(i=(0,h.fromJS)(i)),e.set(o,i)})}function d(e,t){var n=t.id,r=t.key,o=t.index;return e=a(e,n),e=s(e,n,r),e.updateIn(n.concat([r]),function(e){return e.remove(o)})}Object.defineProperty(t,"__esModule",{value:!0});var h=n(17),m=n(107),_=r(m),y=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o(),t=arguments[1];if(!t.id)return e;switch(t.type){case _.default.INIT:return i(e,t);case _.default.SET_VALUE:if(null!=_.default.key&&null!=_.default.value)throw new Error("Missing required key / value");return u(e,t);case _.default.INCREMENT_VALUE:return l(e,t);case _.default.LIST_PUSH:return f(e,t);case _.default.LIST_POP:return d(e,t);case _.default.LIST_UP:return p(e,t);case _.default.CLEAR:return c(e,t);default:return e}};t.default=y},function(e,t,n){"use strict";function r(){try{var e=JSON.parse(s.getItem(u));return e?(0,i.fromJS)(e):new i.Map}catch(e){return new i.Map}}function o(e,t){var n=e.updateIn([t.group,t.field],function(){return t.value});return s.setItem(u,JSON.stringify(n.toJSON())),n}Object.defineProperty(t,"__esModule",{value:!0});var i=n(17),a=n(61),s=window.localStorage||{},u="settings",l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r(),t=arguments[1];switch(t.type){case a.UPDATE_SETTING:return o(e,t);default:return e}};t.default=l},function(e,t,n){"use strict";function r(){return new a.Map({list:new a.List})}function o(e,t){var n=e.get("list").indexOf(t.strategy);return n!==-1?e.update("list",function(e){return e.remove(n)}):e}function i(e,t){return e.update("list",function(e){return e.map(function(e){return e.name===t.strategy.name?t.strategy:e})})}Object.defineProperty(t,"__esModule",{value:!0});var a=n(17),s=n(27),u=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:r(),t=arguments[1];switch(t.type){case s.RECEIVE_STRATEGIES:return e.set("list",new a.List(t.value));case s.REMOVE_STRATEGY:return o(e,t);case s.ADD_STRATEGY:return e.update("list",function(e){return e.push(t.strategy)});case s.UPDATE_STRATEGY:return i(e,t);default:return e}};t.default=u},function(e,t,n){"use strict";function r(){for(var e=c+"=",t=document.cookie.split(";"),n=0;n0&&void 0!==arguments[0]?arguments[0]:i(),t=arguments[1];switch(t.type){case l.USER_UPDATE_USERNAME:return a(e,t);case l.USER_SAVE:return s(e);case l.USER_EDIT:return e.set("showDialog",!0);default:return e}};t.default=f},function(e,t,n){function r(e){var n,r=0;for(n in e)r=(r<<5)-r+e.charCodeAt(n),r|=0;return t.colors[Math.abs(r)%t.colors.length]}function o(e){function n(){if(n.enabled){var e=n,r=+new Date,o=r-(l||r);e.diff=o,e.prev=l,e.curr=r,l=r;for(var i=new Array(arguments.length),a=0;a-1?r:(r.push(e),t.className=r.join(" "),r)}},r.prototype.remove=function(e){var t=this.el;if(t&&""!==t.className){var r=t.className.split(" "),o=n(r,e);return o>-1&&r.splice(o,1),t.className=r.join(" "),r}},r.prototype.has=function(e){var t=this.el;if(t){var r=t.className.split(" ");return n(r,e)>-1}},r.prototype.toggle=function(e){var t=this.el;t&&(this.has(e)?this.remove(e):this.add(e))}},function(e,t,n){var r;/*! - Copyright (c) 2015 Jed Watson. - Based on code that is Copyright 2013-2015, Facebook, Inc. - All rights reserved. - */ -!function(){"use strict";var o=!("undefined"==typeof window||!window.document||!window.document.createElement),i={canUseDOM:o,canUseWorkers:"undefined"!=typeof Worker,canUseEventListeners:o&&!(!window.addEventListener&&!window.attachEvent),canUseViewport:o&&!!window.screen};r=function(){return i}.call(t,n,t,e),!(void 0!==r&&(e.exports=r))}()},function(e,t){},function(e,t){e.exports={truncate:"common__truncate___1HO4G"}},function(e,t){e.exports={path:"progress-styles__path___EWzvx",trail:"progress-styles__trail___33CET",text:"progress-styles__text___2Ny4s"}},function(e,t){e.exports={container:"styles__container___3RbZD",navigation:"styles__navigation___NYjO2",active:"styles__active___2VGIV"}},function(e,t){"use strict";function n(e){return e.replace(r,function(e,t){return t.toUpperCase()})}var r=/-(.)/g;e.exports=n},function(e,t,n){"use strict";function r(e){return o(e.replace(i,"ms-"))}var o=n(246),i=/^-ms-/;e.exports=r},function(e,t,n){"use strict";function r(e,t){return!(!e||!t)&&(e===t||!o(e)&&(o(t)?r(e,t.parentNode):"contains"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}var o=n(256);e.exports=r},function(e,t,n){"use strict";function r(e){var t=e.length;if(Array.isArray(e)||"object"!=typeof e&&"function"!=typeof e?a(!1):void 0,"number"!=typeof t?a(!1):void 0,0===t||t-1 in e?void 0:a(!1),"function"==typeof e.callee?a(!1):void 0,e.hasOwnProperty)try{return Array.prototype.slice.call(e)}catch(e){}for(var n=Array(t),r=0;r":a.innerHTML="<"+e+">",s[e]=!a.firstChild),s[e]?p[e]:null}var o=n(12),i=n(3),a=o.canUseDOM?document.createElement("div"):null,s={},u=[1,'"],l=[1,"","
"],c=[3,"","
"],f=[1,'',""],p={"*":[1,"?
","
"],area:[1,"",""],col:[2,"","
"],legend:[1,"
","
"],param:[1,"",""],tr:[2,"","
"],optgroup:u,option:u,caption:l,colgroup:l,tbody:l,tfoot:l,thead:l,td:c,th:c},d=["circle","clipPath","defs","ellipse","g","image","line","linearGradient","mask","path","pattern","polygon","polyline","radialGradient","rect","stop","text","tspan"];d.forEach(function(e){p[e]=f,s[e]=!0}),e.exports=r},function(e,t){"use strict";function n(e){return e===window?{x:window.pageXOffset||document.documentElement.scrollLeft,y:window.pageYOffset||document.documentElement.scrollTop}:{x:e.scrollLeft,y:e.scrollTop}}e.exports=n},function(e,t){"use strict";function n(e){return e.replace(r,"-$1").toLowerCase()}var r=/([A-Z])/g;e.exports=n},function(e,t,n){"use strict";function r(e){return o(e).replace(i,"-ms-")}var o=n(253),i=/^ms-/;e.exports=r},function(e,t){"use strict";function n(e){return!(!e||!("function"==typeof Node?e instanceof Node:"object"==typeof e&&"number"==typeof e.nodeType&&"string"==typeof e.nodeName))}e.exports=n},function(e,t,n){"use strict";function r(e){return o(e)&&3==e.nodeType}var o=n(255);e.exports=r},function(e,t){"use strict";function n(e){var t={};return function(n){return t.hasOwnProperty(n)||(t[n]=e.call(this,n)),t[n]}}e.exports=n},function(e,t){"use strict";t.__esModule=!0;t.loopAsync=function(e,t,n){var r=0,o=!1,i=!1,a=!1,s=void 0,u=function(){for(var e=arguments.length,t=Array(e),r=0;r=e&&a&&(o=!0,n()))}};l()}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0,t.replaceLocation=t.pushLocation=t.startListener=t.getCurrentLocation=t.go=t.getUserConfirmation=void 0;var o=n(66);Object.defineProperty(t,"getUserConfirmation",{enumerable:!0,get:function(){return o.getUserConfirmation}}),Object.defineProperty(t,"go",{enumerable:!0,get:function(){return o.go}});var i=n(25),a=(r(i),n(29)),s=n(50),u=n(112),l=n(23),c="hashchange",f=function(){var e=window.location.href,t=e.indexOf("#");return t===-1?"":e.substring(t+1)},p=function(e){return window.location.hash=e},d=function(e){var t=window.location.href.indexOf("#");window.location.replace(window.location.href.slice(0,t>=0?t:0)+"#"+e)},h=t.getCurrentLocation=function(e,t){var n=e.decodePath(f()),r=(0,l.getQueryStringValueFromPath)(n,t),o=void 0;r&&(n=(0,l.stripQueryStringValueFromPath)(n,t),o=(0,u.readState)(r));var i=(0,l.parsePath)(n);return i.state=o,(0,a.createLocation)(i,void 0,r)},m=void 0,_=(t.startListener=function(e,t,n){var r=function(){var r=f(),o=t.encodePath(r);if(r!==o)d(o);else{var i=h(t,n);if(m&&i.key&&m.key===i.key)return;m=i,e(i)}},o=f(),i=t.encodePath(o);return o!==i&&d(i),(0,s.addEventListener)(window,c,r),function(){return(0,s.removeEventListener)(window,c,r)}},function(e,t,n,r){var o=e.state,i=e.key,a=t.encodePath((0,l.createPath)(e));void 0!==o&&(a=(0,l.addQueryStringValueToPath)(a,n,i),(0,u.saveState)(i,o)),m=e,r(a)});t.pushLocation=function(e,t,n){return _(e,t,n,function(e){f()!==e&&p(e)})},t.replaceLocation=function(e,t,n){return _(e,t,n,function(e){f()!==e&&d(e)})}},function(e,t,n){"use strict";t.__esModule=!0,t.replaceLocation=t.pushLocation=t.getCurrentLocation=t.go=t.getUserConfirmation=void 0;var r=n(66);Object.defineProperty(t,"getUserConfirmation",{enumerable:!0,get:function(){return r.getUserConfirmation}}),Object.defineProperty(t,"go",{enumerable:!0,get:function(){return r.go}});var o=n(29),i=n(23);t.getCurrentLocation=function(){return(0,o.createLocation)(window.location)},t.pushLocation=function(e){return window.location.href=(0,i.createPath)(e),!1},t.replaceLocation=function(e){return window.location.replace((0,i.createPath)(e)),!1}},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function o(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var i=Object.assign||function(e){for(var t=1;t=0&&t=0&&_-1}function C(e,t){var n=this.__data__,r=F(n,e);return r<0?n.push([e,t]):n[r][1]=t,this}function T(e){var t=-1,n=e?e.length:0;for(this.clear();++tu))return!1;var c=a.get(e);if(c&&a.get(t))return c==t;var f=-1,p=!0,d=i&he?new I:void 0;for(a.set(e,t),a.set(t,e);++f-1&&e%1==0&&e-1&&e%1==0&&e<=_e}function le(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function ce(e){return!!e&&"object"==typeof e}function fe(e){return oe(e)?U(e):W(e)}var pe=200,de="__lodash_hash_undefined__",he=1,me=2,_e=9007199254740991,ye="[object Arguments]",ve="[object Array]",ge="[object Boolean]",be="[object Date]",Ee="[object Error]",Ce="[object Function]",Te="[object GeneratorFunction]",we="[object Map]",Oe="[object Number]",Pe="[object Object]",Se="[object Promise]",Re="[object RegExp]",Ie="[object Set]",Ae="[object String]",Me="[object Symbol]",Le="[object WeakMap]",Ne="[object ArrayBuffer]",xe="[object DataView]",ke="[object Float32Array]",je="[object Float64Array]",De="[object Int8Array]",Ue="[object Int16Array]",Fe="[object Int32Array]",He="[object Uint8Array]",Be="[object Uint8ClampedArray]",qe="[object Uint16Array]",Ve="[object Uint32Array]",Ge=/[\\^$.*+?()[\]{}|]/g,We=/^\[object .+?Constructor\]$/,ze=/^(?:0|[1-9]\d*)$/,Ke={};Ke[ke]=Ke[je]=Ke[De]=Ke[Ue]=Ke[Fe]=Ke[He]=Ke[Be]=Ke[qe]=Ke[Ve]=!0,Ke[ye]=Ke[ve]=Ke[Ne]=Ke[ge]=Ke[xe]=Ke[be]=Ke[Ee]=Ke[Ce]=Ke[we]=Ke[Oe]=Ke[Pe]=Ke[Re]=Ke[Ie]=Ke[Ae]=Ke[Le]=!1;var Ye="object"==typeof e&&e&&e.Object===Object&&e,Je="object"==typeof self&&self&&self.Object===Object&&self,Xe=Ye||Je||Function("return this")(),Qe="object"==typeof t&&t&&!t.nodeType&&t,$e=Qe&&"object"==typeof n&&n&&!n.nodeType&&n,Ze=$e&&$e.exports===Qe,et=Ze&&Ye.process,tt=function(){try{return et&&et.binding("util")}catch(e){}}(),nt=tt&&tt.isTypedArray,rt=Array.prototype,ot=Function.prototype,it=Object.prototype,at=Xe["__core-js_shared__"],st=function(){var e=/[^.]+$/.exec(at&&at.keys&&at.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),ut=ot.toString,lt=it.hasOwnProperty,ct=it.toString,ft=RegExp("^"+ut.call(lt).replace(Ge,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),pt=Xe.Symbol,dt=Xe.Uint8Array,ht=it.propertyIsEnumerable,mt=rt.splice,_t=l(Object.keys,Object),yt=X(Xe,"DataView"),vt=X(Xe,"Map"),gt=X(Xe,"Promise"),bt=X(Xe,"Set"),Et=X(Xe,"WeakMap"),Ct=X(Object,"create"),Tt=te(yt),wt=te(vt),Ot=te(gt),Pt=te(bt),St=te(Et),Rt=pt?pt.prototype:void 0,It=Rt?Rt.valueOf:void 0;f.prototype.clear=p,f.prototype.delete=d,f.prototype.get=h,f.prototype.has=m,f.prototype.set=_,y.prototype.clear=v,y.prototype.delete=g,y.prototype.get=b,y.prototype.has=E,y.prototype.set=C,T.prototype.clear=w,T.prototype.delete=O,T.prototype.get=P,T.prototype.has=S,T.prototype.set=R,I.prototype.add=I.prototype.push=A,I.prototype.has=M,L.prototype.clear=N,L.prototype.delete=x,L.prototype.get=k,L.prototype.has=j,L.prototype.set=D;var At=H;(yt&&At(new yt(new ArrayBuffer(1)))!=xe||vt&&At(new vt)!=we||gt&&At(gt.resolve())!=Se||bt&&At(new bt)!=Ie||Et&&At(new Et)!=Le)&&(At=function(e){var t=ct.call(e),n=t==Pe?e.constructor:void 0,r=n?te(n):void 0;if(r)switch(r){case Tt:return xe;case wt:return we;case Ot:return Se;case Pt:return Ie;case St:return Le}return t});var Mt=Array.isArray,Lt=nt?i(nt):G;n.exports=ae}).call(t,function(){return this}(),n(164)(e))},function(e,t,n){function r(e){return null==e?void 0===e?u:s:(e=Object(e),l&&l in e?i(e):a(e))}var o=n(117),i=n(268),a=n(269),s="[object Null]",u="[object Undefined]",l=o?o.toStringTag:void 0;e.exports=r},function(e,t){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(t,function(){return this}())},function(e,t,n){var r=n(270),o=r(Object.getPrototypeOf,Object);e.exports=o},function(e,t,n){function r(e){var t=a.call(e,u),n=e[u];try{e[u]=void 0;var r=!0}catch(e){}var o=s.call(e);return r&&(t?e[u]=n:delete e[u]),o}var o=n(117),i=Object.prototype,a=i.hasOwnProperty,s=i.toString,u=o?o.toStringTag:void 0;e.exports=r},function(e,t){function n(e){return o.call(e)}var r=Object.prototype,o=r.toString;e.exports=n},function(e,t){function n(e,t){return function(n){return e(t(n))}}e.exports=n},function(e,t,n){var r=n(266),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t){function n(e){return null!=e&&"object"==typeof e}e.exports=n},function(e,t){function n(e){if(e=String(e),!(e.length>1e4)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]),r=(t[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*c;case"days":case"day":case"d":return n*l;case"hours":case"hour":case"hrs":case"hr":case"h":return n*u;case"minutes":case"minute":case"mins":case"min":case"m":return n*s;case"seconds":case"second":case"secs":case"sec":case"s":return n*a;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function r(e){return e>=l?Math.round(e/l)+"d":e>=u?Math.round(e/u)+"h":e>=s?Math.round(e/s)+"m":e>=a?Math.round(e/a)+"s":e+"ms"}function o(e){return i(e,l,"day")||i(e,u,"hour")||i(e,s,"minute")||i(e,a,"second")||e+" ms"}function i(e,t,n){if(!(e0)return n(e);if("number"===i&&isNaN(e)===!1)return t.long?o(e):r(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,t,n){"use strict";function r(e,t){return t.encode?t.strict?o(e):encodeURIComponent(e):e}var o=n(426),i=n(6);t.extract=function(e){return e.split("?")[1]||""},t.parse=function(e){var t=Object.create(null);return"string"!=typeof e?t:(e=e.trim().replace(/^(\?|#|&)/,""))?(e.split("&").forEach(function(e){var n=e.replace(/\+/g," ").split("="),r=n.shift(),o=n.length>0?n.join("="):void 0;r=decodeURIComponent(r),o=void 0===o?null:decodeURIComponent(o),void 0===t[r]?t[r]=o:Array.isArray(t[r])?t[r].push(o):t[r]=[t[r],o]}),t):t},t.stringify=function(e,t){var n={encode:!0,strict:!0};return t=i(n,t),e?Object.keys(e).sort().map(function(n){var o=e[n];if(void 0===o)return"";if(null===o)return r(n,t);if(Array.isArray(o)){var i=[];return o.slice().forEach(function(e){void 0!==e&&(null===e?i.push(r(n,t)):i.push(r(n,t)+"="+r(e,t)))}),i.join("&")}return r(n,t)+"="+r(o,t)}).filter(function(e){return e.length>0}).join("&"):""}},function(e,t){"use strict";var n={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:{}};e.exports=n},function(e,t,n){"use strict";var r=n(8),o=n(110),i={focusDOMComponent:function(){o(r.getNodeFromInstance(this))}};e.exports=i},function(e,t,n){"use strict";function r(){var e=window.opera;return"object"==typeof e&&"function"==typeof e.version&&parseInt(e.version(),10)<=12}function o(e){return(e.ctrlKey||e.altKey||e.metaKey)&&!(e.ctrlKey&&e.altKey)}function i(e){switch(e){case"topCompositionStart":return P.compositionStart;case"topCompositionEnd":return P.compositionEnd;case"topCompositionUpdate":return P.compositionUpdate}}function a(e,t){return"topKeyDown"===e&&t.keyCode===g}function s(e,t){switch(e){case"topKeyUp":return v.indexOf(t.keyCode)!==-1;case"topKeyDown":return t.keyCode!==g;case"topKeyPress":case"topMouseDown":case"topBlur":return!0;default:return!1}}function u(e){var t=e.detail;return"object"==typeof t&&"data"in t?t.data:null}function l(e,t,n,r){var o,l;if(b?o=i(e):R?s(e,n)&&(o=P.compositionEnd):a(e,n)&&(o=P.compositionStart),!o)return null;T&&(R||o!==P.compositionStart?o===P.compositionEnd&&R&&(l=R.getData()):R=m.getPooled(r));var c=_.getPooled(o,t,n,r);if(l)c.data=l;else{var f=u(n);null!==f&&(c.data=f)}return d.accumulateTwoPhaseDispatches(c),c}function c(e,t){switch(e){case"topCompositionEnd":return u(t);case"topKeyPress":var n=t.which;return n!==w?null:(S=!0,O);case"topTextInput":var r=t.data;return r===O&&S?null:r;default:return null}}function f(e,t){if(R){if("topCompositionEnd"===e||!b&&s(e,t)){var n=R.getData();return m.release(R),R=null,n}return null}switch(e){case"topPaste":return null;case"topKeyPress":return t.which&&!o(t)?String.fromCharCode(t.which):null;case"topCompositionEnd":return T?null:t.data;default:return null}}function p(e,t,n,r){var o;if(o=C?c(e,n):f(e,n),!o)return null;var i=y.getPooled(P.beforeInput,t,n,r);return i.data=o,d.accumulateTwoPhaseDispatches(i),i}var d=n(41),h=n(12),m=n(283),_=n(320),y=n(323),v=[9,13,27,32],g=229,b=h.canUseDOM&&"CompositionEvent"in window,E=null;h.canUseDOM&&"documentMode"in document&&(E=document.documentMode);var C=h.canUseDOM&&"TextEvent"in window&&!E&&!r(),T=h.canUseDOM&&(!b||E&&E>8&&E<=11),w=32,O=String.fromCharCode(w),P={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"]}},S=!1,R=null,I={eventTypes:P,extractEvents:function(e,t,n,r){return[l(e,t,n,r),p(e,t,n,r)]}};e.exports=I},function(e,t,n){"use strict";var r=n(118),o=n(12),i=(n(18),n(247),n(329)),a=n(254),s=n(257),u=(n(4),s(function(e){return a(e)})),l=!1,c="cssFloat";if(o.canUseDOM){var f=document.createElement("div").style;try{f.font=""}catch(e){l=!0}void 0===document.documentElement.style.cssFloat&&(c="styleFloat")}var p={createMarkupForStyles:function(e,t){var n="";for(var r in e)if(e.hasOwnProperty(r)){var o=e[r];null!=o&&(n+=u(r)+":",n+=i(r,o,t)+";")}return n||null},setValueForStyles:function(e,t,n){var o=e.style;for(var a in t)if(t.hasOwnProperty(a)){var s=i(a,t[a],n);if("float"!==a&&"cssFloat"!==a||(a=c),s)o[a]=s;else{var u=l&&r.shorthandPropertyExpansions[a];if(u)for(var f in u)o[f]="";else o[a]=""}}}};e.exports=p},function(e,t,n){"use strict";function r(e){var t=e.nodeName&&e.nodeName.toLowerCase();return"select"===t||"input"===t&&"file"===e.type}function o(e){var t=T.getPooled(S.change,I,e,w(e));g.accumulateTwoPhaseDispatches(t),C.batchedUpdates(i,t)}function i(e){v.enqueueEvents(e),v.processEventQueue(!1)}function a(e,t){R=e,I=t,R.attachEvent("onchange",o)}function s(){R&&(R.detachEvent("onchange",o),R=null,I=null)}function u(e,t){if("topChange"===e)return t}function l(e,t,n){"topFocus"===e?(s(),a(t,n)):"topBlur"===e&&s()}function c(e,t){R=e,I=t,A=e.value,M=Object.getOwnPropertyDescriptor(e.constructor.prototype,"value"),Object.defineProperty(R,"value",x),R.attachEvent?R.attachEvent("onpropertychange",p):R.addEventListener("propertychange",p,!1)}function f(){R&&(delete R.value,R.detachEvent?R.detachEvent("onpropertychange",p):R.removeEventListener("propertychange",p,!1),R=null,I=null,A=null,M=null)}function p(e){if("value"===e.propertyName){var t=e.srcElement.value;t!==A&&(A=t,o(e))}}function d(e,t){if("topInput"===e)return t}function h(e,t,n){"topFocus"===e?(f(),c(t,n)):"topBlur"===e&&f()}function m(e,t){if(("topSelectionChange"===e||"topKeyUp"===e||"topKeyDown"===e)&&R&&R.value!==A)return A=R.value,I}function _(e){return e.nodeName&&"input"===e.nodeName.toLowerCase()&&("checkbox"===e.type||"radio"===e.type)}function y(e,t){if("topClick"===e)return t}var v=n(40),g=n(41),b=n(12),E=n(8),C=n(19),T=n(20),w=n(84),O=n(85),P=n(135),S={change:{phasedRegistrationNames:{bubbled:"onChange",captured:"onChangeCapture"},dependencies:["topBlur","topChange","topClick","topFocus","topInput","topKeyDown","topKeyUp","topSelectionChange"]}},R=null,I=null,A=null,M=null,L=!1;b.canUseDOM&&(L=O("change")&&(!document.documentMode||document.documentMode>8));var N=!1;b.canUseDOM&&(N=O("input")&&(!document.documentMode||document.documentMode>11));var x={get:function(){return M.get.call(this)},set:function(e){A=""+e,M.set.call(this,e)}},k={eventTypes:S,extractEvents:function(e,t,n,o){var i,a,s=t?E.getNodeFromInstance(t):window;if(r(s)?L?i=u:a=l:P(s)?N?i=d:(i=m,a=h):_(s)&&(i=y),i){var c=i(e,t);if(c){var f=T.getPooled(S.change,c,n,o);return f.type="change",g.accumulateTwoPhaseDispatches(f),f}}a&&a(e,s,t)}};e.exports=k},function(e,t,n){"use strict";var r=n(5),o=n(30),i=n(12),a=n(250),s=n(16),u=(n(3),{dangerouslyReplaceNodeWithMarkup:function(e,t){if(i.canUseDOM?void 0:r("56"),t?void 0:r("57"),"HTML"===e.nodeName?r("58"):void 0,"string"==typeof t){var n=a(t,s)[0];e.parentNode.replaceChild(n,e)}else o.replaceChildWithTree(e,t)}});e.exports=u},function(e,t){"use strict";var n=["ResponderEventPlugin","SimpleEventPlugin","TapEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin"];e.exports=n},function(e,t,n){"use strict";var r=n(41),o=n(8),i=n(52),a={mouseEnter:{registrationName:"onMouseEnter",dependencies:["topMouseOut","topMouseOver"]},mouseLeave:{registrationName:"onMouseLeave",dependencies:["topMouseOut","topMouseOver"]}},s={eventTypes:a,extractEvents:function(e,t,n,s){if("topMouseOver"===e&&(n.relatedTarget||n.fromElement))return null;if("topMouseOut"!==e&&"topMouseOver"!==e)return null;var u;if(s.window===s)u=s;else{var l=s.ownerDocument;u=l?l.defaultView||l.parentWindow:window}var c,f;if("topMouseOut"===e){c=t;var p=n.relatedTarget||n.toElement;f=p?o.getClosestInstanceFromNode(p):null}else c=null,f=t;if(c===f)return null;var d=null==c?u:o.getNodeFromInstance(c),h=null==f?u:o.getNodeFromInstance(f),m=i.getPooled(a.mouseLeave,c,n,s);m.type="mouseleave",m.target=d,m.relatedTarget=h;var _=i.getPooled(a.mouseEnter,f,n,s);return _.type="mouseenter",_.target=h,_.relatedTarget=d,r.accumulateEnterLeaveDispatches(m,_,c,f),[m,_]}};e.exports=s},function(e,t,n){"use strict";function r(e){this._root=e,this._startText=this.getText(),this._fallbackText=null}var o=n(6),i=n(28),a=n(133);o(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 e,t,n=this._startText,r=n.length,o=this.getText(),i=o.length;for(e=0;e1?1-t:void 0;return this._fallbackText=o.slice(e,s),this._fallbackText}}),i.addPoolingTo(r),e.exports=r},function(e,t,n){"use strict";var r=n(31),o=r.injection.MUST_USE_PROPERTY,i=r.injection.HAS_BOOLEAN_VALUE,a=r.injection.HAS_NUMERIC_VALUE,s=r.injection.HAS_POSITIVE_NUMERIC_VALUE,u=r.injection.HAS_OVERLOADED_BOOLEAN_VALUE,l={isCustomAttribute:RegExp.prototype.test.bind(new RegExp("^(data|aria)-["+r.ATTRIBUTE_NAME_CHAR+"]*$")),Properties:{accept:0,acceptCharset:0,accessKey:0,action:0,allowFullScreen:i,allowTransparency:0,alt:0,as:0,async:i,autoComplete:0,autoPlay:i,capture:i,cellPadding:0,cellSpacing:0,charSet:0,challenge:0,checked:o|i,cite:0,classID:0,className:0,cols:s,colSpan:0,content:0,contentEditable:0,contextMenu:0,controls:i,coords:0,crossOrigin:0,data:0,dateTime:0,default:i,defer:i,dir:0,disabled:i,download:u,draggable:0,encType:0,form:0,formAction:0,formEncType:0,formMethod:0,formNoValidate:i,formTarget:0,frameBorder:0,headers:0,height:0,hidden:i,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:i,low:0,manifest:0,marginHeight:0,marginWidth:0,max:0,maxLength:0,media:0,mediaGroup:0,method:0,min:0,minLength:0,multiple:o|i,muted:o|i,name:0,nonce:0,noValidate:i,open:i,optimum:0,pattern:0,placeholder:0,playsInline:i,poster:0,preload:0,profile:0,radioGroup:0,readOnly:i,referrerPolicy:0,rel:0,required:i,reversed:i,role:0,rows:s,rowSpan:a,sandbox:0,scope:0,scoped:i,scrolling:0,seamless:i,selected:o|i,shape:0,size:s,sizes:0,span:s,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:i,itemType:0,itemID:0,itemRef:0,results:0,security:0,unselectable:0},DOMAttributeNames:{acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},DOMPropertyNames:{}};e.exports=l},function(e,t,n){(function(t){"use strict";function r(e,t,n,r){var o=void 0===e[n];null!=t&&o&&(e[n]=i(t,!0))}var o=n(32),i=n(134),a=(n(76),n(86)),s=n(137),u=(n(4),{instantiateChildren:function(e,t,n,o){if(null==e)return null;var i={};return s(e,r,i),i},updateChildren:function(e,t,n,r,s,u,l,c,f){if(t||e){var p,d;for(p in t)if(t.hasOwnProperty(p)){d=e&&e[p];var h=d&&d._currentElement,m=t[p];if(null!=d&&a(h,m))o.receiveComponent(d,m,s,c),t[p]=d;else{d&&(r[p]=o.getHostNode(d),o.unmountComponent(d,!1));var _=i(m,!0);t[p]=_;var y=o.mountComponent(_,s,u,l,c,f);n.push(y)}}for(p in e)!e.hasOwnProperty(p)||t&&t.hasOwnProperty(p)||(d=e[p],r[p]=o.getHostNode(d),o.unmountComponent(d,!1))}},unmountChildren:function(e,t){for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];o.unmountComponent(r,t)}}});e.exports=u}).call(t,n(71))},function(e,t,n){"use strict";var r=n(72),o=n(293),i={processChildrenUpdates:o.dangerouslyProcessChildrenUpdates,replaceNodeWithMarkup:r.dangerouslyReplaceNodeWithMarkup};e.exports=i},function(e,t,n){"use strict";function r(e){}function o(e,t){}function i(e){return!(!e.prototype||!e.prototype.isReactComponent)}function a(e){return!(!e.prototype||!e.prototype.isPureReactComponent)}var s=n(5),u=n(6),l=n(36),c=n(78),f=n(21),p=n(79),d=n(42),h=(n(18),n(128)),m=n(32),_=n(39),y=(n(3),n(65)),v=n(86),g=(n(4),{ImpureClass:0,PureClass:1,StatelessFunctional:2});r.prototype.render=function(){var e=d.get(this)._currentElement.type,t=e(this.props,this.context,this.updater);return o(e,t),t};var b=1,E={construct:function(e){this._currentElement=e,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(e,t,n,u){this._context=u,this._mountOrder=b++,this._hostParent=t,this._hostContainerInfo=n;var c,f=this._currentElement.props,p=this._processContext(u),h=this._currentElement.type,m=e.getUpdateQueue(),y=i(h),v=this._constructComponent(y,f,p,m);y||null!=v&&null!=v.render?a(h)?this._compositeType=g.PureClass:this._compositeType=g.ImpureClass:(c=v,o(h,c),null===v||v===!1||l.isValidElement(v)?void 0:s("105",h.displayName||h.name||"Component"),v=new r(h),this._compositeType=g.StatelessFunctional);v.props=f,v.context=p,v.refs=_,v.updater=m,this._instance=v,d.set(v,this);var E=v.state;void 0===E&&(v.state=E=null),"object"!=typeof E||Array.isArray(E)?s("106",this.getName()||"ReactCompositeComponent"):void 0,this._pendingStateQueue=null,this._pendingReplaceState=!1,this._pendingForceUpdate=!1;var C;return C=v.unstable_handleError?this.performInitialMountWithErrorHandling(c,t,n,e,u):this.performInitialMount(c,t,n,e,u),v.componentDidMount&&e.getReactMountReady().enqueue(v.componentDidMount,v),C},_constructComponent:function(e,t,n,r){return this._constructComponentWithoutOwner(e,t,n,r)},_constructComponentWithoutOwner:function(e,t,n,r){var o=this._currentElement.type;return e?new o(t,n,r):o(t,n,r)},performInitialMountWithErrorHandling:function(e,t,n,r,o){var i,a=r.checkpoint();try{i=this.performInitialMount(e,t,n,r,o)}catch(s){r.rollback(a),this._instance.unstable_handleError(s),this._pendingStateQueue&&(this._instance.state=this._processPendingState(this._instance.props,this._instance.context)),a=r.checkpoint(),this._renderedComponent.unmountComponent(!0),r.rollback(a),i=this.performInitialMount(e,t,n,r,o)}return i},performInitialMount:function(e,t,n,r,o){var i=this._instance,a=0;i.componentWillMount&&(i.componentWillMount(),this._pendingStateQueue&&(i.state=this._processPendingState(i.props,i.context))),void 0===e&&(e=this._renderValidatedComponent());var s=h.getType(e);this._renderedNodeType=s;var u=this._instantiateReactComponent(e,s!==h.EMPTY);this._renderedComponent=u;var l=m.mountComponent(u,r,t,n,this._processChildContext(o),a);return l},getHostNode:function(){return m.getHostNode(this._renderedComponent)},unmountComponent:function(e){if(this._renderedComponent){var t=this._instance;if(t.componentWillUnmount&&!t._calledComponentWillUnmount)if(t._calledComponentWillUnmount=!0,e){var n=this.getName()+".componentWillUnmount()";p.invokeGuardedCallback(n,t.componentWillUnmount.bind(t))}else t.componentWillUnmount();this._renderedComponent&&(m.unmountComponent(this._renderedComponent,e),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,d.remove(t)}},_maskContext:function(e){var t=this._currentElement.type,n=t.contextTypes;if(!n)return _;var r={};for(var o in n)r[o]=e[o];return r},_processContext:function(e){var t=this._maskContext(e);return t},_processChildContext:function(e){var t,n=this._currentElement.type,r=this._instance;if(r.getChildContext&&(t=r.getChildContext()),t){"object"!=typeof n.childContextTypes?s("107",this.getName()||"ReactCompositeComponent"):void 0;for(var o in t)o in n.childContextTypes?void 0:s("108",this.getName()||"ReactCompositeComponent",o);return u({},e,t)}return e},_checkContextTypes:function(e,t,n){},receiveComponent:function(e,t,n){var r=this._currentElement,o=this._context;this._pendingElement=null,this.updateComponent(t,r,e,o,n)},performUpdateIfNecessary:function(e){null!=this._pendingElement?m.receiveComponent(this,this._pendingElement,e,this._context):null!==this._pendingStateQueue||this._pendingForceUpdate?this.updateComponent(e,this._currentElement,this._currentElement,this._context,this._context):this._updateBatchNumber=null},updateComponent:function(e,t,n,r,o){var i=this._instance;null==i?s("136",this.getName()||"ReactCompositeComponent"):void 0;var a,u=!1;this._context===o?a=i.context:(a=this._processContext(o),u=!0);var l=t.props,c=n.props;t!==n&&(u=!0),u&&i.componentWillReceiveProps&&i.componentWillReceiveProps(c,a);var f=this._processPendingState(c,a),p=!0;this._pendingForceUpdate||(i.shouldComponentUpdate?p=i.shouldComponentUpdate(c,f,a):this._compositeType===g.PureClass&&(p=!y(l,c)||!y(i.state,f))),this._updateBatchNumber=null,p?(this._pendingForceUpdate=!1,this._performComponentUpdate(n,c,f,a,e,o)):(this._currentElement=n,this._context=o,i.props=c,i.state=f,i.context=a)},_processPendingState:function(e,t){var n=this._instance,r=this._pendingStateQueue,o=this._pendingReplaceState;if(this._pendingReplaceState=!1,this._pendingStateQueue=null,!r)return n.state;if(o&&1===r.length)return r[0];for(var i=u({},o?r[0]:n.state),a=o?1:0;a=0||null!=t.is}function h(e){var t=e.type;p(t),this._currentElement=e,this._tag=t.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 m=n(5),_=n(6),y=n(276),v=n(278),g=n(30),b=n(73),E=n(31),C=n(120),T=n(40),w=n(74),O=n(51),P=n(121),S=n(8),R=n(294),I=n(295),A=n(122),M=n(298),L=(n(18),n(307)),N=n(312),x=(n(16),n(54)),k=(n(3),n(85),n(65),n(87),n(4),P),j=T.deleteListener,D=S.getNodeFromInstance,U=O.listenTo,F=w.registrationNameModules,H={string:!0,number:!0},B="style",q="__html",V={children:null,dangerouslySetInnerHTML:null,suppressContentEditableWarning:null},G=11,W={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"},z={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},K={listing:!0,pre:!0,textarea:!0},Y=_({menuitem:!0},z),J=/^[a-zA-Z][a-zA-Z:_\.\-\d]*$/,X={},Q={}.hasOwnProperty,$=1;h.displayName="ReactDOMComponent",h.Mixin={mountComponent:function(e,t,n,r){this._rootNodeID=$++,this._domID=n._idCounter++,this._hostParent=t,this._hostContainerInfo=n;var i=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},e.getReactMountReady().enqueue(c,this);break;case"input":R.mountWrapper(this,i,t),i=R.getHostProps(this,i),e.getReactMountReady().enqueue(c,this);break;case"option":I.mountWrapper(this,i,t),i=I.getHostProps(this,i);break;case"select":A.mountWrapper(this,i,t),i=A.getHostProps(this,i),e.getReactMountReady().enqueue(c,this);break;case"textarea":M.mountWrapper(this,i,t),i=M.getHostProps(this,i),e.getReactMountReady().enqueue(c,this)}o(this,i);var a,f;null!=t?(a=t._namespaceURI,f=t._tag):n._tag&&(a=n._namespaceURI,f=n._tag),(null==a||a===b.svg&&"foreignobject"===f)&&(a=b.html),a===b.html&&("svg"===this._tag?a=b.svg:"math"===this._tag&&(a=b.mathml)),this._namespaceURI=a;var p;if(e.useCreateElement){var d,h=n._ownerDocument;if(a===b.html)if("script"===this._tag){var m=h.createElement("div"),_=this._currentElement.type;m.innerHTML="<"+_+">",d=m.removeChild(m.firstChild)}else d=i.is?h.createElement(this._currentElement.type,i.is):h.createElement(this._currentElement.type);else d=h.createElementNS(a,this._currentElement.type);S.precacheNode(this,d),this._flags|=k.hasCachedChildNodes,this._hostParent||C.setAttributeForRoot(d),this._updateDOMProperties(null,i,e);var v=g(d);this._createInitialChildren(e,i,r,v),p=v}else{var E=this._createOpenTagMarkupAndPutListeners(e,i),T=this._createContentMarkup(e,i,r);p=!T&&z[this._tag]?E+"/>":E+">"+T+""}switch(this._tag){case"input":e.getReactMountReady().enqueue(s,this),i.autoFocus&&e.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"textarea":e.getReactMountReady().enqueue(u,this),i.autoFocus&&e.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"select":i.autoFocus&&e.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"button":i.autoFocus&&e.getReactMountReady().enqueue(y.focusDOMComponent,this);break;case"option":e.getReactMountReady().enqueue(l,this)}return p},_createOpenTagMarkupAndPutListeners:function(e,t){var n="<"+this._currentElement.type;for(var r in t)if(t.hasOwnProperty(r)){var o=t[r];if(null!=o)if(F.hasOwnProperty(r))o&&i(this,r,o,e);else{r===B&&(o&&(o=this._previousStyleCopy=_({},t.style)),o=v.createMarkupForStyles(o,this));var a=null;null!=this._tag&&d(this._tag,t)?V.hasOwnProperty(r)||(a=C.createMarkupForCustomAttribute(r,o)):a=C.createMarkupForProperty(r,o),a&&(n+=" "+a)}}return e.renderToStaticMarkup?n:(this._hostParent||(n+=" "+C.createMarkupForRoot()),n+=" "+C.createMarkupForID(this._domID))},_createContentMarkup:function(e,t,n){var r="",o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&(r=o.__html);else{var i=H[typeof t.children]?t.children:null,a=null!=i?null:t.children;if(null!=i)r=x(i);else if(null!=a){var s=this.mountChildren(a,e,n);r=s.join("")}}return K[this._tag]&&"\n"===r.charAt(0)?"\n"+r:r},_createInitialChildren:function(e,t,n,r){var o=t.dangerouslySetInnerHTML;if(null!=o)null!=o.__html&&g.queueHTML(r,o.__html);else{var i=H[typeof t.children]?t.children:null,a=null!=i?null:t.children;if(null!=i)g.queueText(r,i);else if(null!=a)for(var s=this.mountChildren(a,e,n),u=0;u"},receiveComponent:function(){},getHostNode:function(){return i.getNodeFromInstance(this)},unmountComponent:function(){i.uncacheNode(this)}}),e.exports=a},function(e,t){"use strict";var n={useCreateElement:!0,useFiber:!1};e.exports=n},function(e,t,n){"use strict";var r=n(72),o=n(8),i={dangerouslyProcessChildrenUpdates:function(e,t){var n=o.getNodeFromInstance(e);r.processUpdates(n,t)}};e.exports=i},function(e,t,n){"use strict";function r(){this._rootNodeID&&f.updateWrapper(this)}function o(e){var t=this._currentElement.props,n=u.executeOnChange(t,e);c.asap(r,this);var o=t.name;if("radio"===t.type&&null!=o){for(var a=l.getNodeFromInstance(this),s=a;s.parentNode;)s=s.parentNode;for(var f=s.querySelectorAll("input[name="+JSON.stringify(""+o)+'][type="radio"]'),p=0;pt.end?(n=t.end,r=t.start):(n=t.start,r=t.end),o.moveToElementText(e),o.moveStart("character",n),o.setEndPoint("EndToStart",o),o.moveEnd("character",r-n),o.select()}function s(e,t){if(window.getSelection){var n=window.getSelection(),r=e[c()].length,o=Math.min(t.start,r),i=void 0===t.end?o:Math.min(t.end,r);if(!n.extend&&o>i){var a=i;i=o,o=a}var s=l(e,o),u=l(e,i);if(s&&u){var f=document.createRange();f.setStart(s.node,s.offset),n.removeAllRanges(),o>i?(n.addRange(f),n.extend(u.node,u.offset)):(f.setEnd(u.node,u.offset),n.addRange(f))}}}var u=n(12),l=n(335),c=n(133),f=u.canUseDOM&&"selection"in document&&!("getSelection"in window),p={getOffsets:f?o:i,setOffsets:f?a:s};e.exports=p},function(e,t,n){"use strict";var r=n(5),o=n(6),i=n(72),a=n(30),s=n(8),u=n(54),l=(n(3),n(87),function(e){this._currentElement=e,this._stringText=""+e,this._hostNode=null,this._hostParent=null,this._domID=0,this._mountIndex=0,this._closingComment=null,this._commentNodes=null});o(l.prototype,{mountComponent:function(e,t,n,r){var o=n._idCounter++,i=" react-text: "+o+" ",l=" /react-text ";if(this._domID=o,this._hostParent=t,e.useCreateElement){var c=n._ownerDocument,f=c.createComment(i),p=c.createComment(l),d=a(c.createDocumentFragment());return a.queueChild(d,a(f)),this._stringText&&a.queueChild(d,a(c.createTextNode(this._stringText))),a.queueChild(d,a(p)),s.precacheNode(this,f),this._closingComment=p,d}var h=u(this._stringText);return e.renderToStaticMarkup?h:""+h+""},receiveComponent:function(e,t){if(e!==this._currentElement){this._currentElement=e;var n=""+e;if(n!==this._stringText){this._stringText=n;var r=this.getHostNode();i.replaceDelimitedText(r[0],r[1],n)}}},getHostNode:function(){var e=this._commentNodes;if(e)return e;if(!this._closingComment)for(var t=s.getNodeFromInstance(this),n=t.nextSibling;;){if(null==n?r("67",this._domID):void 0,8===n.nodeType&&" /react-text "===n.nodeValue){this._closingComment=n;break}n=n.nextSibling}return e=[this._hostNode,this._closingComment],this._commentNodes=e,e},unmountComponent:function(){this._closingComment=null,this._commentNodes=null,s.uncacheNode(this)}}),e.exports=l},function(e,t,n){"use strict";function r(){this._rootNodeID&&c.updateWrapper(this)}function o(e){var t=this._currentElement.props,n=s.executeOnChange(t,e);return l.asap(r,this),n}var i=n(5),a=n(6),s=n(77),u=n(8),l=n(19),c=(n(3),n(4),{getHostProps:function(e,t){null!=t.dangerouslySetInnerHTML?i("91"):void 0;var n=a({},t,{value:void 0,defaultValue:void 0,children:""+e._wrapperState.initialValue,onChange:e._wrapperState.onChange});return n},mountWrapper:function(e,t){var n=s.getValue(t),r=n;if(null==n){var a=t.defaultValue,u=t.children;null!=u&&(null!=a?i("92"):void 0,Array.isArray(u)&&(u.length<=1?void 0:i("93"),u=u[0]),a=""+u),null==a&&(a=""),r=a}e._wrapperState={initialValue:""+r,listeners:null,onChange:o.bind(e)}},updateWrapper:function(e){var t=e._currentElement.props,n=u.getNodeFromInstance(e),r=s.getValue(t);if(null!=r){var o=""+r;o!==n.value&&(n.value=o),null==t.defaultValue&&(n.defaultValue=o)}null!=t.defaultValue&&(n.defaultValue=t.defaultValue)},postMountWrapper:function(e){var t=u.getNodeFromInstance(e);t.value=t.textContent}});e.exports=c},function(e,t,n){"use strict";function r(e,t){"_hostNode"in e?void 0:u("33"),"_hostNode"in t?void 0:u("33");for(var n=0,r=e;r;r=r._hostParent)n++;for(var o=0,i=t;i;i=i._hostParent)o++;for(;n-o>0;)e=e._hostParent,n--;for(;o-n>0;)t=t._hostParent,o--;for(var a=n;a--;){if(e===t)return e;e=e._hostParent,t=t._hostParent}return null}function o(e,t){"_hostNode"in e?void 0:u("35"),"_hostNode"in t?void 0:u("35");for(;t;){if(t===e)return!0;t=t._hostParent}return!1}function i(e){return"_hostNode"in e?void 0:u("36"),e._hostParent}function a(e,t,n){for(var r=[];e;)r.push(e),e=e._hostParent;var o;for(o=r.length;o-- >0;)t(r[o],"captured",n);for(o=0;o0;)n(u[l],"captured",i)}var u=n(5);n(3);e.exports={isAncestor:o,getLowestCommonAncestor:r,getParentInstance:i,traverseTwoPhase:a,traverseEnterLeave:s}},function(e,t,n){"use strict";function r(){this.reinitializeTransaction()}var o=n(6),i=n(19),a=n(53),s=n(16),u={initialize:s,close:function(){p.isBatchingUpdates=!1}},l={initialize:s,close:i.flushBatchedUpdates.bind(i)},c=[l,u];o(r.prototype,a,{getTransactionWrappers:function(){return c}});var f=new r,p={isBatchingUpdates:!1,batchedUpdates:function(e,t,n,r,o,i){var a=p.isBatchingUpdates;return p.isBatchingUpdates=!0,a?e(t,n,r,o,i):f.perform(e,null,t,n,r,o,i)}};e.exports=p},function(e,t,n){"use strict";function r(){T||(T=!0,v.EventEmitter.injectReactEventListener(y),v.EventPluginHub.injectEventPluginOrder(s),v.EventPluginUtils.injectComponentTree(p),v.EventPluginUtils.injectTreeTraversal(h),v.EventPluginHub.injectEventPluginsByName({SimpleEventPlugin:C,EnterLeaveEventPlugin:u,ChangeEventPlugin:a,SelectEventPlugin:E,BeforeInputEventPlugin:i}),v.HostComponent.injectGenericComponentClass(f),v.HostComponent.injectTextComponentClass(m),v.DOMProperty.injectDOMPropertyConfig(o),v.DOMProperty.injectDOMPropertyConfig(l),v.DOMProperty.injectDOMPropertyConfig(b),v.EmptyComponent.injectEmptyComponentFactory(function(e){return new d(e)}),v.Updates.injectReconcileTransaction(g),v.Updates.injectBatchingStrategy(_),v.Component.injectEnvironment(c))}var o=n(275),i=n(277),a=n(279),s=n(281),u=n(282),l=n(284),c=n(286),f=n(289),p=n(8),d=n(291),h=n(299),m=n(297),_=n(300),y=n(304),v=n(305),g=n(310),b=n(315),E=n(316),C=n(317),T=!1; -e.exports={inject:r}},function(e,t){"use strict";var n="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103;e.exports=n},function(e,t,n){"use strict";function r(e){o.enqueueEvents(e),o.processEventQueue(!1)}var o=n(40),i={handleTopLevel:function(e,t,n,i){var a=o.extractEvents(e,t,n,i);r(a)}};e.exports=i},function(e,t,n){"use strict";function r(e){for(;e._hostParent;)e=e._hostParent;var t=f.getNodeFromInstance(e),n=t.parentNode;return f.getClosestInstanceFromNode(n)}function o(e,t){this.topLevelType=e,this.nativeEvent=t,this.ancestors=[]}function i(e){var t=d(e.nativeEvent),n=f.getClosestInstanceFromNode(t),o=n;do e.ancestors.push(o),o=o&&r(o);while(o);for(var i=0;i/,i=/^<\!\-\-/,a={CHECKSUM_ATTR_NAME:"data-react-checksum",addChecksumToMarkup:function(e){var t=r(e);return i.test(e)?e:e.replace(o," "+a.CHECKSUM_ATTR_NAME+'="'+t+'"$&')},canReuseMarkup:function(e,t){var n=t.getAttribute(a.CHECKSUM_ATTR_NAME);n=n&&parseInt(n,10);var o=r(e);return o===n}};e.exports=a},function(e,t,n){"use strict";function r(e,t,n){return{type:"INSERT_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:n,afterNode:t}}function o(e,t,n){return{type:"MOVE_EXISTING",content:null,fromIndex:e._mountIndex,fromNode:p.getHostNode(e),toIndex:n,afterNode:t}}function i(e,t){return{type:"REMOVE_NODE",content:null,fromIndex:e._mountIndex,fromNode:t,toIndex:null,afterNode:null}}function a(e){return{type:"SET_MARKUP",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function s(e){return{type:"TEXT_CONTENT",content:e,fromIndex:null,fromNode:null,toIndex:null,afterNode:null}}function u(e,t){return t&&(e=e||[],e.push(t)),e}function l(e,t){f.processChildrenUpdates(e,t)}var c=n(5),f=n(78),p=(n(42),n(18),n(21),n(32)),d=n(285),h=(n(16),n(331)),m=(n(3),{Mixin:{_reconcilerInstantiateChildren:function(e,t,n){return d.instantiateChildren(e,t,n)},_reconcilerUpdateChildren:function(e,t,n,r,o,i){var a,s=0;return a=h(t,s),d.updateChildren(e,a,n,r,o,this,this._hostContainerInfo,i,s),a},mountChildren:function(e,t,n){var r=this._reconcilerInstantiateChildren(e,t,n);this._renderedChildren=r;var o=[],i=0;for(var a in r)if(r.hasOwnProperty(a)){var s=r[a],u=0,l=p.mountComponent(s,t,this,this._hostContainerInfo,n,u);s._mountIndex=i++,o.push(l)}return o},updateTextContent:function(e){var t=this._renderedChildren;d.unmountChildren(t,!1);for(var n in t)t.hasOwnProperty(n)&&c("118");var r=[s(e)];l(this,r)},updateMarkup:function(e){var t=this._renderedChildren;d.unmountChildren(t,!1);for(var n in t)t.hasOwnProperty(n)&&c("118");var r=[a(e)];l(this,r)},updateChildren:function(e,t,n){this._updateChildren(e,t,n)},_updateChildren:function(e,t,n){var r=this._renderedChildren,o={},i=[],a=this._reconcilerUpdateChildren(r,e,i,o,t,n);if(a||r){var s,c=null,f=0,d=0,h=0,m=null;for(s in a)if(a.hasOwnProperty(s)){var _=r&&r[s],y=a[s];_===y?(c=u(c,this.moveChild(_,m,f,d)),d=Math.max(_._mountIndex,d),_._mountIndex=f):(_&&(d=Math.max(_._mountIndex,d)),c=u(c,this._mountChildAtIndex(y,i[h],m,f,t,n)),h++),f++,m=p.getHostNode(y)}for(s in o)o.hasOwnProperty(s)&&(c=u(c,this._unmountChild(r[s],o[s])));c&&l(this,c),this._renderedChildren=a}},unmountChildren:function(e){var t=this._renderedChildren;d.unmountChildren(t,e),this._renderedChildren=null},moveChild:function(e,t,n,r){if(e._mountIndex=t)return{node:o,offset:t-i};i=a}o=n(r(o))}}e.exports=o},function(e,t,n){"use strict";function r(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n["ms"+e]="MS"+t,n["O"+e]="o"+t.toLowerCase(),n}function o(e){if(s[e])return s[e];if(!a[e])return e;var t=a[e];for(var n in t)if(t.hasOwnProperty(n)&&n in u)return s[e]=t[n];return""}var i=n(12),a={animationend:r("Animation","AnimationEnd"),animationiteration:r("Animation","AnimationIteration"),animationstart:r("Animation","AnimationStart"),transitionend:r("Transition","TransitionEnd")},s={},u={};i.canUseDOM&&(u=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),e.exports=o},function(e,t,n){"use strict";function r(e){return'"'+o(e)+'"'}var o=n(54);e.exports=r},function(e,t,n){"use strict";var r=n(127);e.exports=r.renderSubtreeIntoContainer},function(e,t){!function(){"use strict";function e(e,t){if(e){if(t.element_.classList.contains(t.CssClasses_.MDL_JS_RIPPLE_EFFECT)){var n=document.createElement("span");n.classList.add(t.CssClasses_.MDL_RIPPLE_CONTAINER),n.classList.add(t.CssClasses_.MDL_JS_RIPPLE_EFFECT);var r=document.createElement("span");r.classList.add(t.CssClasses_.MDL_RIPPLE),n.appendChild(r),e.appendChild(n)}e.addEventListener("click",function(n){n.preventDefault(),t.resetTabState_(),e.classList.add(t.CssClasses_.ACTIVE_CLASS)})}}function t(e,t,n,r){function o(){r.resetTabState_(t),e.classList.add(r.CssClasses_.IS_ACTIVE)}if(r.tabBar_.classList.contains(r.CssClasses_.JS_RIPPLE_EFFECT)){var i=document.createElement("span");i.classList.add(r.CssClasses_.RIPPLE_CONTAINER),i.classList.add(r.CssClasses_.JS_RIPPLE_EFFECT);var a=document.createElement("span");a.classList.add(r.CssClasses_.RIPPLE),i.appendChild(a),e.appendChild(i)}e.addEventListener("click",function(e){e.preventDefault(),o()}),e.show=o}if("undefined"!=typeof window){/** - * @license - * Copyright 2015 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -var n={upgradeDom:function(e,t){},upgradeElement:function(e,t){},upgradeElements:function(e){},upgradeAllRegistered:function(){},registerUpgradedCallback:function(e,t){},register:function(e){},downgradeElements:function(e){}};n=function(){function e(e,t){for(var n=0;n0&&i(t.children))}function a(t){var n="undefined"==typeof t.widget&&"undefined"==typeof t.widget,r=!0;n||(r=t.widget||t.widget);var o={classConstructor:t.constructor||t.constructor,className:t.classAsString||t.classAsString,cssClass:t.cssClass||t.cssClass,widget:r,callbacks:[]};if(f.forEach(function(e){if(e.cssClass===o.cssClass)throw new Error("The provided cssClass has already been registered: "+e.cssClass);if(e.className===o.className)throw new Error("The provided className has already been registered")}),t.constructor.prototype.hasOwnProperty(d))throw new Error("MDL component classes must not have "+d+" defined as a property.");var i=e(t.classAsString,o);i||f.push(o)}function s(t,n){var r=e(t);r&&r.callbacks.push(n)}function u(){for(var e=0;e0&&this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)&&(e.keyCode===this.Keycodes_.UP_ARROW?(e.preventDefault(),t[t.length-1].focus()):e.keyCode===this.Keycodes_.DOWN_ARROW&&(e.preventDefault(),t[0].focus()))}},c.prototype.handleItemKeyboardEvent_=function(e){if(this.element_&&this.container_){var t=this.element_.querySelectorAll("."+this.CssClasses_.ITEM+":not([disabled])");if(t&&t.length>0&&this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)){var n=Array.prototype.slice.call(t).indexOf(e.target);if(e.keyCode===this.Keycodes_.UP_ARROW)e.preventDefault(),n>0?t[n-1].focus():t[t.length-1].focus();else if(e.keyCode===this.Keycodes_.DOWN_ARROW)e.preventDefault(),t.length>n+1?t[n+1].focus():t[0].focus();else if(e.keyCode===this.Keycodes_.SPACE||e.keyCode===this.Keycodes_.ENTER){e.preventDefault();var r=new MouseEvent("mousedown");e.target.dispatchEvent(r),r=new MouseEvent("mouseup"),e.target.dispatchEvent(r),e.target.click()}else e.keyCode===this.Keycodes_.ESCAPE&&(e.preventDefault(),this.hide())}}},c.prototype.handleItemClick_=function(e){e.target.hasAttribute("disabled")?e.stopPropagation():(this.closing_=!0,window.setTimeout(function(e){this.hide(),this.closing_=!1}.bind(this),this.Constant_.CLOSE_TIMEOUT))},c.prototype.applyClip_=function(e,t){this.element_.classList.contains(this.CssClasses_.UNALIGNED)?this.element_.style.clip="":this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)?this.element_.style.clip="rect(0 "+t+"px 0 "+t+"px)":this.element_.classList.contains(this.CssClasses_.TOP_LEFT)?this.element_.style.clip="rect("+e+"px 0 "+e+"px 0)":this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)?this.element_.style.clip="rect("+e+"px "+t+"px "+e+"px "+t+"px)":this.element_.style.clip=""},c.prototype.removeAnimationEndListener_=function(e){e.target.classList.remove(c.prototype.CssClasses_.IS_ANIMATING)},c.prototype.addAnimationEndListener_=function(){this.element_.addEventListener("transitionend",this.removeAnimationEndListener_),this.element_.addEventListener("webkitTransitionEnd",this.removeAnimationEndListener_)},c.prototype.show=function(e){if(this.element_&&this.container_&&this.outline_){var t=this.element_.getBoundingClientRect().height,n=this.element_.getBoundingClientRect().width;this.container_.style.width=n+"px",this.container_.style.height=t+"px",this.outline_.style.width=n+"px",this.outline_.style.height=t+"px";for(var r=this.Constant_.TRANSITION_DURATION_SECONDS*this.Constant_.TRANSITION_DURATION_FRACTION,o=this.element_.querySelectorAll("."+this.CssClasses_.ITEM),i=0;i0&&this.showSnackbar(this.queuedNotifications_.shift())},h.prototype.cleanup_=function(){this.element_.classList.remove(this.cssClasses_.ACTIVE),setTimeout(function(){this.element_.setAttribute("aria-hidden","true"),this.textElement_.textContent="",Boolean(this.actionElement_.getAttribute("aria-hidden"))||(this.setActionHidden_(!0),this.actionElement_.textContent="",this.actionElement_.removeEventListener("click",this.actionHandler_)),this.actionHandler_=void 0,this.message_=void 0,this.actionText_=void 0,this.active=!1,this.checkQueue_()}.bind(this),this.Constant_.ANIMATION_LENGTH)},h.prototype.setActionHidden_=function(e){e?this.actionElement_.setAttribute("aria-hidden","true"):this.actionElement_.removeAttribute("aria-hidden")},n.register({constructor:h,classAsString:"MaterialSnackbar",cssClass:"mdl-js-snackbar",widget:!0});/** - * @license - * Copyright 2015 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -var m=function(e){this.element_=e,this.init()};window.MaterialSpinner=m,m.prototype.Constant_={MDL_SPINNER_LAYER_COUNT:4},m.prototype.CssClasses_={MDL_SPINNER_LAYER:"mdl-spinner__layer",MDL_SPINNER_CIRCLE_CLIPPER:"mdl-spinner__circle-clipper",MDL_SPINNER_CIRCLE:"mdl-spinner__circle",MDL_SPINNER_GAP_PATCH:"mdl-spinner__gap-patch",MDL_SPINNER_LEFT:"mdl-spinner__left",MDL_SPINNER_RIGHT:"mdl-spinner__right"},m.prototype.createLayer=function(e){var t=document.createElement("div");t.classList.add(this.CssClasses_.MDL_SPINNER_LAYER),t.classList.add(this.CssClasses_.MDL_SPINNER_LAYER+"-"+e);var n=document.createElement("div");n.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER),n.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);var r=document.createElement("div");r.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);var o=document.createElement("div");o.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER),o.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);for(var i=[n,r,o],a=0;a=this.maxRows&&e.preventDefault()},v.prototype.onFocus_=function(e){this.element_.classList.add(this.CssClasses_.IS_FOCUSED)},v.prototype.onBlur_=function(e){this.element_.classList.remove(this.CssClasses_.IS_FOCUSED)},v.prototype.onReset_=function(e){this.updateClasses_()},v.prototype.updateClasses_=function(){this.checkDisabled(),this.checkValidity(),this.checkDirty(),this.checkFocus()},v.prototype.checkDisabled=function(){this.input_.disabled?this.element_.classList.add(this.CssClasses_.IS_DISABLED):this.element_.classList.remove(this.CssClasses_.IS_DISABLED)},v.prototype.checkDisabled=v.prototype.checkDisabled,v.prototype.checkFocus=function(){Boolean(this.element_.querySelector(":focus"))?this.element_.classList.add(this.CssClasses_.IS_FOCUSED):this.element_.classList.remove(this.CssClasses_.IS_FOCUSED)},v.prototype.checkFocus=v.prototype.checkFocus,v.prototype.checkValidity=function(){this.input_.validity&&(this.input_.validity.valid?this.element_.classList.remove(this.CssClasses_.IS_INVALID):this.element_.classList.add(this.CssClasses_.IS_INVALID))},v.prototype.checkValidity=v.prototype.checkValidity,v.prototype.checkDirty=function(){this.input_.value&&this.input_.value.length>0?this.element_.classList.add(this.CssClasses_.IS_DIRTY):this.element_.classList.remove(this.CssClasses_.IS_DIRTY)},v.prototype.checkDirty=v.prototype.checkDirty,v.prototype.disable=function(){this.input_.disabled=!0,this.updateClasses_()},v.prototype.disable=v.prototype.disable,v.prototype.enable=function(){this.input_.disabled=!1,this.updateClasses_()},v.prototype.enable=v.prototype.enable,v.prototype.change=function(e){this.input_.value=e||"",this.updateClasses_()},v.prototype.change=v.prototype.change,v.prototype.init=function(){if(this.element_&&(this.label_=this.element_.querySelector("."+this.CssClasses_.LABEL),this.input_=this.element_.querySelector("."+this.CssClasses_.INPUT),this.input_)){this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE)&&(this.maxRows=parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE),10),isNaN(this.maxRows)&&(this.maxRows=this.Constant_.NO_MAX_ROWS)),this.input_.hasAttribute("placeholder")&&this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER),this.boundUpdateClassesHandler=this.updateClasses_.bind(this),this.boundFocusHandler=this.onFocus_.bind(this),this.boundBlurHandler=this.onBlur_.bind(this),this.boundResetHandler=this.onReset_.bind(this),this.input_.addEventListener("input",this.boundUpdateClassesHandler),this.input_.addEventListener("focus",this.boundFocusHandler),this.input_.addEventListener("blur",this.boundBlurHandler),this.input_.addEventListener("reset",this.boundResetHandler),this.maxRows!==this.Constant_.NO_MAX_ROWS&&(this.boundKeyDownHandler=this.onKeyDown_.bind(this),this.input_.addEventListener("keydown",this.boundKeyDownHandler));var e=this.element_.classList.contains(this.CssClasses_.IS_INVALID);this.updateClasses_(),this.element_.classList.add(this.CssClasses_.IS_UPGRADED),e&&this.element_.classList.add(this.CssClasses_.IS_INVALID),this.input_.hasAttribute("autofocus")&&(this.element_.focus(),this.checkFocus())}},n.register({constructor:v,classAsString:"MaterialTextfield",cssClass:"mdl-js-textfield",widget:!0});/** - * @license - * Copyright 2015 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -var g=function(e){this.element_=e,this.init()};window.MaterialTooltip=g,g.prototype.Constant_={},g.prototype.CssClasses_={IS_ACTIVE:"is-active",BOTTOM:"mdl-tooltip--bottom",LEFT:"mdl-tooltip--left",RIGHT:"mdl-tooltip--right",TOP:"mdl-tooltip--top"},g.prototype.handleMouseEnter_=function(e){var t=e.target.getBoundingClientRect(),n=t.left+t.width/2,r=t.top+t.height/2,o=-1*(this.element_.offsetWidth/2),i=-1*(this.element_.offsetHeight/2);this.element_.classList.contains(this.CssClasses_.LEFT)||this.element_.classList.contains(this.CssClasses_.RIGHT)?(n=t.width/2,r+i<0?(this.element_.style.top="0",this.element_.style.marginTop="0"):(this.element_.style.top=r+"px",this.element_.style.marginTop=i+"px")):n+o<0?(this.element_.style.left="0",this.element_.style.marginLeft="0"):(this.element_.style.left=n+"px",this.element_.style.marginLeft=o+"px"),this.element_.classList.contains(this.CssClasses_.TOP)?this.element_.style.top=t.top-this.element_.offsetHeight-10+"px":this.element_.classList.contains(this.CssClasses_.RIGHT)?this.element_.style.left=t.left+t.width+10+"px":this.element_.classList.contains(this.CssClasses_.LEFT)?this.element_.style.left=t.left-this.element_.offsetWidth-10+"px":this.element_.style.top=t.top+t.height+10+"px",this.element_.classList.add(this.CssClasses_.IS_ACTIVE)},g.prototype.hideTooltip_=function(){this.element_.classList.remove(this.CssClasses_.IS_ACTIVE)},g.prototype.init=function(){if(this.element_){var e=this.element_.getAttribute("for")||this.element_.getAttribute("data-mdl-for");e&&(this.forElement_=document.getElementById(e)),this.forElement_&&(this.forElement_.hasAttribute("tabindex")||this.forElement_.setAttribute("tabindex","0"),this.boundMouseEnterHandler=this.handleMouseEnter_.bind(this),this.boundMouseLeaveAndScrollHandler=this.hideTooltip_.bind(this),this.forElement_.addEventListener("mouseenter",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener("touchend",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener("mouseleave",this.boundMouseLeaveAndScrollHandler,!1),window.addEventListener("scroll",this.boundMouseLeaveAndScrollHandler,!0),window.addEventListener("touchstart",this.boundMouseLeaveAndScrollHandler))}},n.register({constructor:g,classAsString:"MaterialTooltip",cssClass:"mdl-tooltip"});/** - * @license - * Copyright 2015 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -var b=function(e){this.element_=e,this.innerContainer_=e.querySelector("."+this.CssClasses_.INNER_CONTAINER),this.init()};window.MaterialLayout=b,b.prototype.Constant_={MAX_WIDTH:"(max-width: 1024px)",TAB_SCROLL_PIXELS:100,RESIZE_TIMEOUT:100,MENU_ICON:"",CHEVRON_LEFT:"chevron_left",CHEVRON_RIGHT:"chevron_right"},b.prototype.Keycodes_={ENTER:13,ESCAPE:27,SPACE:32},b.prototype.Mode_={STANDARD:0,SEAMED:1,WATERFALL:2,SCROLL:3},b.prototype.CssClasses_={INNER_CONTAINER:"mdl-layout__inner-container",HEADER:"mdl-layout__header",DRAWER:"mdl-layout__drawer",CONTENT:"mdl-layout__content",DRAWER_BTN:"mdl-layout__drawer-button",ICON:"material-icons",JS_RIPPLE_EFFECT:"mdl-js-ripple-effect",RIPPLE_CONTAINER:"mdl-layout__tab-ripple-container",RIPPLE:"mdl-ripple",RIPPLE_IGNORE_EVENTS:"mdl-js-ripple-effect--ignore-events",HEADER_SEAMED:"mdl-layout__header--seamed",HEADER_WATERFALL:"mdl-layout__header--waterfall",HEADER_SCROLL:"mdl-layout__header--scroll",FIXED_HEADER:"mdl-layout--fixed-header",OBFUSCATOR:"mdl-layout__obfuscator",TAB_BAR:"mdl-layout__tab-bar",TAB_CONTAINER:"mdl-layout__tab-bar-container",TAB:"mdl-layout__tab",TAB_BAR_BUTTON:"mdl-layout__tab-bar-button",TAB_BAR_LEFT_BUTTON:"mdl-layout__tab-bar-left-button",TAB_BAR_RIGHT_BUTTON:"mdl-layout__tab-bar-right-button",PANEL:"mdl-layout__tab-panel",HAS_DRAWER:"has-drawer",HAS_TABS:"has-tabs",HAS_SCROLLING_HEADER:"has-scrolling-header",CASTING_SHADOW:"is-casting-shadow",IS_COMPACT:"is-compact",IS_SMALL_SCREEN:"is-small-screen",IS_DRAWER_OPEN:"is-visible",IS_ACTIVE:"is-active",IS_UPGRADED:"is-upgraded",IS_ANIMATING:"is-animating",ON_LARGE_SCREEN:"mdl-layout--large-screen-only",ON_SMALL_SCREEN:"mdl-layout--small-screen-only"},b.prototype.contentScrollHandler_=function(){if(!this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)){var e=!this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN)||this.element_.classList.contains(this.CssClasses_.FIXED_HEADER);this.content_.scrollTop>0&&!this.header_.classList.contains(this.CssClasses_.IS_COMPACT)?(this.header_.classList.add(this.CssClasses_.CASTING_SHADOW),this.header_.classList.add(this.CssClasses_.IS_COMPACT),e&&this.header_.classList.add(this.CssClasses_.IS_ANIMATING)):this.content_.scrollTop<=0&&this.header_.classList.contains(this.CssClasses_.IS_COMPACT)&&(this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW),this.header_.classList.remove(this.CssClasses_.IS_COMPACT),e&&this.header_.classList.add(this.CssClasses_.IS_ANIMATING))}},b.prototype.keyboardEventHandler_=function(e){e.keyCode===this.Keycodes_.ESCAPE&&this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)&&this.toggleDrawer()},b.prototype.screenSizeHandler_=function(){this.screenSizeMediaQuery_.matches?this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN):(this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN),this.drawer_&&(this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN),this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN)))},b.prototype.drawerToggleHandler_=function(e){if(e&&"keydown"===e.type){if(e.keyCode!==this.Keycodes_.SPACE&&e.keyCode!==this.Keycodes_.ENTER)return;e.preventDefault()}this.toggleDrawer()},b.prototype.headerTransitionEndHandler_=function(){this.header_.classList.remove(this.CssClasses_.IS_ANIMATING)},b.prototype.headerClickHandler_=function(){this.header_.classList.contains(this.CssClasses_.IS_COMPACT)&&(this.header_.classList.remove(this.CssClasses_.IS_COMPACT),this.header_.classList.add(this.CssClasses_.IS_ANIMATING))},b.prototype.resetTabState_=function(e){for(var t=0;t0?f.classList.add(this.CssClasses_.IS_ACTIVE):f.classList.remove(this.CssClasses_.IS_ACTIVE),this.tabBar_.scrollLeft0)return;this.setFrameCount(1);var r,o,i=e.currentTarget.getBoundingClientRect();if(0===e.clientX&&0===e.clientY)r=Math.round(i.width/2),o=Math.round(i.height/2);else{var a=e.clientX?e.clientX:e.touches[0].clientX,s=e.clientY?e.clientY:e.touches[0].clientY;r=Math.round(a-i.left),o=Math.round(s-i.top)}this.setRippleXY(r,o),this.setRippleStyles(!0),window.requestAnimationFrame(this.animFrameHandler.bind(this))}},C.prototype.upHandler_=function(e){e&&2!==e.detail&&window.setTimeout(function(){this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE)}.bind(this),0)},C.prototype.init=function(){if(this.element_){var e=this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)||(this.rippleElement_=this.element_.querySelector("."+this.CssClasses_.RIPPLE),this.frameCount_=0,this.rippleSize_=0,this.x_=0,this.y_=0,this.ignoringMouseDown_=!1,this.boundDownHandler=this.downHandler_.bind(this),this.element_.addEventListener("mousedown",this.boundDownHandler),this.element_.addEventListener("touchstart",this.boundDownHandler),this.boundUpHandler=this.upHandler_.bind(this),this.element_.addEventListener("mouseup",this.boundUpHandler),this.element_.addEventListener("mouseleave",this.boundUpHandler),this.element_.addEventListener("touchend",this.boundUpHandler),this.element_.addEventListener("blur",this.boundUpHandler),this.getFrameCount=function(){return this.frameCount_},this.setFrameCount=function(e){this.frameCount_=e},this.getRippleElement=function(){return this.rippleElement_},this.setRippleXY=function(e,t){this.x_=e,this.y_=t},this.setRippleStyles=function(t){if(null!==this.rippleElement_){var n,r,o,i="translate("+this.x_+"px, "+this.y_+"px)";t?(r=this.Constant_.INITIAL_SCALE,o=this.Constant_.INITIAL_SIZE):(r=this.Constant_.FINAL_SCALE,o=this.rippleSize_+"px",e&&(i="translate("+this.boundWidth/2+"px, "+this.boundHeight/2+"px)")),n="translate(-50%, -50%) "+i+r,this.rippleElement_.style.webkitTransform=n,this.rippleElement_.style.msTransform=n,this.rippleElement_.style.transform=n,t?this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING):this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING)}},this.animFrameHandler=function(){this.frameCount_-- >0?window.requestAnimationFrame(this.animFrameHandler.bind(this)):this.setRippleStyles(!1)})}},n.register({constructor:C,classAsString:"MaterialRipple",cssClass:"mdl-js-ripple-effect",widget:!1})}}()},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0}),t.Chip=t.ChipText=t.ChipContact=void 0;var i=Object.assign||function(e){for(var t=1;t=0?p.push(c[f],s.default.createElement(_,{key:"text"},c.slice(0,f).concat(c.slice(f+1)))):p.push(s.default.createElement(_,{key:"text"},a)),r&&p.push(s.default.createElement("button",{key:"btn",type:"button",className:"mdl-chip__action",onClick:r},s.default.createElement(d.default,{name:"cancel"})));var h=n?"button":"span";return s.default.createElement(h,i({className:(0,l.default)("mdl-chip",{"mdl-chip--contact":f>-1,"mdl-chip--deletable":!!r},t),type:n?"button":null,onClick:n},u),p)};y.propTypes=h},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t-1});t.setState({headerSelected:a.length===i.length,selectedRows:a}),e.onSelectionChanged(a)}}()}},{key:"handleChangeHeaderCheckbox",value:function(e){var t=this.props,n=t.rowKeyColumn,r=t.rows,o=t.data,i=e.target.checked,a=i?(r||o).map(function(e,t){return e[n]||e.key||t}):[];this.setState({headerSelected:i,selectedRows:a}),this.props.onSelectionChanged(a)}},{key:"handleChangeRowCheckbox",value:function(e){var t=this.props,n=t.rows,r=t.data,o=JSON.parse(e.target.dataset.reactmdl).id,i=e.target.checked,a=this.state.selectedRows;if(i)a.push(o);else{var s=a.indexOf(o);a.splice(s,1)}this.setState({headerSelected:(n||r).length===a.length,selectedRows:a}),this.props.onSelectionChanged(a)}},{key:"builRowCheckbox",value:function(e,t,n){var r=t[this.props.rowKeyColumn]||t.key||n,o=this.state.selectedRows.indexOf(r)>-1;return f.default.createElement(g.default,{className:"mdl-data-table__select","data-reactmdl":JSON.stringify({id:r}),checked:o,onChange:this.handleChangeRowCheckbox})}},{key:"render",value:function(){var t=this,n=this.props,r=n.rows,i=n.data,a=n.selectable,s=n.children,l=n.rowKeyColumn,c=o(n,["rows","data","selectable","children","rowKeyColumn"]);delete c.onSelectionChanged;var p=a?(r||i).map(function(e,n){var r=e[l]||e.key||n;return u({},e,{className:(0,d.default)({"is-selected":t.state.selectedRows.indexOf(r)>-1},e.className)})}):r||i;return f.default.createElement(e,u({rows:p},c),a&&f.default.createElement(y.default,{name:"mdl-header-select",cellFormatter:this.builRowCheckbox},f.default.createElement(g.default,{className:"mdl-data-table__select",checked:this.state.headerSelected,onChange:this.handleChangeHeaderCheckbox})),s)}}]),n}(f.default.Component);return t.propTypes=b,t.defaultProps=E,t}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function u(e){return{rows:(e.rows||e.data).slice(),sortHeader:null,isAsc:!0}}Object.defineProperty(t,"__esModule",{value:!0});var l=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.UndecoratedTable=void 0;var l=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e){return"undefined"!=typeof e}Object.defineProperty(t,"__esModule",{value:!0});var s=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0}),t.MenuItem=void 0;var l=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}Object.defineProperty(t,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var u=Object.assign||function(e){for(var t=1;t1?"textarea":"input",C=u({className:(0,h.default)("mdl-textfield__input",r),id:b,rows:m,ref:function(t){return e.inputRef=t}},v),T=f.default.createElement(E,C),w=f.default.createElement("label",{className:"mdl-textfield__label",htmlFor:b},p),O=!!a&&f.default.createElement("span",{className:"mdl-textfield__error"},a),P=(0,h.default)("mdl-textfield mdl-js-textfield",{"mdl-textfield--floating-label":c,"mdl-textfield--expandable":s},n);return s?f.default.createElement("div",{className:P,style:_},f.default.createElement("label",{className:"mdl-button mdl-js-button mdl-button--icon",htmlFor:b},f.default.createElement("i",{className:"material-icons"},l)),f.default.createElement("div",{className:"mdl-textfield__expandable-holder"},T,w,O),y):f.default.createElement("div",{className:P,style:_},T,w,O,y)}}]),t}(f.default.Component);v.propTypes=y,t.default=(0,_.default)(v)},function(e,t){"use strict";function n(e,t){var n=t?"-"+t:"";return"mdl-color--"+e+n}function r(e,t){var n=t?"-"+t:"";return"mdl-color-text--"+e+n}Object.defineProperty(t,"__esModule",{value:!0}),t.getColorClass=n,t.getTextColorClass=r},function(e,t,n){function r(e){return e()}var o=n(1),i=n(13),a=n(241),s=o.createFactory(n(386)),u=n(387),l=n(240),c=n(13).unstable_renderSubtreeIntoContainer,f=n(116),p=a.canUseDOM?window.HTMLElement:{},d=a.canUseDOM?document.body:{appendChild:function(){}},h=o.createClass({displayName:"Modal",statics:{setAppElement:function(e){d=u.setElement(e)},injectCSS:function(){}},propTypes:{isOpen:o.PropTypes.bool.isRequired,style:o.PropTypes.shape({content:o.PropTypes.object,overlay:o.PropTypes.object}),portalClassName:o.PropTypes.string,appElement:o.PropTypes.instanceOf(p),onAfterOpen:o.PropTypes.func,onRequestClose:o.PropTypes.func,closeTimeoutMS:o.PropTypes.number,ariaHideApp:o.PropTypes.bool,shouldCloseOnOverlayClick:o.PropTypes.bool,parentSelector:o.PropTypes.func,role:o.PropTypes.string,contentLabel:o.PropTypes.string.isRequired},getDefaultProps:function(){return{isOpen:!1,portalClassName:"ReactModalPortal",ariaHideApp:!0,closeTimeoutMS:0,shouldCloseOnOverlayClick:!0,parentSelector:function(){return document.body}}},componentDidMount:function(){this.node=document.createElement("div"),this.node.className=this.props.portalClassName;var e=r(this.props.parentSelector);e.appendChild(this.node),this.renderPortal(this.props)},componentWillReceiveProps:function(e){var t=r(this.props.parentSelector),n=r(e.parentSelector);n!==t&&(t.removeChild(this.node),n.appendChild(this.node)),this.renderPortal(e)},componentWillUnmount:function(){this.props.ariaHideApp&&u.show(this.props.appElement),i.unmountComponentAtNode(this.node);var e=r(this.props.parentSelector);e.removeChild(this.node),l(document.body).remove("ReactModal__Body--open")},renderPortal:function(e){e.isOpen?l(document.body).add("ReactModal__Body--open"):l(document.body).remove("ReactModal__Body--open"),e.ariaHideApp&&u.toggle(e.isOpen,e.appElement),this.portal=c(this,s(f({},e,{defaultStyles:h.defaultStyles})),this.node)},render:function(){return o.DOM.noscript()}});h.defaultStyles={overlay:{position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(255, 255, 255, 0.75)"},content:{position:"absolute",top:"40px",left:"40px",right:"40px",bottom:"40px",border:"1px solid #ccc",background:"#fff",overflow:"auto",WebkitOverflowScrolling:"touch",borderRadius:"4px",outline:"none",padding:"20px"}},e.exports=h},function(e,t,n){var r=n(1),o=r.DOM.div,i=n(388),a=n(389),s=n(116),u={overlay:{base:"ReactModal__Overlay",afterOpen:"ReactModal__Overlay--after-open",beforeClose:"ReactModal__Overlay--before-close"},content:{base:"ReactModal__Content",afterOpen:"ReactModal__Content--after-open",beforeClose:"ReactModal__Content--before-close"}};e.exports=r.createClass({displayName:"ModalPortal",shouldClose:null,getDefaultProps:function(){return{style:{overlay:{},content:{}}}},getInitialState:function(){return{afterOpen:!1,beforeClose:!1}},componentDidMount:function(){this.props.isOpen&&(this.setFocusAfterRender(!0),this.open())},componentWillUnmount:function(){clearTimeout(this.closeTimer)},componentWillReceiveProps:function(e){!this.props.isOpen&&e.isOpen?(this.setFocusAfterRender(!0),this.open()):this.props.isOpen&&!e.isOpen&&this.close()},componentDidUpdate:function(){this.focusAfterRender&&(this.focusContent(),this.setFocusAfterRender(!1))},setFocusAfterRender:function(e){this.focusAfterRender=e},open:function(){this.state.afterOpen&&this.state.beforeClose?(clearTimeout(this.closeTimer),this.setState({beforeClose:!1})):(i.setupScopedFocus(this.node),i.markForFocusLater(),this.setState({isOpen:!0},function(){this.setState({afterOpen:!0}),this.props.isOpen&&this.props.onAfterOpen&&this.props.onAfterOpen()}.bind(this)))},close:function(){this.ownerHandlesClose()&&(this.props.closeTimeoutMS>0?this.closeWithTimeout():this.closeWithoutTimeout())},focusContent:function(){this.contentHasFocus()||this.refs.content.focus()},closeWithTimeout:function(){this.setState({beforeClose:!0},function(){this.closeTimer=setTimeout(this.closeWithoutTimeout,this.props.closeTimeoutMS)}.bind(this))},closeWithoutTimeout:function(){this.setState({beforeClose:!1,isOpen:!1,afterOpen:!1},this.afterClose)},afterClose:function(){i.returnFocus(),i.teardownScopedFocus()},handleKeyDown:function(e){9==e.keyCode&&a(this.refs.content,e),27==e.keyCode&&(e.preventDefault(),this.requestClose(e))},handleOverlayMouseDown:function(e){null===this.shouldClose&&(this.shouldClose=!0)},handleOverlayMouseUp:function(e){this.shouldClose&&this.props.shouldCloseOnOverlayClick&&(this.ownerHandlesClose()?this.requestClose(e):this.focusContent()),this.shouldClose=null},handleContentMouseDown:function(e){this.shouldClose=!1},handleContentMouseUp:function(e){this.shouldClose=!1},requestClose:function(e){this.ownerHandlesClose()&&this.props.onRequestClose(e)},ownerHandlesClose:function(){return this.props.onRequestClose},shouldBeClosed:function(){return!this.props.isOpen&&!this.state.beforeClose},contentHasFocus:function(){return document.activeElement===this.refs.content||this.refs.content.contains(document.activeElement)},buildClassName:function(e,t){var n=u[e].base;return this.state.afterOpen&&(n+=" "+u[e].afterOpen),this.state.beforeClose&&(n+=" "+u[e].beforeClose),t?n+" "+t:n},render:function(){var e=this.props.className?{}:this.props.defaultStyles.content,t=this.props.overlayClassName?{}:this.props.defaultStyles.overlay;return this.shouldBeClosed()?o():o({ref:"overlay",className:this.buildClassName("overlay",this.props.overlayClassName),style:s({},t,this.props.style.overlay||{}),onMouseDown:this.handleOverlayMouseDown,onMouseUp:this.handleOverlayMouseUp},o({ref:"content",style:s({},e,this.props.style.content||{}),className:this.buildClassName("content",this.props.className),tabIndex:"-1",onKeyDown:this.handleKeyDown,onMouseDown:this.handleContentMouseDown,onMouseUp:this.handleContentMouseUp,role:this.props.role,"aria-label":this.props.contentLabel},this.props.children))}})},function(e,t){function n(e){if("string"==typeof e){var t=document.querySelectorAll(e);e="length"in t?t[0]:t}return u=e||u}function r(e){a(e),(e||u).setAttribute("aria-hidden","true")}function o(e){a(e),(e||u).removeAttribute("aria-hidden")}function i(e,t){e?r(t):o(t)}function a(e){if(!e&&!u)throw new Error("react-modal: You must set an element with `Modal.setAppElement(el)` to make this accessible")}function s(){u=document.body}var u="undefined"!=typeof document?document.body:null;t.toggle=i,t.setElement=n,t.show=o,t.hide=r,t.resetForTesting=s},function(e,t,n){function r(e){u=!0}function o(e){if(u){if(u=!1,!a)return;setTimeout(function(){if(!a.contains(document.activeElement)){var e=i(a)[0]||a;e.focus()}},0)}}var i=n(145),a=null,s=null,u=!1;t.markForFocusLater=function(){s=document.activeElement},t.returnFocus=function(){try{s.focus()}catch(e){console.warn("You tried to return focus to "+s+" but it is not in the DOM anymore")}s=null},t.setupScopedFocus=function(e){a=e,window.addEventListener?(window.addEventListener("blur",r,!1),document.addEventListener("focus",o,!0)):(window.attachEvent("onBlur",r),document.attachEvent("onFocus",o))},t.teardownScopedFocus=function(){a=null,window.addEventListener?(window.removeEventListener("blur",r),document.removeEventListener("focus",o)):(window.detachEvent("onBlur",r),document.detachEvent("onFocus",o))}},function(e,t,n){var r=n(145);e.exports=function(e,t){var n=r(e);if(!n.length)return void t.preventDefault();var o=n[t.shiftKey?0:n.length-1],i=o===document.activeElement||e===document.activeElement;if(i){t.preventDefault();var a=n[t.shiftKey?n.length-1:0];a.focus()}}},function(e,t,n){e.exports=n(385)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}t.__esModule=!0,t.default=void 0;var s=n(1),u=n(146),l=r(u),c=n(147),f=(r(c),function(e){function t(n,r){o(this,t);var a=i(this,e.call(this,n,r));return a.store=n.store,a}return a(t,e),t.prototype.getChildContext=function(){return{store:this.store}},t.prototype.render=function(){return s.Children.only(this.props.children)},t}(s.Component));t.default=f,f.propTypes={store:l.default.isRequired,children:s.PropTypes.element.isRequired},f.childContextTypes={store:l.default.isRequired}},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e){return e.displayName||e.name||"Component"}function u(e,t){try{return e.apply(t)}catch(e){return S.value=e,S}}function l(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},l=Boolean(e),p=e||w,h=void 0;h="function"==typeof t?t:t?(0,y.default)(t):O;var _=n||P,v=r.pure,g=void 0===v||v,b=r.withRef,C=void 0!==b&&b,I=g&&_!==P,A=R++;return function(e){function t(e,t,n){var r=_(e,t,n);return r}var n="Connect("+s(e)+")",r=function(r){function s(e,t){o(this,s);var a=i(this,r.call(this,e,t));a.version=A,a.store=e.store||t.store,(0,T.default)(a.store,'Could not find "store" in either the context or '+('props of "'+n+'". ')+"Either wrap the root component in a , "+('or explicitly pass "store" as a prop to "'+n+'".'));var u=a.store.getState();return a.state={storeState:u},a.clearCache(),a}return a(s,r),s.prototype.shouldComponentUpdate=function(){return!g||this.haveOwnPropsChanged||this.hasStoreStateChanged},s.prototype.computeStateProps=function(e,t){if(!this.finalMapStateToProps)return this.configureFinalMapState(e,t);var n=e.getState(),r=this.doStatePropsDependOnOwnProps?this.finalMapStateToProps(n,t):this.finalMapStateToProps(n);return r},s.prototype.configureFinalMapState=function(e,t){var n=p(e.getState(),t),r="function"==typeof n;return this.finalMapStateToProps=r?n:p,this.doStatePropsDependOnOwnProps=1!==this.finalMapStateToProps.length,r?this.computeStateProps(e,t):n},s.prototype.computeDispatchProps=function(e,t){if(!this.finalMapDispatchToProps)return this.configureFinalMapDispatch(e,t);var n=e.dispatch,r=this.doDispatchPropsDependOnOwnProps?this.finalMapDispatchToProps(n,t):this.finalMapDispatchToProps(n);return r},s.prototype.configureFinalMapDispatch=function(e,t){var n=h(e.dispatch,t),r="function"==typeof n;return this.finalMapDispatchToProps=r?n:h,this.doDispatchPropsDependOnOwnProps=1!==this.finalMapDispatchToProps.length,r?this.computeDispatchProps(e,t):n},s.prototype.updateStatePropsIfNeeded=function(){var e=this.computeStateProps(this.store,this.props);return(!this.stateProps||!(0,m.default)(e,this.stateProps))&&(this.stateProps=e,!0)},s.prototype.updateDispatchPropsIfNeeded=function(){var e=this.computeDispatchProps(this.store,this.props);return(!this.dispatchProps||!(0,m.default)(e,this.dispatchProps))&&(this.dispatchProps=e,!0)},s.prototype.updateMergedPropsIfNeeded=function(){var e=t(this.stateProps,this.dispatchProps,this.props);return!(this.mergedProps&&I&&(0,m.default)(e,this.mergedProps))&&(this.mergedProps=e,!0)},s.prototype.isSubscribed=function(){return"function"==typeof this.unsubscribe},s.prototype.trySubscribe=function(){l&&!this.unsubscribe&&(this.unsubscribe=this.store.subscribe(this.handleChange.bind(this)),this.handleChange())},s.prototype.tryUnsubscribe=function(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=null)},s.prototype.componentDidMount=function(){this.trySubscribe()},s.prototype.componentWillReceiveProps=function(e){g&&(0,m.default)(e,this.props)||(this.haveOwnPropsChanged=!0)},s.prototype.componentWillUnmount=function(){this.tryUnsubscribe(),this.clearCache()},s.prototype.clearCache=function(){this.dispatchProps=null,this.stateProps=null,this.mergedProps=null,this.haveOwnPropsChanged=!0,this.hasStoreStateChanged=!0,this.haveStatePropsBeenPrecalculated=!1,this.statePropsPrecalculationError=null,this.renderedElement=null,this.finalMapDispatchToProps=null,this.finalMapStateToProps=null},s.prototype.handleChange=function(){if(this.unsubscribe){var e=this.store.getState(),t=this.state.storeState;if(!g||t!==e){if(g&&!this.doStatePropsDependOnOwnProps){var n=u(this.updateStatePropsIfNeeded,this);if(!n)return;n===S&&(this.statePropsPrecalculationError=S.value),this.haveStatePropsBeenPrecalculated=!0}this.hasStoreStateChanged=!0,this.setState({storeState:e})}}},s.prototype.getWrappedInstance=function(){return(0,T.default)(C,"To access the wrapped instance, you need to specify { withRef: true } as the fourth argument of the connect() call."),this.refs.wrappedInstance},s.prototype.render=function(){var t=this.haveOwnPropsChanged,n=this.hasStoreStateChanged,r=this.haveStatePropsBeenPrecalculated,o=this.statePropsPrecalculationError,i=this.renderedElement;if(this.haveOwnPropsChanged=!1,this.hasStoreStateChanged=!1,this.haveStatePropsBeenPrecalculated=!1,this.statePropsPrecalculationError=null,o)throw o;var a=!0,s=!0;g&&i&&(a=n||t&&this.doStatePropsDependOnOwnProps,s=t&&this.doDispatchPropsDependOnOwnProps);var u=!1,l=!1;r?u=!0:a&&(u=this.updateStatePropsIfNeeded()),s&&(l=this.updateDispatchPropsIfNeeded());var p=!0;return p=!!(u||l||t)&&this.updateMergedPropsIfNeeded(),!p&&i?i:(C?this.renderedElement=(0,f.createElement)(e,c({},this.mergedProps,{ref:"wrappedInstance"})):this.renderedElement=(0,f.createElement)(e,this.mergedProps),this.renderedElement)},s}(f.Component);return r.displayName=n,r.WrappedComponent=e,r.contextTypes={store:d.default},r.propTypes={store:d.default},(0,E.default)(r,e)}}t.__esModule=!0;var c=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}t.__esModule=!0;var i=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:i.createElement;return function(t,n){return s.reduceRight(function(e,t){return t(e,n)},e(t,n))}};return function(e){return r.reduceRight(function(t,n){return n(t,e)},a.default.createElement(u.default,o({},e,{createElement:l(e.createElement)})))}},e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(261),i=r(o),a=n(153),s=r(a);t.default=(0,s.default)(i.default),e.exports=t.default},function(e,t,n){"use strict";function r(e,t,n){if(!e.path)return!1;var r=(0,i.getParamNames)(e.path);return r.some(function(e){return t.params[e]!==n.params[e]})}function o(e,t){var n=e&&e.routes,o=t.routes,i=void 0,a=void 0,s=void 0;return n?!function(){var u=!1;i=n.filter(function(n){if(u)return!0;var i=o.indexOf(n)===-1||r(n,e,t);return i&&(u=!0),i}),i.reverse(),s=[],a=[],o.forEach(function(e){var t=n.indexOf(e)===-1,r=i.indexOf(e)!==-1;t||r?s.push(e):a.push(e)})}():(i=[],a=[],s=o),{leaveRoutes:i,changeRoutes:a,enterRoutes:s}}t.__esModule=!0;var i=n(34);t.default=o,e.exports=t.default},function(e,t,n){"use strict";function r(e,t,n){if(t.component||t.components)return void n(null,t.component||t.components);var r=t.getComponent||t.getComponents;if(r){var o=r.call(t,e,n);(0,a.isPromise)(o)&&o.then(function(e){return n(null,e)},n)}else n()}function o(e,t){(0,i.mapAsync)(e.routes,function(t,n,o){r(e,t,o)},t)}t.__esModule=!0;var i=n(92),a=n(149);t.default=o,e.exports=t.default},function(e,t,n){"use strict";function r(e,t){var n={};return e.path?((0,o.getParamNames)(e.path).forEach(function(e){Object.prototype.hasOwnProperty.call(t,e)&&(n[e]=t[e])}),n):n}t.__esModule=!0;var o=n(34);t.default=r,e.exports=t.default},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}t.__esModule=!0;var o=n(262),i=r(o),a=n(153),s=r(a);t.default=(0,s.default)(i.default),e.exports=t.default},function(e,t,n){"use strict";function r(e,t){if(e==t)return!0;if(null==e||null==t)return!1;if(Array.isArray(e))return Array.isArray(t)&&e.length===t.length&&e.every(function(e,n){return r(e,t[n])});if("object"===("undefined"==typeof e?"undefined":u(e))){for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n))if(void 0===e[n]){if(void 0!==t[n])return!1}else{if(!Object.prototype.hasOwnProperty.call(t,n))return!1;if(!r(e[n],t[n]))return!1}return!0}return String(e)===String(t)}function o(e,t){return"/"!==t.charAt(0)&&(t="/"+t),"/"!==e.charAt(e.length-1)&&(e+="/"),"/"!==t.charAt(t.length-1)&&(t+="/"),t===e}function i(e,t,n){for(var r=e,o=[],i=[],a=0,s=t.length;a=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function i(e,t){var n=e.history,r=e.routes,i=e.location,u=o(e,["history","routes","location"]);n||i?void 0:(0,l.default)(!1),n=n?n:(0,f.default)(u);var c=(0,d.default)(n,(0,h.createRoutes)(r));i=i?n.createLocation(i):n.getCurrentLocation(),c.match(i,function(e,r,o){var i=void 0;if(o){var u=(0,m.createRouterObject)(n,c,o);i=a({},o,{router:u,matchContext:{transitionManager:c,router:u}})}t(e,r&&n.createLocation(r,s.REPLACE),i)})}t.__esModule=!0;var a=Object.assign||function(e){for(var t=1;t4&&void 0!==arguments[4]?arguments[4]:[],i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[];void 0===r&&("/"!==t.pathname.charAt(0)&&(t=c({},t,{pathname:"/"+t.pathname})),r=t.pathname),(0,p.loopAsync)(e.length,function(n,a,s){u(e[n],t,r,o,i,function(e,t){e||t?s(e,t):a()})},n)}t.__esModule=!0;var c=Object.assign||function(e){for(var t=1;t>"),S={array:a("array"),bool:a("boolean"),func:a("function"),number:a("number"),object:a("object"),string:a("string"),symbol:a("symbol"),any:s(),arrayOf:u,element:l(),instanceOf:c,node:h(),objectOf:p,oneOf:f,oneOfType:d,shape:m};o.prototype=Error.prototype,e.exports=S},function(e,t){"use strict";var n="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";e.exports=n},function(e,t,n){"use strict";function r(e,t,n){this.props=e,this.context=t,this.refs=u,this.updater=n||s}function o(){}var i=n(6),a=n(96),s=n(97),u=n(39);o.prototype=a.prototype,r.prototype=new o,r.prototype.constructor=r,i(r.prototype,a.prototype),r.prototype.isPureReactComponent=!0,e.exports=r},function(e,t){"use strict";e.exports="15.4.1"},function(e,t,n){"use strict";function r(e){return i.isValidElement(e)?void 0:o("143"),e}var o=n(38),i=n(37);n(3);e.exports=r},function(e,t,n){"use strict";function r(e,t){return e&&"object"==typeof e&&null!=e.key?l.escape(e.key):t.toString(36)}function o(e,t,n,i){var p=typeof e;if("undefined"!==p&&"boolean"!==p||(e=null),null===e||"string"===p||"number"===p||"object"===p&&e.$$typeof===s)return n(i,e,""===t?c+r(e,0):t),1;var d,h,m=0,_=""===t?c:t+f;if(Array.isArray(e))for(var y=0;y 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t var argIndex = 0;\n\t var message = 'Warning: ' + format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t });\n\t if (typeof console !== 'undefined') {\n\t console.error(message);\n\t }\n\t try {\n\t // --- Welcome to debugging React ---\n\t // This error was thrown as a convenience so that you can use this stack\n\t // to find the callsite that caused this warning to fire.\n\t throw new Error(message);\n\t } catch (x) {}\n\t };\n\t\n\t warning = function warning(condition, format) {\n\t if (format === undefined) {\n\t throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n\t }\n\t\n\t if (format.indexOf('Failed Composite propType: ') === 0) {\n\t return; // Ignore CompositeComponent proptype check.\n\t }\n\t\n\t if (!condition) {\n\t for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n\t args[_key2 - 2] = arguments[_key2];\n\t }\n\t\n\t printWarning.apply(undefined, [format].concat(args));\n\t }\n\t };\n\t })();\n\t}\n\t\n\tmodule.exports = warning;\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\t/**\n\t * WARNING: DO NOT manually require this module.\n\t * This is a replacement for `invariant(...)` used by the error code system\n\t * and will _only_ be required by the corresponding babel pass.\n\t * It always throws.\n\t */\n\t\n\tfunction reactProdInvariant(code) {\n\t var argCount = arguments.length - 1;\n\t\n\t var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\t\n\t for (var argIdx = 0; argIdx < argCount; argIdx++) {\n\t message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n\t }\n\t\n\t message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\t\n\t var error = new Error(message);\n\t error.name = 'Invariant Violation';\n\t error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\t\n\t throw error;\n\t}\n\t\n\tmodule.exports = reactProdInvariant;\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t/* eslint-disable no-unused-vars */\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\t\n\tfunction toObject(val) {\n\t\tif (val === null || val === undefined) {\n\t\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t\t}\n\t\n\t\treturn Object(val);\n\t}\n\t\n\tfunction shouldUseNative() {\n\t\ttry {\n\t\t\tif (!Object.assign) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// Detect buggy property enumeration order in older V8 versions.\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\t\tvar test1 = new String('abc'); // eslint-disable-line\n\t\t\ttest1[5] = 'de';\n\t\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test2 = {};\n\t\t\tfor (var i = 0; i < 10; i++) {\n\t\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t\t}\n\t\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\t\treturn test2[n];\n\t\t\t});\n\t\t\tif (order2.join('') !== '0123456789') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test3 = {};\n\t\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\t\ttest3[letter] = letter;\n\t\t\t});\n\t\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\t\treturn false;\n\t\t}\n\t}\n\t\n\tmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\t\tvar from;\n\t\tvar to = toObject(target);\n\t\tvar symbols;\n\t\n\t\tfor (var s = 1; s < arguments.length; s++) {\n\t\t\tfrom = Object(arguments[s]);\n\t\n\t\t\tfor (var key in from) {\n\t\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\t\tto[key] = from[key];\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif (Object.getOwnPropertySymbols) {\n\t\t\t\tsymbols = Object.getOwnPropertySymbols(from);\n\t\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn to;\n\t};\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tObject.defineProperty(exports, 'mdlUpgrade', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_mdlUpgrade).default;\n\t }\n\t});\n\t\n\tvar _MDLComponent = __webpack_require__(91);\n\t\n\tObject.defineProperty(exports, 'MDLComponent', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_MDLComponent).default;\n\t }\n\t});\n\t\n\tvar _palette = __webpack_require__(384);\n\t\n\tObject.defineProperty(exports, 'getColorClass', {\n\t enumerable: true,\n\t get: function get() {\n\t return _palette.getColorClass;\n\t }\n\t});\n\tObject.defineProperty(exports, 'getTextColorClass', {\n\t enumerable: true,\n\t get: function get() {\n\t return _palette.getTextColorClass;\n\t }\n\t});\n\t\n\tvar _Badge = __webpack_require__(340);\n\t\n\tObject.defineProperty(exports, 'Badge', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Badge).default;\n\t }\n\t});\n\t\n\tvar _Button = __webpack_require__(88);\n\t\n\tObject.defineProperty(exports, 'Button', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Button).default;\n\t }\n\t});\n\t\n\tvar _Card = __webpack_require__(344);\n\t\n\tObject.defineProperty(exports, 'Card', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Card.Card;\n\t }\n\t});\n\tObject.defineProperty(exports, 'CardTitle', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Card.CardTitle;\n\t }\n\t});\n\tObject.defineProperty(exports, 'CardActions', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Card.CardActions;\n\t }\n\t});\n\tObject.defineProperty(exports, 'CardMedia', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Card.CardMedia;\n\t }\n\t});\n\tObject.defineProperty(exports, 'CardText', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Card.CardText;\n\t }\n\t});\n\tObject.defineProperty(exports, 'CardMenu', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Card.CardMenu;\n\t }\n\t});\n\t\n\tvar _Checkbox = __webpack_require__(138);\n\t\n\tObject.defineProperty(exports, 'Checkbox', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Checkbox).default;\n\t }\n\t});\n\t\n\tvar _Chip = __webpack_require__(345);\n\t\n\tObject.defineProperty(exports, 'Chip', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Chip.Chip;\n\t }\n\t});\n\tObject.defineProperty(exports, 'ChipContact', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Chip.ChipContact;\n\t }\n\t});\n\t\n\tvar _DataTable = __webpack_require__(349);\n\t\n\tObject.defineProperty(exports, 'DataTable', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_DataTable).default;\n\t }\n\t});\n\tObject.defineProperty(exports, 'Table', {\n\t enumerable: true,\n\t get: function get() {\n\t return _DataTable.Table;\n\t }\n\t});\n\tObject.defineProperty(exports, 'TableHeader', {\n\t enumerable: true,\n\t get: function get() {\n\t return _DataTable.TableHeader;\n\t }\n\t});\n\t\n\tvar _Dialog = __webpack_require__(353);\n\t\n\tObject.defineProperty(exports, 'Dialog', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Dialog.Dialog;\n\t }\n\t});\n\tObject.defineProperty(exports, 'DialogTitle', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Dialog.DialogTitle;\n\t }\n\t});\n\tObject.defineProperty(exports, 'DialogContent', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Dialog.DialogContent;\n\t }\n\t});\n\tObject.defineProperty(exports, 'DialogActions', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Dialog.DialogActions;\n\t }\n\t});\n\t\n\tvar _FABButton = __webpack_require__(354);\n\t\n\tObject.defineProperty(exports, 'FABButton', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_FABButton).default;\n\t }\n\t});\n\t\n\tvar _Footer = __webpack_require__(359);\n\t\n\tObject.defineProperty(exports, 'Footer', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Footer.Footer;\n\t }\n\t});\n\tObject.defineProperty(exports, 'FooterSection', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Footer.FooterSection;\n\t }\n\t});\n\tObject.defineProperty(exports, 'FooterDropDownSection', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Footer.FooterDropDownSection;\n\t }\n\t});\n\tObject.defineProperty(exports, 'FooterLinkList', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Footer.FooterLinkList;\n\t }\n\t});\n\t\n\tvar _Grid = __webpack_require__(362);\n\t\n\tObject.defineProperty(exports, 'Grid', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Grid.Grid;\n\t }\n\t});\n\tObject.defineProperty(exports, 'Cell', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Grid.Cell;\n\t }\n\t});\n\t\n\tvar _Icon = __webpack_require__(44);\n\t\n\tObject.defineProperty(exports, 'Icon', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Icon).default;\n\t }\n\t});\n\t\n\tvar _IconButton = __webpack_require__(363);\n\t\n\tObject.defineProperty(exports, 'IconButton', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_IconButton).default;\n\t }\n\t});\n\t\n\tvar _IconToggle = __webpack_require__(364);\n\t\n\tObject.defineProperty(exports, 'IconToggle', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_IconToggle).default;\n\t }\n\t});\n\t\n\tvar _Layout = __webpack_require__(370);\n\t\n\tObject.defineProperty(exports, 'Layout', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Layout.Layout;\n\t }\n\t});\n\tObject.defineProperty(exports, 'Header', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Layout.Header;\n\t }\n\t});\n\tObject.defineProperty(exports, 'Drawer', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Layout.Drawer;\n\t }\n\t});\n\tObject.defineProperty(exports, 'HeaderRow', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Layout.HeaderRow;\n\t }\n\t});\n\tObject.defineProperty(exports, 'HeaderTabs', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Layout.HeaderTabs;\n\t }\n\t});\n\tObject.defineProperty(exports, 'Spacer', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Layout.Spacer;\n\t }\n\t});\n\tObject.defineProperty(exports, 'Navigation', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Layout.Navigation;\n\t }\n\t});\n\tObject.defineProperty(exports, 'Content', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Layout.Content;\n\t }\n\t});\n\t\n\tvar _List = __webpack_require__(373);\n\t\n\tObject.defineProperty(exports, 'List', {\n\t enumerable: true,\n\t get: function get() {\n\t return _List.List;\n\t }\n\t});\n\tObject.defineProperty(exports, 'ListItem', {\n\t enumerable: true,\n\t get: function get() {\n\t return _List.ListItem;\n\t }\n\t});\n\tObject.defineProperty(exports, 'ListItemAction', {\n\t enumerable: true,\n\t get: function get() {\n\t return _List.ListItemAction;\n\t }\n\t});\n\tObject.defineProperty(exports, 'ListItemContent', {\n\t enumerable: true,\n\t get: function get() {\n\t return _List.ListItemContent;\n\t }\n\t});\n\t\n\tvar _Menu = __webpack_require__(374);\n\t\n\tObject.defineProperty(exports, 'Menu', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Menu).default;\n\t }\n\t});\n\tObject.defineProperty(exports, 'MenuItem', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Menu.MenuItem;\n\t }\n\t});\n\t\n\tvar _ProgressBar = __webpack_require__(375);\n\t\n\tObject.defineProperty(exports, 'ProgressBar', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_ProgressBar).default;\n\t }\n\t});\n\t\n\tvar _Radio = __webpack_require__(142);\n\t\n\tObject.defineProperty(exports, 'Radio', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Radio).default;\n\t }\n\t});\n\t\n\tvar _RadioGroup = __webpack_require__(376);\n\t\n\tObject.defineProperty(exports, 'RadioGroup', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_RadioGroup).default;\n\t }\n\t});\n\t\n\tvar _Slider = __webpack_require__(377);\n\t\n\tObject.defineProperty(exports, 'Slider', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Slider).default;\n\t }\n\t});\n\t\n\tvar _Snackbar = __webpack_require__(378);\n\t\n\tObject.defineProperty(exports, 'Snackbar', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Snackbar).default;\n\t }\n\t});\n\t\n\tvar _Spinner = __webpack_require__(379);\n\t\n\tObject.defineProperty(exports, 'Spinner', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Spinner).default;\n\t }\n\t});\n\t\n\tvar _Switch = __webpack_require__(380);\n\t\n\tObject.defineProperty(exports, 'Switch', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Switch).default;\n\t }\n\t});\n\t\n\tvar _Tabs = __webpack_require__(382);\n\t\n\tObject.defineProperty(exports, 'Tabs', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Tabs.Tabs;\n\t }\n\t});\n\tObject.defineProperty(exports, 'Tab', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Tabs.Tab;\n\t }\n\t});\n\tObject.defineProperty(exports, 'TabBar', {\n\t enumerable: true,\n\t get: function get() {\n\t return _Tabs.TabBar;\n\t }\n\t});\n\t\n\tvar _Textfield = __webpack_require__(383);\n\t\n\tObject.defineProperty(exports, 'Textfield', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Textfield).default;\n\t }\n\t});\n\t\n\tvar _Tooltip = __webpack_require__(144);\n\t\n\tObject.defineProperty(exports, 'Tooltip', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Tooltip).default;\n\t }\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar DOMProperty = __webpack_require__(31);\n\tvar ReactDOMComponentFlags = __webpack_require__(121);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\tvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\n\tvar Flags = ReactDOMComponentFlags;\n\t\n\tvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\t\n\t/**\n\t * Drill down (through composites and empty components) until we get a host or\n\t * host text component.\n\t *\n\t * This is pretty polymorphic but unavoidable with the current structure we have\n\t * for `_renderedChildren`.\n\t */\n\tfunction getRenderedHostOrTextFromComponent(component) {\n\t var rendered;\n\t while (rendered = component._renderedComponent) {\n\t component = rendered;\n\t }\n\t return component;\n\t}\n\t\n\t/**\n\t * Populate `_hostNode` on the rendered host/text component with the given\n\t * DOM node. The passed `inst` can be a composite.\n\t */\n\tfunction precacheNode(inst, node) {\n\t var hostInst = getRenderedHostOrTextFromComponent(inst);\n\t hostInst._hostNode = node;\n\t node[internalInstanceKey] = hostInst;\n\t}\n\t\n\tfunction uncacheNode(inst) {\n\t var node = inst._hostNode;\n\t if (node) {\n\t delete node[internalInstanceKey];\n\t inst._hostNode = null;\n\t }\n\t}\n\t\n\t/**\n\t * Populate `_hostNode` on each child of `inst`, assuming that the children\n\t * match up with the DOM (element) children of `node`.\n\t *\n\t * We cache entire levels at once to avoid an n^2 problem where we access the\n\t * children of a node sequentially and have to walk from the start to our target\n\t * node every time.\n\t *\n\t * Since we update `_renderedChildren` and the actual DOM at (slightly)\n\t * different times, we could race here and see a newer `_renderedChildren` than\n\t * the DOM nodes we see. To avoid this, ReactMultiChild calls\n\t * `prepareToManageChildren` before we change `_renderedChildren`, at which\n\t * time the container's child nodes are always cached (until it unmounts).\n\t */\n\tfunction precacheChildNodes(inst, node) {\n\t if (inst._flags & Flags.hasCachedChildNodes) {\n\t return;\n\t }\n\t var children = inst._renderedChildren;\n\t var childNode = node.firstChild;\n\t outer: for (var name in children) {\n\t if (!children.hasOwnProperty(name)) {\n\t continue;\n\t }\n\t var childInst = children[name];\n\t var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n\t if (childID === 0) {\n\t // We're currently unmounting this child in ReactMultiChild; skip it.\n\t continue;\n\t }\n\t // We assume the child nodes are in the same order as the child instances.\n\t for (; childNode !== null; childNode = childNode.nextSibling) {\n\t if (childNode.nodeType === 1 && childNode.getAttribute(ATTR_NAME) === String(childID) || childNode.nodeType === 8 && childNode.nodeValue === ' react-text: ' + childID + ' ' || childNode.nodeType === 8 && childNode.nodeValue === ' react-empty: ' + childID + ' ') {\n\t precacheNode(childInst, childNode);\n\t continue outer;\n\t }\n\t }\n\t // We reached the end of the DOM children without finding an ID match.\n\t true ? false ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n\t }\n\t inst._flags |= Flags.hasCachedChildNodes;\n\t}\n\t\n\t/**\n\t * Given a DOM node, return the closest ReactDOMComponent or\n\t * ReactDOMTextComponent instance ancestor.\n\t */\n\tfunction getClosestInstanceFromNode(node) {\n\t if (node[internalInstanceKey]) {\n\t return node[internalInstanceKey];\n\t }\n\t\n\t // Walk up the tree until we find an ancestor whose instance we have cached.\n\t var parents = [];\n\t while (!node[internalInstanceKey]) {\n\t parents.push(node);\n\t if (node.parentNode) {\n\t node = node.parentNode;\n\t } else {\n\t // Top of the tree. This node must not be part of a React tree (or is\n\t // unmounted, potentially).\n\t return null;\n\t }\n\t }\n\t\n\t var closest;\n\t var inst;\n\t for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n\t closest = inst;\n\t if (parents.length) {\n\t precacheChildNodes(inst, node);\n\t }\n\t }\n\t\n\t return closest;\n\t}\n\t\n\t/**\n\t * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n\t * instance, or null if the node was not rendered by this React.\n\t */\n\tfunction getInstanceFromNode(node) {\n\t var inst = getClosestInstanceFromNode(node);\n\t if (inst != null && inst._hostNode === node) {\n\t return inst;\n\t } else {\n\t return null;\n\t }\n\t}\n\t\n\t/**\n\t * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n\t * DOM node.\n\t */\n\tfunction getNodeFromInstance(inst) {\n\t // Without this first invariant, passing a non-DOM-component triggers the next\n\t // invariant for a missing parent, which is super confusing.\n\t !(inst._hostNode !== undefined) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\t\n\t if (inst._hostNode) {\n\t return inst._hostNode;\n\t }\n\t\n\t // Walk up the tree until we find an ancestor whose DOM node we have cached.\n\t var parents = [];\n\t while (!inst._hostNode) {\n\t parents.push(inst);\n\t !inst._hostParent ? false ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n\t inst = inst._hostParent;\n\t }\n\t\n\t // Now parents contains each ancestor that does *not* have a cached native\n\t // node, and `inst` is the deepest ancestor that does.\n\t for (; parents.length; inst = parents.pop()) {\n\t precacheChildNodes(inst, inst._hostNode);\n\t }\n\t\n\t return inst._hostNode;\n\t}\n\t\n\tvar ReactDOMComponentTree = {\n\t getClosestInstanceFromNode: getClosestInstanceFromNode,\n\t getInstanceFromNode: getInstanceFromNode,\n\t getNodeFromInstance: getNodeFromInstance,\n\t precacheChildNodes: precacheChildNodes,\n\t precacheNode: precacheNode,\n\t uncacheNode: uncacheNode\n\t};\n\t\n\tmodule.exports = ReactDOMComponentTree;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.connect = exports.Provider = undefined;\n\t\n\tvar _Provider = __webpack_require__(391);\n\t\n\tvar _Provider2 = _interopRequireDefault(_Provider);\n\t\n\tvar _connect = __webpack_require__(392);\n\t\n\tvar _connect2 = _interopRequireDefault(_connect);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\texports.Provider = _Provider2[\"default\"];\n\texports.connect = _connect2[\"default\"];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Use invariant() to assert state which your program assumes to be true.\n\t *\n\t * Provide sprintf-style format (only %s is supported) and arguments\n\t * to provide information about what broke and what you were\n\t * expecting.\n\t *\n\t * The invariant message will be stripped in production, but the invariant\n\t * will remain to ensure logic does not differ in production.\n\t */\n\t\n\tvar invariant = function(condition, format, a, b, c, d, e, f) {\n\t if (false) {\n\t if (format === undefined) {\n\t throw new Error('invariant requires an error message argument');\n\t }\n\t }\n\t\n\t if (!condition) {\n\t var error;\n\t if (format === undefined) {\n\t error = new Error(\n\t 'Minified exception occurred; use the non-minified dev environment ' +\n\t 'for the full error message and additional helpful warnings.'\n\t );\n\t } else {\n\t var args = [a, b, c, d, e, f];\n\t var argIndex = 0;\n\t error = new Error(\n\t format.replace(/%s/g, function() { return args[argIndex++]; })\n\t );\n\t error.name = 'Invariant Violation';\n\t }\n\t\n\t error.framesToPop = 1; // we don't care about invariant's own frame\n\t throw error;\n\t }\n\t};\n\t\n\tmodule.exports = invariant;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.createMemoryHistory = exports.hashHistory = exports.browserHistory = exports.applyRouterMiddleware = exports.formatPattern = exports.useRouterHistory = exports.match = exports.routerShape = exports.locationShape = exports.RouterContext = exports.createRoutes = exports.Route = exports.Redirect = exports.IndexRoute = exports.IndexRedirect = exports.withRouter = exports.IndexLink = exports.Link = exports.Router = undefined;\n\t\n\tvar _RouteUtils = __webpack_require__(24);\n\t\n\tObject.defineProperty(exports, 'createRoutes', {\n\t enumerable: true,\n\t get: function get() {\n\t return _RouteUtils.createRoutes;\n\t }\n\t});\n\t\n\tvar _PropTypes = __webpack_require__(94);\n\t\n\tObject.defineProperty(exports, 'locationShape', {\n\t enumerable: true,\n\t get: function get() {\n\t return _PropTypes.locationShape;\n\t }\n\t});\n\tObject.defineProperty(exports, 'routerShape', {\n\t enumerable: true,\n\t get: function get() {\n\t return _PropTypes.routerShape;\n\t }\n\t});\n\t\n\tvar _PatternUtils = __webpack_require__(34);\n\t\n\tObject.defineProperty(exports, 'formatPattern', {\n\t enumerable: true,\n\t get: function get() {\n\t return _PatternUtils.formatPattern;\n\t }\n\t});\n\t\n\tvar _Router2 = __webpack_require__(399);\n\t\n\tvar _Router3 = _interopRequireDefault(_Router2);\n\t\n\tvar _Link2 = __webpack_require__(148);\n\t\n\tvar _Link3 = _interopRequireDefault(_Link2);\n\t\n\tvar _IndexLink2 = __webpack_require__(395);\n\t\n\tvar _IndexLink3 = _interopRequireDefault(_IndexLink2);\n\t\n\tvar _withRouter2 = __webpack_require__(410);\n\t\n\tvar _withRouter3 = _interopRequireDefault(_withRouter2);\n\t\n\tvar _IndexRedirect2 = __webpack_require__(396);\n\t\n\tvar _IndexRedirect3 = _interopRequireDefault(_IndexRedirect2);\n\t\n\tvar _IndexRoute2 = __webpack_require__(397);\n\t\n\tvar _IndexRoute3 = _interopRequireDefault(_IndexRoute2);\n\t\n\tvar _Redirect2 = __webpack_require__(150);\n\t\n\tvar _Redirect3 = _interopRequireDefault(_Redirect2);\n\t\n\tvar _Route2 = __webpack_require__(398);\n\t\n\tvar _Route3 = _interopRequireDefault(_Route2);\n\t\n\tvar _RouterContext2 = __webpack_require__(95);\n\t\n\tvar _RouterContext3 = _interopRequireDefault(_RouterContext2);\n\t\n\tvar _match2 = __webpack_require__(408);\n\t\n\tvar _match3 = _interopRequireDefault(_match2);\n\t\n\tvar _useRouterHistory2 = __webpack_require__(155);\n\t\n\tvar _useRouterHistory3 = _interopRequireDefault(_useRouterHistory2);\n\t\n\tvar _applyRouterMiddleware2 = __webpack_require__(401);\n\t\n\tvar _applyRouterMiddleware3 = _interopRequireDefault(_applyRouterMiddleware2);\n\t\n\tvar _browserHistory2 = __webpack_require__(402);\n\t\n\tvar _browserHistory3 = _interopRequireDefault(_browserHistory2);\n\t\n\tvar _hashHistory2 = __webpack_require__(406);\n\t\n\tvar _hashHistory3 = _interopRequireDefault(_hashHistory2);\n\t\n\tvar _createMemoryHistory2 = __webpack_require__(152);\n\t\n\tvar _createMemoryHistory3 = _interopRequireDefault(_createMemoryHistory2);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.Router = _Router3.default; /* components */\n\t\n\texports.Link = _Link3.default;\n\texports.IndexLink = _IndexLink3.default;\n\texports.withRouter = _withRouter3.default;\n\t\n\t/* components (configuration) */\n\t\n\texports.IndexRedirect = _IndexRedirect3.default;\n\texports.IndexRoute = _IndexRoute3.default;\n\texports.Redirect = _Redirect3.default;\n\texports.Route = _Route3.default;\n\t\n\t/* utils */\n\t\n\texports.RouterContext = _RouterContext3.default;\n\texports.match = _match3.default;\n\texports.useRouterHistory = _useRouterHistory3.default;\n\texports.applyRouterMiddleware = _applyRouterMiddleware3.default;\n\t\n\t/* histories */\n\t\n\texports.browserHistory = _browserHistory3.default;\n\texports.hashHistory = _hashHistory3.default;\n\texports.createMemoryHistory = _createMemoryHistory3.default;\n\n/***/ },\n/* 12 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\t\n\t/**\n\t * Simple, lightweight module assisting with the detection and context of\n\t * Worker. Helps avoid circular dependencies and allows code to reason about\n\t * whether or not they are in a Worker, even if they never include the main\n\t * `ReactWorker` dependency.\n\t */\n\tvar ExecutionEnvironment = {\n\t\n\t canUseDOM: canUseDOM,\n\t\n\t canUseWorkers: typeof Worker !== 'undefined',\n\t\n\t canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\t\n\t canUseViewport: canUseDOM && !!window.screen,\n\t\n\t isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\t\n\t};\n\t\n\tmodule.exports = ExecutionEnvironment;\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = __webpack_require__(288);\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar React = _interopRequireWildcard(_react);\n\t\n\tvar _MDLComponent = __webpack_require__(91);\n\t\n\tvar _MDLComponent2 = _interopRequireDefault(_MDLComponent);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\t\n\tfunction patchComponentClass(Component, recursive) {\n\t var oldRender = Component.prototype.render;\n\t\n\t Component.prototype.render = function render() {\n\t // eslint-disable-line no-param-reassign\n\t return React.createElement(\n\t _MDLComponent2.default,\n\t { recursive: recursive },\n\t oldRender.call(this)\n\t );\n\t };\n\t\n\t return Component;\n\t}\n\t\n\tfunction patchSFC(component, recursive) {\n\t var patchedComponent = function patchedComponent(props) {\n\t return React.createElement(\n\t _MDLComponent2.default,\n\t { recursive: recursive },\n\t component(props)\n\t );\n\t };\n\t\n\t // Attempt to change the function name for easier debugging, but don't die\n\t // if the browser doesn't support it\n\t try {\n\t Object.defineProperty(patchedComponent, 'name', {\n\t value: component.name\n\t });\n\t } catch (e) {} // eslint-disable-line no-empty\n\t\n\t return patchedComponent;\n\t}\n\t\n\texports.default = function (Component) {\n\t var recursive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t return Component.prototype && Component.prototype.isReactComponent ? patchComponentClass(Component, recursive) : patchSFC(Component, recursive);\n\t};\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.ExternalIconLink = exports.IconLink = exports.TogglesLinkList = exports.SwitchWithLabel = exports.FormButtons = exports.HeaderTitle = exports.AppsLinkList = exports.shorten = undefined;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\texports.getIcon = getIcon;\n\texports.calc = calc;\n\t\n\tvar _common = __webpack_require__(243);\n\t\n\tvar _common2 = _interopRequireDefault(_common);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar React = __webpack_require__(1);\n\t\n\tvar _require = __webpack_require__(7),\n\t List = _require.List,\n\t ListItem = _require.ListItem,\n\t ListItemContent = _require.ListItemContent,\n\t Button = _require.Button,\n\t Icon = _require.Icon,\n\t Switch = _require.Switch;\n\t\n\tvar _require2 = __webpack_require__(11),\n\t Link = _require2.Link;\n\t\n\tvar shorten = exports.shorten = function shorten(str) {\n\t var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50;\n\t return str && str.length > len ? str.substring(0, len) + '...' : str;\n\t};\n\t\n\tvar AppsLinkList = exports.AppsLinkList = function AppsLinkList(_ref) {\n\t var apps = _ref.apps;\n\t return React.createElement(\n\t List,\n\t { style: { textAlign: 'left' } },\n\t apps.length > 0 && apps.map(function (_ref2) {\n\t var appName = _ref2.appName,\n\t _ref2$description = _ref2.description,\n\t description = _ref2$description === undefined ? '-' : _ref2$description,\n\t _ref2$icon = _ref2.icon,\n\t icon = _ref2$icon === undefined ? 'apps' : _ref2$icon;\n\t return React.createElement(\n\t ListItem,\n\t { twoLine: true, key: appName },\n\t React.createElement(\n\t ListItemContent,\n\t { avatar: icon, subtitle: shorten(description) },\n\t React.createElement(\n\t Link,\n\t { key: appName, to: '/applications/' + appName },\n\t appName\n\t )\n\t )\n\t );\n\t })\n\t );\n\t};\n\t\n\tvar HeaderTitle = exports.HeaderTitle = function HeaderTitle(_ref3) {\n\t var title = _ref3.title,\n\t actions = _ref3.actions,\n\t subtitle = _ref3.subtitle;\n\t return React.createElement(\n\t 'div',\n\t { style: { display: 'flex', borderBottom: '1px solid #f1f1f1', marginBottom: '10px', padding: '16px 20px ' } },\n\t React.createElement(\n\t 'div',\n\t { style: { flex: '2' } },\n\t React.createElement(\n\t 'h6',\n\t { style: { margin: 0 } },\n\t title\n\t ),\n\t subtitle && React.createElement(\n\t 'small',\n\t null,\n\t subtitle\n\t )\n\t ),\n\t actions && React.createElement(\n\t 'div',\n\t { style: { flex: '1', textAlign: 'right' } },\n\t actions\n\t )\n\t );\n\t};\n\t\n\tvar FormButtons = exports.FormButtons = function FormButtons(_ref4) {\n\t var _ref4$submitText = _ref4.submitText,\n\t submitText = _ref4$submitText === undefined ? 'Create' : _ref4$submitText,\n\t onCancel = _ref4.onCancel;\n\t return React.createElement(\n\t 'div',\n\t null,\n\t React.createElement(\n\t Button,\n\t { type: 'submit', ripple: true, raised: true, primary: true, icon: 'add' },\n\t React.createElement(Icon, { name: 'add' }),\n\t '\\xA0\\xA0\\xA0',\n\t submitText\n\t ),\n\t '\\xA0',\n\t React.createElement(\n\t Button,\n\t { type: 'cancel', ripple: true, raised: true, onClick: onCancel, style: { float: 'right' } },\n\t React.createElement(Icon, { name: 'cancel' }),\n\t '\\xA0\\xA0\\xA0 Cancel'\n\t )\n\t );\n\t};\n\t\n\tvar SwitchWithLabel = exports.SwitchWithLabel = function SwitchWithLabel(_ref5) {\n\t var onChange = _ref5.onChange,\n\t children = _ref5.children,\n\t checked = _ref5.checked;\n\t return React.createElement(\n\t 'span',\n\t null,\n\t React.createElement(\n\t 'span',\n\t { style: { cursor: 'pointer', display: 'inline-block', width: '45px' } },\n\t React.createElement(Switch, { onChange: onChange, checked: checked })\n\t ),\n\t React.createElement(\n\t 'span',\n\t null,\n\t children\n\t )\n\t );\n\t};\n\t\n\tvar TogglesLinkList = exports.TogglesLinkList = function TogglesLinkList(_ref6) {\n\t var toggles = _ref6.toggles;\n\t return React.createElement(\n\t List,\n\t { style: { textAlign: 'left' }, className: _common2.default.truncate },\n\t toggles.length > 0 && toggles.map(function (_ref7) {\n\t var name = _ref7.name,\n\t _ref7$description = _ref7.description,\n\t description = _ref7$description === undefined ? '-' : _ref7$description,\n\t _ref7$icon = _ref7.icon,\n\t icon = _ref7$icon === undefined ? 'toggle' : _ref7$icon;\n\t return React.createElement(\n\t ListItem,\n\t { twoLine: true, key: name },\n\t React.createElement(\n\t ListItemContent,\n\t { avatar: icon, subtitle: description },\n\t React.createElement(\n\t Link,\n\t { key: name, to: '/features/edit/' + name },\n\t name\n\t )\n\t )\n\t );\n\t })\n\t );\n\t};\n\t\n\tfunction getIcon(type) {\n\t switch (type) {\n\t case 'feature-updated':\n\t return 'autorenew';\n\t case 'feature-created':\n\t return 'add';\n\t case 'feature-deleted':\n\t return 'remove';\n\t case 'feature-archived':\n\t return 'archived';\n\t default:\n\t return 'star';\n\t }\n\t};\n\t\n\tvar IconLink = function IconLink(_ref8) {\n\t var icon = _ref8.icon,\n\t children = _ref8.children,\n\t props = _objectWithoutProperties(_ref8, ['icon', 'children']);\n\t\n\t return React.createElement(\n\t 'a',\n\t _extends({}, props, { style: { textDecoration: 'none' } }),\n\t React.createElement(Icon, { name: icon, style: { marginRight: '5px', verticalAlign: 'middle' } }),\n\t React.createElement(\n\t 'span',\n\t { style: { textDecoration: 'none', verticalAlign: 'middle' } },\n\t children\n\t )\n\t );\n\t};\n\t\n\texports.IconLink = IconLink;\n\tvar ExternalIconLink = exports.ExternalIconLink = function ExternalIconLink(_ref9) {\n\t var url = _ref9.url,\n\t children = _ref9.children;\n\t return React.createElement(\n\t IconLink,\n\t { icon: 'queue', href: url, target: '_blank', rel: 'noopener' },\n\t children\n\t );\n\t};\n\t\n\tvar badNumbers = [NaN, Infinity, -Infinity];\n\tfunction calc(value, total, decimal) {\n\t if (typeof value !== 'number' || typeof total !== 'number' || typeof decimal !== 'number') {\n\t return null;\n\t }\n\t\n\t if (total === 0) {\n\t return 0;\n\t }\n\t\n\t badNumbers.forEach(function (number) {\n\t if ([value, total, decimal].indexOf(number) > -1) {\n\t return number;\n\t }\n\t });\n\t\n\t return (value / total * 100).toFixed(decimal);\n\t};\n\n/***/ },\n/* 16 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\tfunction makeEmptyFunction(arg) {\n\t return function () {\n\t return arg;\n\t };\n\t}\n\t\n\t/**\n\t * This function accepts and discards inputs; it has no side effects. This is\n\t * primarily useful idiomatically for overridable function endpoints which\n\t * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n\t */\n\tvar emptyFunction = function emptyFunction() {};\n\t\n\temptyFunction.thatReturns = makeEmptyFunction;\n\temptyFunction.thatReturnsFalse = makeEmptyFunction(false);\n\temptyFunction.thatReturnsTrue = makeEmptyFunction(true);\n\temptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\temptyFunction.thatReturnsThis = function () {\n\t return this;\n\t};\n\temptyFunction.thatReturnsArgument = function (arg) {\n\t return arg;\n\t};\n\t\n\tmodule.exports = emptyFunction;\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2014-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t(function (global, factory) {\n\t true ? module.exports = factory() :\n\t typeof define === 'function' && define.amd ? define(factory) :\n\t (global.Immutable = factory());\n\t}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\t\n\t function createClass(ctor, superClass) {\n\t if (superClass) {\n\t ctor.prototype = Object.create(superClass.prototype);\n\t }\n\t ctor.prototype.constructor = ctor;\n\t }\n\t\n\t function Iterable(value) {\n\t return isIterable(value) ? value : Seq(value);\n\t }\n\t\n\t\n\t createClass(KeyedIterable, Iterable);\n\t function KeyedIterable(value) {\n\t return isKeyed(value) ? value : KeyedSeq(value);\n\t }\n\t\n\t\n\t createClass(IndexedIterable, Iterable);\n\t function IndexedIterable(value) {\n\t return isIndexed(value) ? value : IndexedSeq(value);\n\t }\n\t\n\t\n\t createClass(SetIterable, Iterable);\n\t function SetIterable(value) {\n\t return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n\t }\n\t\n\t\n\t\n\t function isIterable(maybeIterable) {\n\t return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n\t }\n\t\n\t function isKeyed(maybeKeyed) {\n\t return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n\t }\n\t\n\t function isIndexed(maybeIndexed) {\n\t return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n\t }\n\t\n\t function isAssociative(maybeAssociative) {\n\t return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n\t }\n\t\n\t function isOrdered(maybeOrdered) {\n\t return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n\t }\n\t\n\t Iterable.isIterable = isIterable;\n\t Iterable.isKeyed = isKeyed;\n\t Iterable.isIndexed = isIndexed;\n\t Iterable.isAssociative = isAssociative;\n\t Iterable.isOrdered = isOrdered;\n\t\n\t Iterable.Keyed = KeyedIterable;\n\t Iterable.Indexed = IndexedIterable;\n\t Iterable.Set = SetIterable;\n\t\n\t\n\t var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n\t var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n\t var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n\t var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\t\n\t // Used for setting prototype methods that IE8 chokes on.\n\t var DELETE = 'delete';\n\t\n\t // Constants describing the size of trie nodes.\n\t var SHIFT = 5; // Resulted in best performance after ______?\n\t var SIZE = 1 << SHIFT;\n\t var MASK = SIZE - 1;\n\t\n\t // A consistent shared value representing \"not set\" which equals nothing other\n\t // than itself, and nothing that could be provided externally.\n\t var NOT_SET = {};\n\t\n\t // Boolean references, Rough equivalent of `bool &`.\n\t var CHANGE_LENGTH = { value: false };\n\t var DID_ALTER = { value: false };\n\t\n\t function MakeRef(ref) {\n\t ref.value = false;\n\t return ref;\n\t }\n\t\n\t function SetRef(ref) {\n\t ref && (ref.value = true);\n\t }\n\t\n\t // A function which returns a value representing an \"owner\" for transient writes\n\t // to tries. The return value will only ever equal itself, and will not equal\n\t // the return of any subsequent call of this function.\n\t function OwnerID() {}\n\t\n\t // http://jsperf.com/copy-array-inline\n\t function arrCopy(arr, offset) {\n\t offset = offset || 0;\n\t var len = Math.max(0, arr.length - offset);\n\t var newArr = new Array(len);\n\t for (var ii = 0; ii < len; ii++) {\n\t newArr[ii] = arr[ii + offset];\n\t }\n\t return newArr;\n\t }\n\t\n\t function ensureSize(iter) {\n\t if (iter.size === undefined) {\n\t iter.size = iter.__iterate(returnTrue);\n\t }\n\t return iter.size;\n\t }\n\t\n\t function wrapIndex(iter, index) {\n\t // This implements \"is array index\" which the ECMAString spec defines as:\n\t //\n\t // A String property name P is an array index if and only if\n\t // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n\t // to 2^32−1.\n\t //\n\t // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n\t if (typeof index !== 'number') {\n\t var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n\t if ('' + uint32Index !== index || uint32Index === 4294967295) {\n\t return NaN;\n\t }\n\t index = uint32Index;\n\t }\n\t return index < 0 ? ensureSize(iter) + index : index;\n\t }\n\t\n\t function returnTrue() {\n\t return true;\n\t }\n\t\n\t function wholeSlice(begin, end, size) {\n\t return (begin === 0 || (size !== undefined && begin <= -size)) &&\n\t (end === undefined || (size !== undefined && end >= size));\n\t }\n\t\n\t function resolveBegin(begin, size) {\n\t return resolveIndex(begin, size, 0);\n\t }\n\t\n\t function resolveEnd(end, size) {\n\t return resolveIndex(end, size, size);\n\t }\n\t\n\t function resolveIndex(index, size, defaultIndex) {\n\t return index === undefined ?\n\t defaultIndex :\n\t index < 0 ?\n\t Math.max(0, size + index) :\n\t size === undefined ?\n\t index :\n\t Math.min(size, index);\n\t }\n\t\n\t /* global Symbol */\n\t\n\t var ITERATE_KEYS = 0;\n\t var ITERATE_VALUES = 1;\n\t var ITERATE_ENTRIES = 2;\n\t\n\t var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n\t var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\t\n\t var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\t\n\t\n\t function Iterator(next) {\n\t this.next = next;\n\t }\n\t\n\t Iterator.prototype.toString = function() {\n\t return '[Iterator]';\n\t };\n\t\n\t\n\t Iterator.KEYS = ITERATE_KEYS;\n\t Iterator.VALUES = ITERATE_VALUES;\n\t Iterator.ENTRIES = ITERATE_ENTRIES;\n\t\n\t Iterator.prototype.inspect =\n\t Iterator.prototype.toSource = function () { return this.toString(); }\n\t Iterator.prototype[ITERATOR_SYMBOL] = function () {\n\t return this;\n\t };\n\t\n\t\n\t function iteratorValue(type, k, v, iteratorResult) {\n\t var value = type === 0 ? k : type === 1 ? v : [k, v];\n\t iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n\t value: value, done: false\n\t });\n\t return iteratorResult;\n\t }\n\t\n\t function iteratorDone() {\n\t return { value: undefined, done: true };\n\t }\n\t\n\t function hasIterator(maybeIterable) {\n\t return !!getIteratorFn(maybeIterable);\n\t }\n\t\n\t function isIterator(maybeIterator) {\n\t return maybeIterator && typeof maybeIterator.next === 'function';\n\t }\n\t\n\t function getIterator(iterable) {\n\t var iteratorFn = getIteratorFn(iterable);\n\t return iteratorFn && iteratorFn.call(iterable);\n\t }\n\t\n\t function getIteratorFn(iterable) {\n\t var iteratorFn = iterable && (\n\t (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n\t iterable[FAUX_ITERATOR_SYMBOL]\n\t );\n\t if (typeof iteratorFn === 'function') {\n\t return iteratorFn;\n\t }\n\t }\n\t\n\t function isArrayLike(value) {\n\t return value && typeof value.length === 'number';\n\t }\n\t\n\t createClass(Seq, Iterable);\n\t function Seq(value) {\n\t return value === null || value === undefined ? emptySequence() :\n\t isIterable(value) ? value.toSeq() : seqFromValue(value);\n\t }\n\t\n\t Seq.of = function(/*...values*/) {\n\t return Seq(arguments);\n\t };\n\t\n\t Seq.prototype.toSeq = function() {\n\t return this;\n\t };\n\t\n\t Seq.prototype.toString = function() {\n\t return this.__toString('Seq {', '}');\n\t };\n\t\n\t Seq.prototype.cacheResult = function() {\n\t if (!this._cache && this.__iterateUncached) {\n\t this._cache = this.entrySeq().toArray();\n\t this.size = this._cache.length;\n\t }\n\t return this;\n\t };\n\t\n\t // abstract __iterateUncached(fn, reverse)\n\t\n\t Seq.prototype.__iterate = function(fn, reverse) {\n\t return seqIterate(this, fn, reverse, true);\n\t };\n\t\n\t // abstract __iteratorUncached(type, reverse)\n\t\n\t Seq.prototype.__iterator = function(type, reverse) {\n\t return seqIterator(this, type, reverse, true);\n\t };\n\t\n\t\n\t\n\t createClass(KeyedSeq, Seq);\n\t function KeyedSeq(value) {\n\t return value === null || value === undefined ?\n\t emptySequence().toKeyedSeq() :\n\t isIterable(value) ?\n\t (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n\t keyedSeqFromValue(value);\n\t }\n\t\n\t KeyedSeq.prototype.toKeyedSeq = function() {\n\t return this;\n\t };\n\t\n\t\n\t\n\t createClass(IndexedSeq, Seq);\n\t function IndexedSeq(value) {\n\t return value === null || value === undefined ? emptySequence() :\n\t !isIterable(value) ? indexedSeqFromValue(value) :\n\t isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n\t }\n\t\n\t IndexedSeq.of = function(/*...values*/) {\n\t return IndexedSeq(arguments);\n\t };\n\t\n\t IndexedSeq.prototype.toIndexedSeq = function() {\n\t return this;\n\t };\n\t\n\t IndexedSeq.prototype.toString = function() {\n\t return this.__toString('Seq [', ']');\n\t };\n\t\n\t IndexedSeq.prototype.__iterate = function(fn, reverse) {\n\t return seqIterate(this, fn, reverse, false);\n\t };\n\t\n\t IndexedSeq.prototype.__iterator = function(type, reverse) {\n\t return seqIterator(this, type, reverse, false);\n\t };\n\t\n\t\n\t\n\t createClass(SetSeq, Seq);\n\t function SetSeq(value) {\n\t return (\n\t value === null || value === undefined ? emptySequence() :\n\t !isIterable(value) ? indexedSeqFromValue(value) :\n\t isKeyed(value) ? value.entrySeq() : value\n\t ).toSetSeq();\n\t }\n\t\n\t SetSeq.of = function(/*...values*/) {\n\t return SetSeq(arguments);\n\t };\n\t\n\t SetSeq.prototype.toSetSeq = function() {\n\t return this;\n\t };\n\t\n\t\n\t\n\t Seq.isSeq = isSeq;\n\t Seq.Keyed = KeyedSeq;\n\t Seq.Set = SetSeq;\n\t Seq.Indexed = IndexedSeq;\n\t\n\t var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\t\n\t Seq.prototype[IS_SEQ_SENTINEL] = true;\n\t\n\t\n\t\n\t createClass(ArraySeq, IndexedSeq);\n\t function ArraySeq(array) {\n\t this._array = array;\n\t this.size = array.length;\n\t }\n\t\n\t ArraySeq.prototype.get = function(index, notSetValue) {\n\t return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n\t };\n\t\n\t ArraySeq.prototype.__iterate = function(fn, reverse) {\n\t var array = this._array;\n\t var maxIndex = array.length - 1;\n\t for (var ii = 0; ii <= maxIndex; ii++) {\n\t if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n\t return ii + 1;\n\t }\n\t }\n\t return ii;\n\t };\n\t\n\t ArraySeq.prototype.__iterator = function(type, reverse) {\n\t var array = this._array;\n\t var maxIndex = array.length - 1;\n\t var ii = 0;\n\t return new Iterator(function() \n\t {return ii > maxIndex ?\n\t iteratorDone() :\n\t iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n\t );\n\t };\n\t\n\t\n\t\n\t createClass(ObjectSeq, KeyedSeq);\n\t function ObjectSeq(object) {\n\t var keys = Object.keys(object);\n\t this._object = object;\n\t this._keys = keys;\n\t this.size = keys.length;\n\t }\n\t\n\t ObjectSeq.prototype.get = function(key, notSetValue) {\n\t if (notSetValue !== undefined && !this.has(key)) {\n\t return notSetValue;\n\t }\n\t return this._object[key];\n\t };\n\t\n\t ObjectSeq.prototype.has = function(key) {\n\t return this._object.hasOwnProperty(key);\n\t };\n\t\n\t ObjectSeq.prototype.__iterate = function(fn, reverse) {\n\t var object = this._object;\n\t var keys = this._keys;\n\t var maxIndex = keys.length - 1;\n\t for (var ii = 0; ii <= maxIndex; ii++) {\n\t var key = keys[reverse ? maxIndex - ii : ii];\n\t if (fn(object[key], key, this) === false) {\n\t return ii + 1;\n\t }\n\t }\n\t return ii;\n\t };\n\t\n\t ObjectSeq.prototype.__iterator = function(type, reverse) {\n\t var object = this._object;\n\t var keys = this._keys;\n\t var maxIndex = keys.length - 1;\n\t var ii = 0;\n\t return new Iterator(function() {\n\t var key = keys[reverse ? maxIndex - ii : ii];\n\t return ii++ > maxIndex ?\n\t iteratorDone() :\n\t iteratorValue(type, key, object[key]);\n\t });\n\t };\n\t\n\t ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\t\n\t\n\t createClass(IterableSeq, IndexedSeq);\n\t function IterableSeq(iterable) {\n\t this._iterable = iterable;\n\t this.size = iterable.length || iterable.size;\n\t }\n\t\n\t IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n\t if (reverse) {\n\t return this.cacheResult().__iterate(fn, reverse);\n\t }\n\t var iterable = this._iterable;\n\t var iterator = getIterator(iterable);\n\t var iterations = 0;\n\t if (isIterator(iterator)) {\n\t var step;\n\t while (!(step = iterator.next()).done) {\n\t if (fn(step.value, iterations++, this) === false) {\n\t break;\n\t }\n\t }\n\t }\n\t return iterations;\n\t };\n\t\n\t IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n\t if (reverse) {\n\t return this.cacheResult().__iterator(type, reverse);\n\t }\n\t var iterable = this._iterable;\n\t var iterator = getIterator(iterable);\n\t if (!isIterator(iterator)) {\n\t return new Iterator(iteratorDone);\n\t }\n\t var iterations = 0;\n\t return new Iterator(function() {\n\t var step = iterator.next();\n\t return step.done ? step : iteratorValue(type, iterations++, step.value);\n\t });\n\t };\n\t\n\t\n\t\n\t createClass(IteratorSeq, IndexedSeq);\n\t function IteratorSeq(iterator) {\n\t this._iterator = iterator;\n\t this._iteratorCache = [];\n\t }\n\t\n\t IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n\t if (reverse) {\n\t return this.cacheResult().__iterate(fn, reverse);\n\t }\n\t var iterator = this._iterator;\n\t var cache = this._iteratorCache;\n\t var iterations = 0;\n\t while (iterations < cache.length) {\n\t if (fn(cache[iterations], iterations++, this) === false) {\n\t return iterations;\n\t }\n\t }\n\t var step;\n\t while (!(step = iterator.next()).done) {\n\t var val = step.value;\n\t cache[iterations] = val;\n\t if (fn(val, iterations++, this) === false) {\n\t break;\n\t }\n\t }\n\t return iterations;\n\t };\n\t\n\t IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n\t if (reverse) {\n\t return this.cacheResult().__iterator(type, reverse);\n\t }\n\t var iterator = this._iterator;\n\t var cache = this._iteratorCache;\n\t var iterations = 0;\n\t return new Iterator(function() {\n\t if (iterations >= cache.length) {\n\t var step = iterator.next();\n\t if (step.done) {\n\t return step;\n\t }\n\t cache[iterations] = step.value;\n\t }\n\t return iteratorValue(type, iterations, cache[iterations++]);\n\t });\n\t };\n\t\n\t\n\t\n\t\n\t // # pragma Helper functions\n\t\n\t function isSeq(maybeSeq) {\n\t return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n\t }\n\t\n\t var EMPTY_SEQ;\n\t\n\t function emptySequence() {\n\t return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n\t }\n\t\n\t function keyedSeqFromValue(value) {\n\t var seq =\n\t Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n\t isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n\t hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n\t typeof value === 'object' ? new ObjectSeq(value) :\n\t undefined;\n\t if (!seq) {\n\t throw new TypeError(\n\t 'Expected Array or iterable object of [k, v] entries, '+\n\t 'or keyed object: ' + value\n\t );\n\t }\n\t return seq;\n\t }\n\t\n\t function indexedSeqFromValue(value) {\n\t var seq = maybeIndexedSeqFromValue(value);\n\t if (!seq) {\n\t throw new TypeError(\n\t 'Expected Array or iterable object of values: ' + value\n\t );\n\t }\n\t return seq;\n\t }\n\t\n\t function seqFromValue(value) {\n\t var seq = maybeIndexedSeqFromValue(value) ||\n\t (typeof value === 'object' && new ObjectSeq(value));\n\t if (!seq) {\n\t throw new TypeError(\n\t 'Expected Array or iterable object of values, or keyed object: ' + value\n\t );\n\t }\n\t return seq;\n\t }\n\t\n\t function maybeIndexedSeqFromValue(value) {\n\t return (\n\t isArrayLike(value) ? new ArraySeq(value) :\n\t isIterator(value) ? new IteratorSeq(value) :\n\t hasIterator(value) ? new IterableSeq(value) :\n\t undefined\n\t );\n\t }\n\t\n\t function seqIterate(seq, fn, reverse, useKeys) {\n\t var cache = seq._cache;\n\t if (cache) {\n\t var maxIndex = cache.length - 1;\n\t for (var ii = 0; ii <= maxIndex; ii++) {\n\t var entry = cache[reverse ? maxIndex - ii : ii];\n\t if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n\t return ii + 1;\n\t }\n\t }\n\t return ii;\n\t }\n\t return seq.__iterateUncached(fn, reverse);\n\t }\n\t\n\t function seqIterator(seq, type, reverse, useKeys) {\n\t var cache = seq._cache;\n\t if (cache) {\n\t var maxIndex = cache.length - 1;\n\t var ii = 0;\n\t return new Iterator(function() {\n\t var entry = cache[reverse ? maxIndex - ii : ii];\n\t return ii++ > maxIndex ?\n\t iteratorDone() :\n\t iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n\t });\n\t }\n\t return seq.__iteratorUncached(type, reverse);\n\t }\n\t\n\t function fromJS(json, converter) {\n\t return converter ?\n\t fromJSWith(converter, json, '', {'': json}) :\n\t fromJSDefault(json);\n\t }\n\t\n\t function fromJSWith(converter, json, key, parentJSON) {\n\t if (Array.isArray(json)) {\n\t return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n\t }\n\t if (isPlainObj(json)) {\n\t return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n\t }\n\t return json;\n\t }\n\t\n\t function fromJSDefault(json) {\n\t if (Array.isArray(json)) {\n\t return IndexedSeq(json).map(fromJSDefault).toList();\n\t }\n\t if (isPlainObj(json)) {\n\t return KeyedSeq(json).map(fromJSDefault).toMap();\n\t }\n\t return json;\n\t }\n\t\n\t function isPlainObj(value) {\n\t return value && (value.constructor === Object || value.constructor === undefined);\n\t }\n\t\n\t /**\n\t * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n\t * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n\t *\n\t * NaN is considered the same as NaN, however -0 and 0 are considered the same\n\t * value, which is different from the algorithm described by\n\t * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n\t *\n\t * This is extended further to allow Objects to describe the values they\n\t * represent, by way of `valueOf` or `equals` (and `hashCode`).\n\t *\n\t * Note: because of this extension, the key equality of Immutable.Map and the\n\t * value equality of Immutable.Set will differ from ES6 Map and Set.\n\t *\n\t * ### Defining custom values\n\t *\n\t * The easiest way to describe the value an object represents is by implementing\n\t * `valueOf`. For example, `Date` represents a value by returning a unix\n\t * timestamp for `valueOf`:\n\t *\n\t * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n\t * var date2 = new Date(1234567890000);\n\t * date1.valueOf(); // 1234567890000\n\t * assert( date1 !== date2 );\n\t * assert( Immutable.is( date1, date2 ) );\n\t *\n\t * Note: overriding `valueOf` may have other implications if you use this object\n\t * where JavaScript expects a primitive, such as implicit string coercion.\n\t *\n\t * For more complex types, especially collections, implementing `valueOf` may\n\t * not be performant. An alternative is to implement `equals` and `hashCode`.\n\t *\n\t * `equals` takes another object, presumably of similar type, and returns true\n\t * if the it is equal. Equality is symmetrical, so the same result should be\n\t * returned if this and the argument are flipped.\n\t *\n\t * assert( a.equals(b) === b.equals(a) );\n\t *\n\t * `hashCode` returns a 32bit integer number representing the object which will\n\t * be used to determine how to store the value object in a Map or Set. You must\n\t * provide both or neither methods, one must not exist without the other.\n\t *\n\t * Also, an important relationship between these methods must be upheld: if two\n\t * values are equal, they *must* return the same hashCode. If the values are not\n\t * equal, they might have the same hashCode; this is called a hash collision,\n\t * and while undesirable for performance reasons, it is acceptable.\n\t *\n\t * if (a.equals(b)) {\n\t * assert( a.hashCode() === b.hashCode() );\n\t * }\n\t *\n\t * All Immutable collections implement `equals` and `hashCode`.\n\t *\n\t */\n\t function is(valueA, valueB) {\n\t if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n\t return true;\n\t }\n\t if (!valueA || !valueB) {\n\t return false;\n\t }\n\t if (typeof valueA.valueOf === 'function' &&\n\t typeof valueB.valueOf === 'function') {\n\t valueA = valueA.valueOf();\n\t valueB = valueB.valueOf();\n\t if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n\t return true;\n\t }\n\t if (!valueA || !valueB) {\n\t return false;\n\t }\n\t }\n\t if (typeof valueA.equals === 'function' &&\n\t typeof valueB.equals === 'function' &&\n\t valueA.equals(valueB)) {\n\t return true;\n\t }\n\t return false;\n\t }\n\t\n\t function deepEqual(a, b) {\n\t if (a === b) {\n\t return true;\n\t }\n\t\n\t if (\n\t !isIterable(b) ||\n\t a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n\t a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n\t isKeyed(a) !== isKeyed(b) ||\n\t isIndexed(a) !== isIndexed(b) ||\n\t isOrdered(a) !== isOrdered(b)\n\t ) {\n\t return false;\n\t }\n\t\n\t if (a.size === 0 && b.size === 0) {\n\t return true;\n\t }\n\t\n\t var notAssociative = !isAssociative(a);\n\t\n\t if (isOrdered(a)) {\n\t var entries = a.entries();\n\t return b.every(function(v, k) {\n\t var entry = entries.next().value;\n\t return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n\t }) && entries.next().done;\n\t }\n\t\n\t var flipped = false;\n\t\n\t if (a.size === undefined) {\n\t if (b.size === undefined) {\n\t if (typeof a.cacheResult === 'function') {\n\t a.cacheResult();\n\t }\n\t } else {\n\t flipped = true;\n\t var _ = a;\n\t a = b;\n\t b = _;\n\t }\n\t }\n\t\n\t var allEqual = true;\n\t var bSize = b.__iterate(function(v, k) {\n\t if (notAssociative ? !a.has(v) :\n\t flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n\t allEqual = false;\n\t return false;\n\t }\n\t });\n\t\n\t return allEqual && a.size === bSize;\n\t }\n\t\n\t createClass(Repeat, IndexedSeq);\n\t\n\t function Repeat(value, times) {\n\t if (!(this instanceof Repeat)) {\n\t return new Repeat(value, times);\n\t }\n\t this._value = value;\n\t this.size = times === undefined ? Infinity : Math.max(0, times);\n\t if (this.size === 0) {\n\t if (EMPTY_REPEAT) {\n\t return EMPTY_REPEAT;\n\t }\n\t EMPTY_REPEAT = this;\n\t }\n\t }\n\t\n\t Repeat.prototype.toString = function() {\n\t if (this.size === 0) {\n\t return 'Repeat []';\n\t }\n\t return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n\t };\n\t\n\t Repeat.prototype.get = function(index, notSetValue) {\n\t return this.has(index) ? this._value : notSetValue;\n\t };\n\t\n\t Repeat.prototype.includes = function(searchValue) {\n\t return is(this._value, searchValue);\n\t };\n\t\n\t Repeat.prototype.slice = function(begin, end) {\n\t var size = this.size;\n\t return wholeSlice(begin, end, size) ? this :\n\t new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n\t };\n\t\n\t Repeat.prototype.reverse = function() {\n\t return this;\n\t };\n\t\n\t Repeat.prototype.indexOf = function(searchValue) {\n\t if (is(this._value, searchValue)) {\n\t return 0;\n\t }\n\t return -1;\n\t };\n\t\n\t Repeat.prototype.lastIndexOf = function(searchValue) {\n\t if (is(this._value, searchValue)) {\n\t return this.size;\n\t }\n\t return -1;\n\t };\n\t\n\t Repeat.prototype.__iterate = function(fn, reverse) {\n\t for (var ii = 0; ii < this.size; ii++) {\n\t if (fn(this._value, ii, this) === false) {\n\t return ii + 1;\n\t }\n\t }\n\t return ii;\n\t };\n\t\n\t Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n\t var ii = 0;\n\t return new Iterator(function() \n\t {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n\t );\n\t };\n\t\n\t Repeat.prototype.equals = function(other) {\n\t return other instanceof Repeat ?\n\t is(this._value, other._value) :\n\t deepEqual(other);\n\t };\n\t\n\t\n\t var EMPTY_REPEAT;\n\t\n\t function invariant(condition, error) {\n\t if (!condition) throw new Error(error);\n\t }\n\t\n\t createClass(Range, IndexedSeq);\n\t\n\t function Range(start, end, step) {\n\t if (!(this instanceof Range)) {\n\t return new Range(start, end, step);\n\t }\n\t invariant(step !== 0, 'Cannot step a Range by 0');\n\t start = start || 0;\n\t if (end === undefined) {\n\t end = Infinity;\n\t }\n\t step = step === undefined ? 1 : Math.abs(step);\n\t if (end < start) {\n\t step = -step;\n\t }\n\t this._start = start;\n\t this._end = end;\n\t this._step = step;\n\t this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n\t if (this.size === 0) {\n\t if (EMPTY_RANGE) {\n\t return EMPTY_RANGE;\n\t }\n\t EMPTY_RANGE = this;\n\t }\n\t }\n\t\n\t Range.prototype.toString = function() {\n\t if (this.size === 0) {\n\t return 'Range []';\n\t }\n\t return 'Range [ ' +\n\t this._start + '...' + this._end +\n\t (this._step !== 1 ? ' by ' + this._step : '') +\n\t ' ]';\n\t };\n\t\n\t Range.prototype.get = function(index, notSetValue) {\n\t return this.has(index) ?\n\t this._start + wrapIndex(this, index) * this._step :\n\t notSetValue;\n\t };\n\t\n\t Range.prototype.includes = function(searchValue) {\n\t var possibleIndex = (searchValue - this._start) / this._step;\n\t return possibleIndex >= 0 &&\n\t possibleIndex < this.size &&\n\t possibleIndex === Math.floor(possibleIndex);\n\t };\n\t\n\t Range.prototype.slice = function(begin, end) {\n\t if (wholeSlice(begin, end, this.size)) {\n\t return this;\n\t }\n\t begin = resolveBegin(begin, this.size);\n\t end = resolveEnd(end, this.size);\n\t if (end <= begin) {\n\t return new Range(0, 0);\n\t }\n\t return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n\t };\n\t\n\t Range.prototype.indexOf = function(searchValue) {\n\t var offsetValue = searchValue - this._start;\n\t if (offsetValue % this._step === 0) {\n\t var index = offsetValue / this._step;\n\t if (index >= 0 && index < this.size) {\n\t return index\n\t }\n\t }\n\t return -1;\n\t };\n\t\n\t Range.prototype.lastIndexOf = function(searchValue) {\n\t return this.indexOf(searchValue);\n\t };\n\t\n\t Range.prototype.__iterate = function(fn, reverse) {\n\t var maxIndex = this.size - 1;\n\t var step = this._step;\n\t var value = reverse ? this._start + maxIndex * step : this._start;\n\t for (var ii = 0; ii <= maxIndex; ii++) {\n\t if (fn(value, ii, this) === false) {\n\t return ii + 1;\n\t }\n\t value += reverse ? -step : step;\n\t }\n\t return ii;\n\t };\n\t\n\t Range.prototype.__iterator = function(type, reverse) {\n\t var maxIndex = this.size - 1;\n\t var step = this._step;\n\t var value = reverse ? this._start + maxIndex * step : this._start;\n\t var ii = 0;\n\t return new Iterator(function() {\n\t var v = value;\n\t value += reverse ? -step : step;\n\t return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n\t });\n\t };\n\t\n\t Range.prototype.equals = function(other) {\n\t return other instanceof Range ?\n\t this._start === other._start &&\n\t this._end === other._end &&\n\t this._step === other._step :\n\t deepEqual(this, other);\n\t };\n\t\n\t\n\t var EMPTY_RANGE;\n\t\n\t createClass(Collection, Iterable);\n\t function Collection() {\n\t throw TypeError('Abstract');\n\t }\n\t\n\t\n\t createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\t\n\t createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\t\n\t createClass(SetCollection, Collection);function SetCollection() {}\n\t\n\t\n\t Collection.Keyed = KeyedCollection;\n\t Collection.Indexed = IndexedCollection;\n\t Collection.Set = SetCollection;\n\t\n\t var imul =\n\t typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n\t Math.imul :\n\t function imul(a, b) {\n\t a = a | 0; // int\n\t b = b | 0; // int\n\t var c = a & 0xffff;\n\t var d = b & 0xffff;\n\t // Shift by 0 fixes the sign on the high part.\n\t return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n\t };\n\t\n\t // v8 has an optimization for storing 31-bit signed numbers.\n\t // Values which have either 00 or 11 as the high order bits qualify.\n\t // This function drops the highest order bit in a signed number, maintaining\n\t // the sign bit.\n\t function smi(i32) {\n\t return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n\t }\n\t\n\t function hash(o) {\n\t if (o === false || o === null || o === undefined) {\n\t return 0;\n\t }\n\t if (typeof o.valueOf === 'function') {\n\t o = o.valueOf();\n\t if (o === false || o === null || o === undefined) {\n\t return 0;\n\t }\n\t }\n\t if (o === true) {\n\t return 1;\n\t }\n\t var type = typeof o;\n\t if (type === 'number') {\n\t if (o !== o || o === Infinity) {\n\t return 0;\n\t }\n\t var h = o | 0;\n\t if (h !== o) {\n\t h ^= o * 0xFFFFFFFF;\n\t }\n\t while (o > 0xFFFFFFFF) {\n\t o /= 0xFFFFFFFF;\n\t h ^= o;\n\t }\n\t return smi(h);\n\t }\n\t if (type === 'string') {\n\t return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n\t }\n\t if (typeof o.hashCode === 'function') {\n\t return o.hashCode();\n\t }\n\t if (type === 'object') {\n\t return hashJSObj(o);\n\t }\n\t if (typeof o.toString === 'function') {\n\t return hashString(o.toString());\n\t }\n\t throw new Error('Value type ' + type + ' cannot be hashed.');\n\t }\n\t\n\t function cachedHashString(string) {\n\t var hash = stringHashCache[string];\n\t if (hash === undefined) {\n\t hash = hashString(string);\n\t if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n\t STRING_HASH_CACHE_SIZE = 0;\n\t stringHashCache = {};\n\t }\n\t STRING_HASH_CACHE_SIZE++;\n\t stringHashCache[string] = hash;\n\t }\n\t return hash;\n\t }\n\t\n\t // http://jsperf.com/hashing-strings\n\t function hashString(string) {\n\t // This is the hash from JVM\n\t // The hash code for a string is computed as\n\t // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n\t // where s[i] is the ith character of the string and n is the length of\n\t // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n\t // (exclusive) by dropping high bits.\n\t var hash = 0;\n\t for (var ii = 0; ii < string.length; ii++) {\n\t hash = 31 * hash + string.charCodeAt(ii) | 0;\n\t }\n\t return smi(hash);\n\t }\n\t\n\t function hashJSObj(obj) {\n\t var hash;\n\t if (usingWeakMap) {\n\t hash = weakMap.get(obj);\n\t if (hash !== undefined) {\n\t return hash;\n\t }\n\t }\n\t\n\t hash = obj[UID_HASH_KEY];\n\t if (hash !== undefined) {\n\t return hash;\n\t }\n\t\n\t if (!canDefineProperty) {\n\t hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n\t if (hash !== undefined) {\n\t return hash;\n\t }\n\t\n\t hash = getIENodeHash(obj);\n\t if (hash !== undefined) {\n\t return hash;\n\t }\n\t }\n\t\n\t hash = ++objHashUID;\n\t if (objHashUID & 0x40000000) {\n\t objHashUID = 0;\n\t }\n\t\n\t if (usingWeakMap) {\n\t weakMap.set(obj, hash);\n\t } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n\t throw new Error('Non-extensible objects are not allowed as keys.');\n\t } else if (canDefineProperty) {\n\t Object.defineProperty(obj, UID_HASH_KEY, {\n\t 'enumerable': false,\n\t 'configurable': false,\n\t 'writable': false,\n\t 'value': hash\n\t });\n\t } else if (obj.propertyIsEnumerable !== undefined &&\n\t obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n\t // Since we can't define a non-enumerable property on the object\n\t // we'll hijack one of the less-used non-enumerable properties to\n\t // save our hash on it. Since this is a function it will not show up in\n\t // `JSON.stringify` which is what we want.\n\t obj.propertyIsEnumerable = function() {\n\t return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n\t };\n\t obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n\t } else if (obj.nodeType !== undefined) {\n\t // At this point we couldn't get the IE `uniqueID` to use as a hash\n\t // and we couldn't use a non-enumerable property to exploit the\n\t // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n\t // itself.\n\t obj[UID_HASH_KEY] = hash;\n\t } else {\n\t throw new Error('Unable to set a non-enumerable property on object.');\n\t }\n\t\n\t return hash;\n\t }\n\t\n\t // Get references to ES5 object methods.\n\t var isExtensible = Object.isExtensible;\n\t\n\t // True if Object.defineProperty works as expected. IE8 fails this test.\n\t var canDefineProperty = (function() {\n\t try {\n\t Object.defineProperty({}, '@', {});\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t }());\n\t\n\t // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n\t // and avoid memory leaks from the IE cloneNode bug.\n\t function getIENodeHash(node) {\n\t if (node && node.nodeType > 0) {\n\t switch (node.nodeType) {\n\t case 1: // Element\n\t return node.uniqueID;\n\t case 9: // Document\n\t return node.documentElement && node.documentElement.uniqueID;\n\t }\n\t }\n\t }\n\t\n\t // If possible, use a WeakMap.\n\t var usingWeakMap = typeof WeakMap === 'function';\n\t var weakMap;\n\t if (usingWeakMap) {\n\t weakMap = new WeakMap();\n\t }\n\t\n\t var objHashUID = 0;\n\t\n\t var UID_HASH_KEY = '__immutablehash__';\n\t if (typeof Symbol === 'function') {\n\t UID_HASH_KEY = Symbol(UID_HASH_KEY);\n\t }\n\t\n\t var STRING_HASH_CACHE_MIN_STRLEN = 16;\n\t var STRING_HASH_CACHE_MAX_SIZE = 255;\n\t var STRING_HASH_CACHE_SIZE = 0;\n\t var stringHashCache = {};\n\t\n\t function assertNotInfinite(size) {\n\t invariant(\n\t size !== Infinity,\n\t 'Cannot perform this action with an infinite size.'\n\t );\n\t }\n\t\n\t createClass(Map, KeyedCollection);\n\t\n\t // @pragma Construction\n\t\n\t function Map(value) {\n\t return value === null || value === undefined ? emptyMap() :\n\t isMap(value) && !isOrdered(value) ? value :\n\t emptyMap().withMutations(function(map ) {\n\t var iter = KeyedIterable(value);\n\t assertNotInfinite(iter.size);\n\t iter.forEach(function(v, k) {return map.set(k, v)});\n\t });\n\t }\n\t\n\t Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n\t return emptyMap().withMutations(function(map ) {\n\t for (var i = 0; i < keyValues.length; i += 2) {\n\t if (i + 1 >= keyValues.length) {\n\t throw new Error('Missing value for key: ' + keyValues[i]);\n\t }\n\t map.set(keyValues[i], keyValues[i + 1]);\n\t }\n\t });\n\t };\n\t\n\t Map.prototype.toString = function() {\n\t return this.__toString('Map {', '}');\n\t };\n\t\n\t // @pragma Access\n\t\n\t Map.prototype.get = function(k, notSetValue) {\n\t return this._root ?\n\t this._root.get(0, undefined, k, notSetValue) :\n\t notSetValue;\n\t };\n\t\n\t // @pragma Modification\n\t\n\t Map.prototype.set = function(k, v) {\n\t return updateMap(this, k, v);\n\t };\n\t\n\t Map.prototype.setIn = function(keyPath, v) {\n\t return this.updateIn(keyPath, NOT_SET, function() {return v});\n\t };\n\t\n\t Map.prototype.remove = function(k) {\n\t return updateMap(this, k, NOT_SET);\n\t };\n\t\n\t Map.prototype.deleteIn = function(keyPath) {\n\t return this.updateIn(keyPath, function() {return NOT_SET});\n\t };\n\t\n\t Map.prototype.update = function(k, notSetValue, updater) {\n\t return arguments.length === 1 ?\n\t k(this) :\n\t this.updateIn([k], notSetValue, updater);\n\t };\n\t\n\t Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n\t if (!updater) {\n\t updater = notSetValue;\n\t notSetValue = undefined;\n\t }\n\t var updatedValue = updateInDeepMap(\n\t this,\n\t forceIterator(keyPath),\n\t notSetValue,\n\t updater\n\t );\n\t return updatedValue === NOT_SET ? undefined : updatedValue;\n\t };\n\t\n\t Map.prototype.clear = function() {\n\t if (this.size === 0) {\n\t return this;\n\t }\n\t if (this.__ownerID) {\n\t this.size = 0;\n\t this._root = null;\n\t this.__hash = undefined;\n\t this.__altered = true;\n\t return this;\n\t }\n\t return emptyMap();\n\t };\n\t\n\t // @pragma Composition\n\t\n\t Map.prototype.merge = function(/*...iters*/) {\n\t return mergeIntoMapWith(this, undefined, arguments);\n\t };\n\t\n\t Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n\t return mergeIntoMapWith(this, merger, iters);\n\t };\n\t\n\t Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n\t return this.updateIn(\n\t keyPath,\n\t emptyMap(),\n\t function(m ) {return typeof m.merge === 'function' ?\n\t m.merge.apply(m, iters) :\n\t iters[iters.length - 1]}\n\t );\n\t };\n\t\n\t Map.prototype.mergeDeep = function(/*...iters*/) {\n\t return mergeIntoMapWith(this, deepMerger, arguments);\n\t };\n\t\n\t Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n\t return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n\t };\n\t\n\t Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n\t return this.updateIn(\n\t keyPath,\n\t emptyMap(),\n\t function(m ) {return typeof m.mergeDeep === 'function' ?\n\t m.mergeDeep.apply(m, iters) :\n\t iters[iters.length - 1]}\n\t );\n\t };\n\t\n\t Map.prototype.sort = function(comparator) {\n\t // Late binding\n\t return OrderedMap(sortFactory(this, comparator));\n\t };\n\t\n\t Map.prototype.sortBy = function(mapper, comparator) {\n\t // Late binding\n\t return OrderedMap(sortFactory(this, comparator, mapper));\n\t };\n\t\n\t // @pragma Mutability\n\t\n\t Map.prototype.withMutations = function(fn) {\n\t var mutable = this.asMutable();\n\t fn(mutable);\n\t return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n\t };\n\t\n\t Map.prototype.asMutable = function() {\n\t return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n\t };\n\t\n\t Map.prototype.asImmutable = function() {\n\t return this.__ensureOwner();\n\t };\n\t\n\t Map.prototype.wasAltered = function() {\n\t return this.__altered;\n\t };\n\t\n\t Map.prototype.__iterator = function(type, reverse) {\n\t return new MapIterator(this, type, reverse);\n\t };\n\t\n\t Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n\t var iterations = 0;\n\t this._root && this._root.iterate(function(entry ) {\n\t iterations++;\n\t return fn(entry[1], entry[0], this$0);\n\t }, reverse);\n\t return iterations;\n\t };\n\t\n\t Map.prototype.__ensureOwner = function(ownerID) {\n\t if (ownerID === this.__ownerID) {\n\t return this;\n\t }\n\t if (!ownerID) {\n\t this.__ownerID = ownerID;\n\t this.__altered = false;\n\t return this;\n\t }\n\t return makeMap(this.size, this._root, ownerID, this.__hash);\n\t };\n\t\n\t\n\t function isMap(maybeMap) {\n\t return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n\t }\n\t\n\t Map.isMap = isMap;\n\t\n\t var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\t\n\t var MapPrototype = Map.prototype;\n\t MapPrototype[IS_MAP_SENTINEL] = true;\n\t MapPrototype[DELETE] = MapPrototype.remove;\n\t MapPrototype.removeIn = MapPrototype.deleteIn;\n\t\n\t\n\t // #pragma Trie Nodes\n\t\n\t\n\t\n\t function ArrayMapNode(ownerID, entries) {\n\t this.ownerID = ownerID;\n\t this.entries = entries;\n\t }\n\t\n\t ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n\t var entries = this.entries;\n\t for (var ii = 0, len = entries.length; ii < len; ii++) {\n\t if (is(key, entries[ii][0])) {\n\t return entries[ii][1];\n\t }\n\t }\n\t return notSetValue;\n\t };\n\t\n\t ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n\t var removed = value === NOT_SET;\n\t\n\t var entries = this.entries;\n\t var idx = 0;\n\t for (var len = entries.length; idx < len; idx++) {\n\t if (is(key, entries[idx][0])) {\n\t break;\n\t }\n\t }\n\t var exists = idx < len;\n\t\n\t if (exists ? entries[idx][1] === value : removed) {\n\t return this;\n\t }\n\t\n\t SetRef(didAlter);\n\t (removed || !exists) && SetRef(didChangeSize);\n\t\n\t if (removed && entries.length === 1) {\n\t return; // undefined\n\t }\n\t\n\t if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n\t return createNodes(ownerID, entries, key, value);\n\t }\n\t\n\t var isEditable = ownerID && ownerID === this.ownerID;\n\t var newEntries = isEditable ? entries : arrCopy(entries);\n\t\n\t if (exists) {\n\t if (removed) {\n\t idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n\t } else {\n\t newEntries[idx] = [key, value];\n\t }\n\t } else {\n\t newEntries.push([key, value]);\n\t }\n\t\n\t if (isEditable) {\n\t this.entries = newEntries;\n\t return this;\n\t }\n\t\n\t return new ArrayMapNode(ownerID, newEntries);\n\t };\n\t\n\t\n\t\n\t\n\t function BitmapIndexedNode(ownerID, bitmap, nodes) {\n\t this.ownerID = ownerID;\n\t this.bitmap = bitmap;\n\t this.nodes = nodes;\n\t }\n\t\n\t BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n\t if (keyHash === undefined) {\n\t keyHash = hash(key);\n\t }\n\t var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n\t var bitmap = this.bitmap;\n\t return (bitmap & bit) === 0 ? notSetValue :\n\t this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n\t };\n\t\n\t BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n\t if (keyHash === undefined) {\n\t keyHash = hash(key);\n\t }\n\t var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\t var bit = 1 << keyHashFrag;\n\t var bitmap = this.bitmap;\n\t var exists = (bitmap & bit) !== 0;\n\t\n\t if (!exists && value === NOT_SET) {\n\t return this;\n\t }\n\t\n\t var idx = popCount(bitmap & (bit - 1));\n\t var nodes = this.nodes;\n\t var node = exists ? nodes[idx] : undefined;\n\t var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\t\n\t if (newNode === node) {\n\t return this;\n\t }\n\t\n\t if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n\t return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n\t }\n\t\n\t if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n\t return nodes[idx ^ 1];\n\t }\n\t\n\t if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n\t return newNode;\n\t }\n\t\n\t var isEditable = ownerID && ownerID === this.ownerID;\n\t var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n\t var newNodes = exists ? newNode ?\n\t setIn(nodes, idx, newNode, isEditable) :\n\t spliceOut(nodes, idx, isEditable) :\n\t spliceIn(nodes, idx, newNode, isEditable);\n\t\n\t if (isEditable) {\n\t this.bitmap = newBitmap;\n\t this.nodes = newNodes;\n\t return this;\n\t }\n\t\n\t return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n\t };\n\t\n\t\n\t\n\t\n\t function HashArrayMapNode(ownerID, count, nodes) {\n\t this.ownerID = ownerID;\n\t this.count = count;\n\t this.nodes = nodes;\n\t }\n\t\n\t HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n\t if (keyHash === undefined) {\n\t keyHash = hash(key);\n\t }\n\t var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\t var node = this.nodes[idx];\n\t return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n\t };\n\t\n\t HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n\t if (keyHash === undefined) {\n\t keyHash = hash(key);\n\t }\n\t var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\t var removed = value === NOT_SET;\n\t var nodes = this.nodes;\n\t var node = nodes[idx];\n\t\n\t if (removed && !node) {\n\t return this;\n\t }\n\t\n\t var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\t if (newNode === node) {\n\t return this;\n\t }\n\t\n\t var newCount = this.count;\n\t if (!node) {\n\t newCount++;\n\t } else if (!newNode) {\n\t newCount--;\n\t if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n\t return packNodes(ownerID, nodes, newCount, idx);\n\t }\n\t }\n\t\n\t var isEditable = ownerID && ownerID === this.ownerID;\n\t var newNodes = setIn(nodes, idx, newNode, isEditable);\n\t\n\t if (isEditable) {\n\t this.count = newCount;\n\t this.nodes = newNodes;\n\t return this;\n\t }\n\t\n\t return new HashArrayMapNode(ownerID, newCount, newNodes);\n\t };\n\t\n\t\n\t\n\t\n\t function HashCollisionNode(ownerID, keyHash, entries) {\n\t this.ownerID = ownerID;\n\t this.keyHash = keyHash;\n\t this.entries = entries;\n\t }\n\t\n\t HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n\t var entries = this.entries;\n\t for (var ii = 0, len = entries.length; ii < len; ii++) {\n\t if (is(key, entries[ii][0])) {\n\t return entries[ii][1];\n\t }\n\t }\n\t return notSetValue;\n\t };\n\t\n\t HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n\t if (keyHash === undefined) {\n\t keyHash = hash(key);\n\t }\n\t\n\t var removed = value === NOT_SET;\n\t\n\t if (keyHash !== this.keyHash) {\n\t if (removed) {\n\t return this;\n\t }\n\t SetRef(didAlter);\n\t SetRef(didChangeSize);\n\t return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n\t }\n\t\n\t var entries = this.entries;\n\t var idx = 0;\n\t for (var len = entries.length; idx < len; idx++) {\n\t if (is(key, entries[idx][0])) {\n\t break;\n\t }\n\t }\n\t var exists = idx < len;\n\t\n\t if (exists ? entries[idx][1] === value : removed) {\n\t return this;\n\t }\n\t\n\t SetRef(didAlter);\n\t (removed || !exists) && SetRef(didChangeSize);\n\t\n\t if (removed && len === 2) {\n\t return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n\t }\n\t\n\t var isEditable = ownerID && ownerID === this.ownerID;\n\t var newEntries = isEditable ? entries : arrCopy(entries);\n\t\n\t if (exists) {\n\t if (removed) {\n\t idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n\t } else {\n\t newEntries[idx] = [key, value];\n\t }\n\t } else {\n\t newEntries.push([key, value]);\n\t }\n\t\n\t if (isEditable) {\n\t this.entries = newEntries;\n\t return this;\n\t }\n\t\n\t return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n\t };\n\t\n\t\n\t\n\t\n\t function ValueNode(ownerID, keyHash, entry) {\n\t this.ownerID = ownerID;\n\t this.keyHash = keyHash;\n\t this.entry = entry;\n\t }\n\t\n\t ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n\t return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n\t };\n\t\n\t ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n\t var removed = value === NOT_SET;\n\t var keyMatch = is(key, this.entry[0]);\n\t if (keyMatch ? value === this.entry[1] : removed) {\n\t return this;\n\t }\n\t\n\t SetRef(didAlter);\n\t\n\t if (removed) {\n\t SetRef(didChangeSize);\n\t return; // undefined\n\t }\n\t\n\t if (keyMatch) {\n\t if (ownerID && ownerID === this.ownerID) {\n\t this.entry[1] = value;\n\t return this;\n\t }\n\t return new ValueNode(ownerID, this.keyHash, [key, value]);\n\t }\n\t\n\t SetRef(didChangeSize);\n\t return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n\t };\n\t\n\t\n\t\n\t // #pragma Iterators\n\t\n\t ArrayMapNode.prototype.iterate =\n\t HashCollisionNode.prototype.iterate = function (fn, reverse) {\n\t var entries = this.entries;\n\t for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n\t if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n\t return false;\n\t }\n\t }\n\t }\n\t\n\t BitmapIndexedNode.prototype.iterate =\n\t HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n\t var nodes = this.nodes;\n\t for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n\t var node = nodes[reverse ? maxIndex - ii : ii];\n\t if (node && node.iterate(fn, reverse) === false) {\n\t return false;\n\t }\n\t }\n\t }\n\t\n\t ValueNode.prototype.iterate = function (fn, reverse) {\n\t return fn(this.entry);\n\t }\n\t\n\t createClass(MapIterator, Iterator);\n\t\n\t function MapIterator(map, type, reverse) {\n\t this._type = type;\n\t this._reverse = reverse;\n\t this._stack = map._root && mapIteratorFrame(map._root);\n\t }\n\t\n\t MapIterator.prototype.next = function() {\n\t var type = this._type;\n\t var stack = this._stack;\n\t while (stack) {\n\t var node = stack.node;\n\t var index = stack.index++;\n\t var maxIndex;\n\t if (node.entry) {\n\t if (index === 0) {\n\t return mapIteratorValue(type, node.entry);\n\t }\n\t } else if (node.entries) {\n\t maxIndex = node.entries.length - 1;\n\t if (index <= maxIndex) {\n\t return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n\t }\n\t } else {\n\t maxIndex = node.nodes.length - 1;\n\t if (index <= maxIndex) {\n\t var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n\t if (subNode) {\n\t if (subNode.entry) {\n\t return mapIteratorValue(type, subNode.entry);\n\t }\n\t stack = this._stack = mapIteratorFrame(subNode, stack);\n\t }\n\t continue;\n\t }\n\t }\n\t stack = this._stack = this._stack.__prev;\n\t }\n\t return iteratorDone();\n\t };\n\t\n\t\n\t function mapIteratorValue(type, entry) {\n\t return iteratorValue(type, entry[0], entry[1]);\n\t }\n\t\n\t function mapIteratorFrame(node, prev) {\n\t return {\n\t node: node,\n\t index: 0,\n\t __prev: prev\n\t };\n\t }\n\t\n\t function makeMap(size, root, ownerID, hash) {\n\t var map = Object.create(MapPrototype);\n\t map.size = size;\n\t map._root = root;\n\t map.__ownerID = ownerID;\n\t map.__hash = hash;\n\t map.__altered = false;\n\t return map;\n\t }\n\t\n\t var EMPTY_MAP;\n\t function emptyMap() {\n\t return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n\t }\n\t\n\t function updateMap(map, k, v) {\n\t var newRoot;\n\t var newSize;\n\t if (!map._root) {\n\t if (v === NOT_SET) {\n\t return map;\n\t }\n\t newSize = 1;\n\t newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n\t } else {\n\t var didChangeSize = MakeRef(CHANGE_LENGTH);\n\t var didAlter = MakeRef(DID_ALTER);\n\t newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n\t if (!didAlter.value) {\n\t return map;\n\t }\n\t newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n\t }\n\t if (map.__ownerID) {\n\t map.size = newSize;\n\t map._root = newRoot;\n\t map.__hash = undefined;\n\t map.__altered = true;\n\t return map;\n\t }\n\t return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n\t }\n\t\n\t function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n\t if (!node) {\n\t if (value === NOT_SET) {\n\t return node;\n\t }\n\t SetRef(didAlter);\n\t SetRef(didChangeSize);\n\t return new ValueNode(ownerID, keyHash, [key, value]);\n\t }\n\t return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n\t }\n\t\n\t function isLeafNode(node) {\n\t return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n\t }\n\t\n\t function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n\t if (node.keyHash === keyHash) {\n\t return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n\t }\n\t\n\t var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n\t var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\t\n\t var newNode;\n\t var nodes = idx1 === idx2 ?\n\t [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n\t ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\t\n\t return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n\t }\n\t\n\t function createNodes(ownerID, entries, key, value) {\n\t if (!ownerID) {\n\t ownerID = new OwnerID();\n\t }\n\t var node = new ValueNode(ownerID, hash(key), [key, value]);\n\t for (var ii = 0; ii < entries.length; ii++) {\n\t var entry = entries[ii];\n\t node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n\t }\n\t return node;\n\t }\n\t\n\t function packNodes(ownerID, nodes, count, excluding) {\n\t var bitmap = 0;\n\t var packedII = 0;\n\t var packedNodes = new Array(count);\n\t for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n\t var node = nodes[ii];\n\t if (node !== undefined && ii !== excluding) {\n\t bitmap |= bit;\n\t packedNodes[packedII++] = node;\n\t }\n\t }\n\t return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n\t }\n\t\n\t function expandNodes(ownerID, nodes, bitmap, including, node) {\n\t var count = 0;\n\t var expandedNodes = new Array(SIZE);\n\t for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n\t expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n\t }\n\t expandedNodes[including] = node;\n\t return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n\t }\n\t\n\t function mergeIntoMapWith(map, merger, iterables) {\n\t var iters = [];\n\t for (var ii = 0; ii < iterables.length; ii++) {\n\t var value = iterables[ii];\n\t var iter = KeyedIterable(value);\n\t if (!isIterable(value)) {\n\t iter = iter.map(function(v ) {return fromJS(v)});\n\t }\n\t iters.push(iter);\n\t }\n\t return mergeIntoCollectionWith(map, merger, iters);\n\t }\n\t\n\t function deepMerger(existing, value, key) {\n\t return existing && existing.mergeDeep && isIterable(value) ?\n\t existing.mergeDeep(value) :\n\t is(existing, value) ? existing : value;\n\t }\n\t\n\t function deepMergerWith(merger) {\n\t return function(existing, value, key) {\n\t if (existing && existing.mergeDeepWith && isIterable(value)) {\n\t return existing.mergeDeepWith(merger, value);\n\t }\n\t var nextValue = merger(existing, value, key);\n\t return is(existing, nextValue) ? existing : nextValue;\n\t };\n\t }\n\t\n\t function mergeIntoCollectionWith(collection, merger, iters) {\n\t iters = iters.filter(function(x ) {return x.size !== 0});\n\t if (iters.length === 0) {\n\t return collection;\n\t }\n\t if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n\t return collection.constructor(iters[0]);\n\t }\n\t return collection.withMutations(function(collection ) {\n\t var mergeIntoMap = merger ?\n\t function(value, key) {\n\t collection.update(key, NOT_SET, function(existing )\n\t {return existing === NOT_SET ? value : merger(existing, value, key)}\n\t );\n\t } :\n\t function(value, key) {\n\t collection.set(key, value);\n\t }\n\t for (var ii = 0; ii < iters.length; ii++) {\n\t iters[ii].forEach(mergeIntoMap);\n\t }\n\t });\n\t }\n\t\n\t function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n\t var isNotSet = existing === NOT_SET;\n\t var step = keyPathIter.next();\n\t if (step.done) {\n\t var existingValue = isNotSet ? notSetValue : existing;\n\t var newValue = updater(existingValue);\n\t return newValue === existingValue ? existing : newValue;\n\t }\n\t invariant(\n\t isNotSet || (existing && existing.set),\n\t 'invalid keyPath'\n\t );\n\t var key = step.value;\n\t var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n\t var nextUpdated = updateInDeepMap(\n\t nextExisting,\n\t keyPathIter,\n\t notSetValue,\n\t updater\n\t );\n\t return nextUpdated === nextExisting ? existing :\n\t nextUpdated === NOT_SET ? existing.remove(key) :\n\t (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n\t }\n\t\n\t function popCount(x) {\n\t x = x - ((x >> 1) & 0x55555555);\n\t x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n\t x = (x + (x >> 4)) & 0x0f0f0f0f;\n\t x = x + (x >> 8);\n\t x = x + (x >> 16);\n\t return x & 0x7f;\n\t }\n\t\n\t function setIn(array, idx, val, canEdit) {\n\t var newArray = canEdit ? array : arrCopy(array);\n\t newArray[idx] = val;\n\t return newArray;\n\t }\n\t\n\t function spliceIn(array, idx, val, canEdit) {\n\t var newLen = array.length + 1;\n\t if (canEdit && idx + 1 === newLen) {\n\t array[idx] = val;\n\t return array;\n\t }\n\t var newArray = new Array(newLen);\n\t var after = 0;\n\t for (var ii = 0; ii < newLen; ii++) {\n\t if (ii === idx) {\n\t newArray[ii] = val;\n\t after = -1;\n\t } else {\n\t newArray[ii] = array[ii + after];\n\t }\n\t }\n\t return newArray;\n\t }\n\t\n\t function spliceOut(array, idx, canEdit) {\n\t var newLen = array.length - 1;\n\t if (canEdit && idx === newLen) {\n\t array.pop();\n\t return array;\n\t }\n\t var newArray = new Array(newLen);\n\t var after = 0;\n\t for (var ii = 0; ii < newLen; ii++) {\n\t if (ii === idx) {\n\t after = 1;\n\t }\n\t newArray[ii] = array[ii + after];\n\t }\n\t return newArray;\n\t }\n\t\n\t var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n\t var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n\t var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\t\n\t createClass(List, IndexedCollection);\n\t\n\t // @pragma Construction\n\t\n\t function List(value) {\n\t var empty = emptyList();\n\t if (value === null || value === undefined) {\n\t return empty;\n\t }\n\t if (isList(value)) {\n\t return value;\n\t }\n\t var iter = IndexedIterable(value);\n\t var size = iter.size;\n\t if (size === 0) {\n\t return empty;\n\t }\n\t assertNotInfinite(size);\n\t if (size > 0 && size < SIZE) {\n\t return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n\t }\n\t return empty.withMutations(function(list ) {\n\t list.setSize(size);\n\t iter.forEach(function(v, i) {return list.set(i, v)});\n\t });\n\t }\n\t\n\t List.of = function(/*...values*/) {\n\t return this(arguments);\n\t };\n\t\n\t List.prototype.toString = function() {\n\t return this.__toString('List [', ']');\n\t };\n\t\n\t // @pragma Access\n\t\n\t List.prototype.get = function(index, notSetValue) {\n\t index = wrapIndex(this, index);\n\t if (index >= 0 && index < this.size) {\n\t index += this._origin;\n\t var node = listNodeFor(this, index);\n\t return node && node.array[index & MASK];\n\t }\n\t return notSetValue;\n\t };\n\t\n\t // @pragma Modification\n\t\n\t List.prototype.set = function(index, value) {\n\t return updateList(this, index, value);\n\t };\n\t\n\t List.prototype.remove = function(index) {\n\t return !this.has(index) ? this :\n\t index === 0 ? this.shift() :\n\t index === this.size - 1 ? this.pop() :\n\t this.splice(index, 1);\n\t };\n\t\n\t List.prototype.insert = function(index, value) {\n\t return this.splice(index, 0, value);\n\t };\n\t\n\t List.prototype.clear = function() {\n\t if (this.size === 0) {\n\t return this;\n\t }\n\t if (this.__ownerID) {\n\t this.size = this._origin = this._capacity = 0;\n\t this._level = SHIFT;\n\t this._root = this._tail = null;\n\t this.__hash = undefined;\n\t this.__altered = true;\n\t return this;\n\t }\n\t return emptyList();\n\t };\n\t\n\t List.prototype.push = function(/*...values*/) {\n\t var values = arguments;\n\t var oldSize = this.size;\n\t return this.withMutations(function(list ) {\n\t setListBounds(list, 0, oldSize + values.length);\n\t for (var ii = 0; ii < values.length; ii++) {\n\t list.set(oldSize + ii, values[ii]);\n\t }\n\t });\n\t };\n\t\n\t List.prototype.pop = function() {\n\t return setListBounds(this, 0, -1);\n\t };\n\t\n\t List.prototype.unshift = function(/*...values*/) {\n\t var values = arguments;\n\t return this.withMutations(function(list ) {\n\t setListBounds(list, -values.length);\n\t for (var ii = 0; ii < values.length; ii++) {\n\t list.set(ii, values[ii]);\n\t }\n\t });\n\t };\n\t\n\t List.prototype.shift = function() {\n\t return setListBounds(this, 1);\n\t };\n\t\n\t // @pragma Composition\n\t\n\t List.prototype.merge = function(/*...iters*/) {\n\t return mergeIntoListWith(this, undefined, arguments);\n\t };\n\t\n\t List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n\t return mergeIntoListWith(this, merger, iters);\n\t };\n\t\n\t List.prototype.mergeDeep = function(/*...iters*/) {\n\t return mergeIntoListWith(this, deepMerger, arguments);\n\t };\n\t\n\t List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n\t return mergeIntoListWith(this, deepMergerWith(merger), iters);\n\t };\n\t\n\t List.prototype.setSize = function(size) {\n\t return setListBounds(this, 0, size);\n\t };\n\t\n\t // @pragma Iteration\n\t\n\t List.prototype.slice = function(begin, end) {\n\t var size = this.size;\n\t if (wholeSlice(begin, end, size)) {\n\t return this;\n\t }\n\t return setListBounds(\n\t this,\n\t resolveBegin(begin, size),\n\t resolveEnd(end, size)\n\t );\n\t };\n\t\n\t List.prototype.__iterator = function(type, reverse) {\n\t var index = 0;\n\t var values = iterateList(this, reverse);\n\t return new Iterator(function() {\n\t var value = values();\n\t return value === DONE ?\n\t iteratorDone() :\n\t iteratorValue(type, index++, value);\n\t });\n\t };\n\t\n\t List.prototype.__iterate = function(fn, reverse) {\n\t var index = 0;\n\t var values = iterateList(this, reverse);\n\t var value;\n\t while ((value = values()) !== DONE) {\n\t if (fn(value, index++, this) === false) {\n\t break;\n\t }\n\t }\n\t return index;\n\t };\n\t\n\t List.prototype.__ensureOwner = function(ownerID) {\n\t if (ownerID === this.__ownerID) {\n\t return this;\n\t }\n\t if (!ownerID) {\n\t this.__ownerID = ownerID;\n\t return this;\n\t }\n\t return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n\t };\n\t\n\t\n\t function isList(maybeList) {\n\t return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n\t }\n\t\n\t List.isList = isList;\n\t\n\t var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\t\n\t var ListPrototype = List.prototype;\n\t ListPrototype[IS_LIST_SENTINEL] = true;\n\t ListPrototype[DELETE] = ListPrototype.remove;\n\t ListPrototype.setIn = MapPrototype.setIn;\n\t ListPrototype.deleteIn =\n\t ListPrototype.removeIn = MapPrototype.removeIn;\n\t ListPrototype.update = MapPrototype.update;\n\t ListPrototype.updateIn = MapPrototype.updateIn;\n\t ListPrototype.mergeIn = MapPrototype.mergeIn;\n\t ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n\t ListPrototype.withMutations = MapPrototype.withMutations;\n\t ListPrototype.asMutable = MapPrototype.asMutable;\n\t ListPrototype.asImmutable = MapPrototype.asImmutable;\n\t ListPrototype.wasAltered = MapPrototype.wasAltered;\n\t\n\t\n\t\n\t function VNode(array, ownerID) {\n\t this.array = array;\n\t this.ownerID = ownerID;\n\t }\n\t\n\t // TODO: seems like these methods are very similar\n\t\n\t VNode.prototype.removeBefore = function(ownerID, level, index) {\n\t if (index === level ? 1 << level : 0 || this.array.length === 0) {\n\t return this;\n\t }\n\t var originIndex = (index >>> level) & MASK;\n\t if (originIndex >= this.array.length) {\n\t return new VNode([], ownerID);\n\t }\n\t var removingFirst = originIndex === 0;\n\t var newChild;\n\t if (level > 0) {\n\t var oldChild = this.array[originIndex];\n\t newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n\t if (newChild === oldChild && removingFirst) {\n\t return this;\n\t }\n\t }\n\t if (removingFirst && !newChild) {\n\t return this;\n\t }\n\t var editable = editableVNode(this, ownerID);\n\t if (!removingFirst) {\n\t for (var ii = 0; ii < originIndex; ii++) {\n\t editable.array[ii] = undefined;\n\t }\n\t }\n\t if (newChild) {\n\t editable.array[originIndex] = newChild;\n\t }\n\t return editable;\n\t };\n\t\n\t VNode.prototype.removeAfter = function(ownerID, level, index) {\n\t if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n\t return this;\n\t }\n\t var sizeIndex = ((index - 1) >>> level) & MASK;\n\t if (sizeIndex >= this.array.length) {\n\t return this;\n\t }\n\t\n\t var newChild;\n\t if (level > 0) {\n\t var oldChild = this.array[sizeIndex];\n\t newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n\t if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n\t return this;\n\t }\n\t }\n\t\n\t var editable = editableVNode(this, ownerID);\n\t editable.array.splice(sizeIndex + 1);\n\t if (newChild) {\n\t editable.array[sizeIndex] = newChild;\n\t }\n\t return editable;\n\t };\n\t\n\t\n\t\n\t var DONE = {};\n\t\n\t function iterateList(list, reverse) {\n\t var left = list._origin;\n\t var right = list._capacity;\n\t var tailPos = getTailOffset(right);\n\t var tail = list._tail;\n\t\n\t return iterateNodeOrLeaf(list._root, list._level, 0);\n\t\n\t function iterateNodeOrLeaf(node, level, offset) {\n\t return level === 0 ?\n\t iterateLeaf(node, offset) :\n\t iterateNode(node, level, offset);\n\t }\n\t\n\t function iterateLeaf(node, offset) {\n\t var array = offset === tailPos ? tail && tail.array : node && node.array;\n\t var from = offset > left ? 0 : left - offset;\n\t var to = right - offset;\n\t if (to > SIZE) {\n\t to = SIZE;\n\t }\n\t return function() {\n\t if (from === to) {\n\t return DONE;\n\t }\n\t var idx = reverse ? --to : from++;\n\t return array && array[idx];\n\t };\n\t }\n\t\n\t function iterateNode(node, level, offset) {\n\t var values;\n\t var array = node && node.array;\n\t var from = offset > left ? 0 : (left - offset) >> level;\n\t var to = ((right - offset) >> level) + 1;\n\t if (to > SIZE) {\n\t to = SIZE;\n\t }\n\t return function() {\n\t do {\n\t if (values) {\n\t var value = values();\n\t if (value !== DONE) {\n\t return value;\n\t }\n\t values = null;\n\t }\n\t if (from === to) {\n\t return DONE;\n\t }\n\t var idx = reverse ? --to : from++;\n\t values = iterateNodeOrLeaf(\n\t array && array[idx], level - SHIFT, offset + (idx << level)\n\t );\n\t } while (true);\n\t };\n\t }\n\t }\n\t\n\t function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n\t var list = Object.create(ListPrototype);\n\t list.size = capacity - origin;\n\t list._origin = origin;\n\t list._capacity = capacity;\n\t list._level = level;\n\t list._root = root;\n\t list._tail = tail;\n\t list.__ownerID = ownerID;\n\t list.__hash = hash;\n\t list.__altered = false;\n\t return list;\n\t }\n\t\n\t var EMPTY_LIST;\n\t function emptyList() {\n\t return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n\t }\n\t\n\t function updateList(list, index, value) {\n\t index = wrapIndex(list, index);\n\t\n\t if (index !== index) {\n\t return list;\n\t }\n\t\n\t if (index >= list.size || index < 0) {\n\t return list.withMutations(function(list ) {\n\t index < 0 ?\n\t setListBounds(list, index).set(0, value) :\n\t setListBounds(list, 0, index + 1).set(index, value)\n\t });\n\t }\n\t\n\t index += list._origin;\n\t\n\t var newTail = list._tail;\n\t var newRoot = list._root;\n\t var didAlter = MakeRef(DID_ALTER);\n\t if (index >= getTailOffset(list._capacity)) {\n\t newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n\t } else {\n\t newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n\t }\n\t\n\t if (!didAlter.value) {\n\t return list;\n\t }\n\t\n\t if (list.__ownerID) {\n\t list._root = newRoot;\n\t list._tail = newTail;\n\t list.__hash = undefined;\n\t list.__altered = true;\n\t return list;\n\t }\n\t return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n\t }\n\t\n\t function updateVNode(node, ownerID, level, index, value, didAlter) {\n\t var idx = (index >>> level) & MASK;\n\t var nodeHas = node && idx < node.array.length;\n\t if (!nodeHas && value === undefined) {\n\t return node;\n\t }\n\t\n\t var newNode;\n\t\n\t if (level > 0) {\n\t var lowerNode = node && node.array[idx];\n\t var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n\t if (newLowerNode === lowerNode) {\n\t return node;\n\t }\n\t newNode = editableVNode(node, ownerID);\n\t newNode.array[idx] = newLowerNode;\n\t return newNode;\n\t }\n\t\n\t if (nodeHas && node.array[idx] === value) {\n\t return node;\n\t }\n\t\n\t SetRef(didAlter);\n\t\n\t newNode = editableVNode(node, ownerID);\n\t if (value === undefined && idx === newNode.array.length - 1) {\n\t newNode.array.pop();\n\t } else {\n\t newNode.array[idx] = value;\n\t }\n\t return newNode;\n\t }\n\t\n\t function editableVNode(node, ownerID) {\n\t if (ownerID && node && ownerID === node.ownerID) {\n\t return node;\n\t }\n\t return new VNode(node ? node.array.slice() : [], ownerID);\n\t }\n\t\n\t function listNodeFor(list, rawIndex) {\n\t if (rawIndex >= getTailOffset(list._capacity)) {\n\t return list._tail;\n\t }\n\t if (rawIndex < 1 << (list._level + SHIFT)) {\n\t var node = list._root;\n\t var level = list._level;\n\t while (node && level > 0) {\n\t node = node.array[(rawIndex >>> level) & MASK];\n\t level -= SHIFT;\n\t }\n\t return node;\n\t }\n\t }\n\t\n\t function setListBounds(list, begin, end) {\n\t // Sanitize begin & end using this shorthand for ToInt32(argument)\n\t // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n\t if (begin !== undefined) {\n\t begin = begin | 0;\n\t }\n\t if (end !== undefined) {\n\t end = end | 0;\n\t }\n\t var owner = list.__ownerID || new OwnerID();\n\t var oldOrigin = list._origin;\n\t var oldCapacity = list._capacity;\n\t var newOrigin = oldOrigin + begin;\n\t var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n\t if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n\t return list;\n\t }\n\t\n\t // If it's going to end after it starts, it's empty.\n\t if (newOrigin >= newCapacity) {\n\t return list.clear();\n\t }\n\t\n\t var newLevel = list._level;\n\t var newRoot = list._root;\n\t\n\t // New origin might need creating a higher root.\n\t var offsetShift = 0;\n\t while (newOrigin + offsetShift < 0) {\n\t newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n\t newLevel += SHIFT;\n\t offsetShift += 1 << newLevel;\n\t }\n\t if (offsetShift) {\n\t newOrigin += offsetShift;\n\t oldOrigin += offsetShift;\n\t newCapacity += offsetShift;\n\t oldCapacity += offsetShift;\n\t }\n\t\n\t var oldTailOffset = getTailOffset(oldCapacity);\n\t var newTailOffset = getTailOffset(newCapacity);\n\t\n\t // New size might need creating a higher root.\n\t while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n\t newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n\t newLevel += SHIFT;\n\t }\n\t\n\t // Locate or create the new tail.\n\t var oldTail = list._tail;\n\t var newTail = newTailOffset < oldTailOffset ?\n\t listNodeFor(list, newCapacity - 1) :\n\t newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\t\n\t // Merge Tail into tree.\n\t if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n\t newRoot = editableVNode(newRoot, owner);\n\t var node = newRoot;\n\t for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n\t var idx = (oldTailOffset >>> level) & MASK;\n\t node = node.array[idx] = editableVNode(node.array[idx], owner);\n\t }\n\t node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n\t }\n\t\n\t // If the size has been reduced, there's a chance the tail needs to be trimmed.\n\t if (newCapacity < oldCapacity) {\n\t newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n\t }\n\t\n\t // If the new origin is within the tail, then we do not need a root.\n\t if (newOrigin >= newTailOffset) {\n\t newOrigin -= newTailOffset;\n\t newCapacity -= newTailOffset;\n\t newLevel = SHIFT;\n\t newRoot = null;\n\t newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\t\n\t // Otherwise, if the root has been trimmed, garbage collect.\n\t } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n\t offsetShift = 0;\n\t\n\t // Identify the new top root node of the subtree of the old root.\n\t while (newRoot) {\n\t var beginIndex = (newOrigin >>> newLevel) & MASK;\n\t if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n\t break;\n\t }\n\t if (beginIndex) {\n\t offsetShift += (1 << newLevel) * beginIndex;\n\t }\n\t newLevel -= SHIFT;\n\t newRoot = newRoot.array[beginIndex];\n\t }\n\t\n\t // Trim the new sides of the new root.\n\t if (newRoot && newOrigin > oldOrigin) {\n\t newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n\t }\n\t if (newRoot && newTailOffset < oldTailOffset) {\n\t newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n\t }\n\t if (offsetShift) {\n\t newOrigin -= offsetShift;\n\t newCapacity -= offsetShift;\n\t }\n\t }\n\t\n\t if (list.__ownerID) {\n\t list.size = newCapacity - newOrigin;\n\t list._origin = newOrigin;\n\t list._capacity = newCapacity;\n\t list._level = newLevel;\n\t list._root = newRoot;\n\t list._tail = newTail;\n\t list.__hash = undefined;\n\t list.__altered = true;\n\t return list;\n\t }\n\t return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n\t }\n\t\n\t function mergeIntoListWith(list, merger, iterables) {\n\t var iters = [];\n\t var maxSize = 0;\n\t for (var ii = 0; ii < iterables.length; ii++) {\n\t var value = iterables[ii];\n\t var iter = IndexedIterable(value);\n\t if (iter.size > maxSize) {\n\t maxSize = iter.size;\n\t }\n\t if (!isIterable(value)) {\n\t iter = iter.map(function(v ) {return fromJS(v)});\n\t }\n\t iters.push(iter);\n\t }\n\t if (maxSize > list.size) {\n\t list = list.setSize(maxSize);\n\t }\n\t return mergeIntoCollectionWith(list, merger, iters);\n\t }\n\t\n\t function getTailOffset(size) {\n\t return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n\t }\n\t\n\t createClass(OrderedMap, Map);\n\t\n\t // @pragma Construction\n\t\n\t function OrderedMap(value) {\n\t return value === null || value === undefined ? emptyOrderedMap() :\n\t isOrderedMap(value) ? value :\n\t emptyOrderedMap().withMutations(function(map ) {\n\t var iter = KeyedIterable(value);\n\t assertNotInfinite(iter.size);\n\t iter.forEach(function(v, k) {return map.set(k, v)});\n\t });\n\t }\n\t\n\t OrderedMap.of = function(/*...values*/) {\n\t return this(arguments);\n\t };\n\t\n\t OrderedMap.prototype.toString = function() {\n\t return this.__toString('OrderedMap {', '}');\n\t };\n\t\n\t // @pragma Access\n\t\n\t OrderedMap.prototype.get = function(k, notSetValue) {\n\t var index = this._map.get(k);\n\t return index !== undefined ? this._list.get(index)[1] : notSetValue;\n\t };\n\t\n\t // @pragma Modification\n\t\n\t OrderedMap.prototype.clear = function() {\n\t if (this.size === 0) {\n\t return this;\n\t }\n\t if (this.__ownerID) {\n\t this.size = 0;\n\t this._map.clear();\n\t this._list.clear();\n\t return this;\n\t }\n\t return emptyOrderedMap();\n\t };\n\t\n\t OrderedMap.prototype.set = function(k, v) {\n\t return updateOrderedMap(this, k, v);\n\t };\n\t\n\t OrderedMap.prototype.remove = function(k) {\n\t return updateOrderedMap(this, k, NOT_SET);\n\t };\n\t\n\t OrderedMap.prototype.wasAltered = function() {\n\t return this._map.wasAltered() || this._list.wasAltered();\n\t };\n\t\n\t OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n\t return this._list.__iterate(\n\t function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n\t reverse\n\t );\n\t };\n\t\n\t OrderedMap.prototype.__iterator = function(type, reverse) {\n\t return this._list.fromEntrySeq().__iterator(type, reverse);\n\t };\n\t\n\t OrderedMap.prototype.__ensureOwner = function(ownerID) {\n\t if (ownerID === this.__ownerID) {\n\t return this;\n\t }\n\t var newMap = this._map.__ensureOwner(ownerID);\n\t var newList = this._list.__ensureOwner(ownerID);\n\t if (!ownerID) {\n\t this.__ownerID = ownerID;\n\t this._map = newMap;\n\t this._list = newList;\n\t return this;\n\t }\n\t return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n\t };\n\t\n\t\n\t function isOrderedMap(maybeOrderedMap) {\n\t return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n\t }\n\t\n\t OrderedMap.isOrderedMap = isOrderedMap;\n\t\n\t OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n\t OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\t\n\t\n\t\n\t function makeOrderedMap(map, list, ownerID, hash) {\n\t var omap = Object.create(OrderedMap.prototype);\n\t omap.size = map ? map.size : 0;\n\t omap._map = map;\n\t omap._list = list;\n\t omap.__ownerID = ownerID;\n\t omap.__hash = hash;\n\t return omap;\n\t }\n\t\n\t var EMPTY_ORDERED_MAP;\n\t function emptyOrderedMap() {\n\t return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n\t }\n\t\n\t function updateOrderedMap(omap, k, v) {\n\t var map = omap._map;\n\t var list = omap._list;\n\t var i = map.get(k);\n\t var has = i !== undefined;\n\t var newMap;\n\t var newList;\n\t if (v === NOT_SET) { // removed\n\t if (!has) {\n\t return omap;\n\t }\n\t if (list.size >= SIZE && list.size >= map.size * 2) {\n\t newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n\t newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n\t if (omap.__ownerID) {\n\t newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n\t }\n\t } else {\n\t newMap = map.remove(k);\n\t newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n\t }\n\t } else {\n\t if (has) {\n\t if (v === list.get(i)[1]) {\n\t return omap;\n\t }\n\t newMap = map;\n\t newList = list.set(i, [k, v]);\n\t } else {\n\t newMap = map.set(k, list.size);\n\t newList = list.set(list.size, [k, v]);\n\t }\n\t }\n\t if (omap.__ownerID) {\n\t omap.size = newMap.size;\n\t omap._map = newMap;\n\t omap._list = newList;\n\t omap.__hash = undefined;\n\t return omap;\n\t }\n\t return makeOrderedMap(newMap, newList);\n\t }\n\t\n\t createClass(ToKeyedSequence, KeyedSeq);\n\t function ToKeyedSequence(indexed, useKeys) {\n\t this._iter = indexed;\n\t this._useKeys = useKeys;\n\t this.size = indexed.size;\n\t }\n\t\n\t ToKeyedSequence.prototype.get = function(key, notSetValue) {\n\t return this._iter.get(key, notSetValue);\n\t };\n\t\n\t ToKeyedSequence.prototype.has = function(key) {\n\t return this._iter.has(key);\n\t };\n\t\n\t ToKeyedSequence.prototype.valueSeq = function() {\n\t return this._iter.valueSeq();\n\t };\n\t\n\t ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n\t var reversedSequence = reverseFactory(this, true);\n\t if (!this._useKeys) {\n\t reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n\t }\n\t return reversedSequence;\n\t };\n\t\n\t ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n\t var mappedSequence = mapFactory(this, mapper, context);\n\t if (!this._useKeys) {\n\t mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n\t }\n\t return mappedSequence;\n\t };\n\t\n\t ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n\t var ii;\n\t return this._iter.__iterate(\n\t this._useKeys ?\n\t function(v, k) {return fn(v, k, this$0)} :\n\t ((ii = reverse ? resolveSize(this) : 0),\n\t function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n\t reverse\n\t );\n\t };\n\t\n\t ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n\t if (this._useKeys) {\n\t return this._iter.__iterator(type, reverse);\n\t }\n\t var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n\t var ii = reverse ? resolveSize(this) : 0;\n\t return new Iterator(function() {\n\t var step = iterator.next();\n\t return step.done ? step :\n\t iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n\t });\n\t };\n\t\n\t ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\t\n\t\n\t createClass(ToIndexedSequence, IndexedSeq);\n\t function ToIndexedSequence(iter) {\n\t this._iter = iter;\n\t this.size = iter.size;\n\t }\n\t\n\t ToIndexedSequence.prototype.includes = function(value) {\n\t return this._iter.includes(value);\n\t };\n\t\n\t ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n\t var iterations = 0;\n\t return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n\t };\n\t\n\t ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n\t var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n\t var iterations = 0;\n\t return new Iterator(function() {\n\t var step = iterator.next();\n\t return step.done ? step :\n\t iteratorValue(type, iterations++, step.value, step)\n\t });\n\t };\n\t\n\t\n\t\n\t createClass(ToSetSequence, SetSeq);\n\t function ToSetSequence(iter) {\n\t this._iter = iter;\n\t this.size = iter.size;\n\t }\n\t\n\t ToSetSequence.prototype.has = function(key) {\n\t return this._iter.includes(key);\n\t };\n\t\n\t ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n\t return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n\t };\n\t\n\t ToSetSequence.prototype.__iterator = function(type, reverse) {\n\t var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n\t return new Iterator(function() {\n\t var step = iterator.next();\n\t return step.done ? step :\n\t iteratorValue(type, step.value, step.value, step);\n\t });\n\t };\n\t\n\t\n\t\n\t createClass(FromEntriesSequence, KeyedSeq);\n\t function FromEntriesSequence(entries) {\n\t this._iter = entries;\n\t this.size = entries.size;\n\t }\n\t\n\t FromEntriesSequence.prototype.entrySeq = function() {\n\t return this._iter.toSeq();\n\t };\n\t\n\t FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n\t return this._iter.__iterate(function(entry ) {\n\t // Check if entry exists first so array access doesn't throw for holes\n\t // in the parent iteration.\n\t if (entry) {\n\t validateEntry(entry);\n\t var indexedIterable = isIterable(entry);\n\t return fn(\n\t indexedIterable ? entry.get(1) : entry[1],\n\t indexedIterable ? entry.get(0) : entry[0],\n\t this$0\n\t );\n\t }\n\t }, reverse);\n\t };\n\t\n\t FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n\t var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n\t return new Iterator(function() {\n\t while (true) {\n\t var step = iterator.next();\n\t if (step.done) {\n\t return step;\n\t }\n\t var entry = step.value;\n\t // Check if entry exists first so array access doesn't throw for holes\n\t // in the parent iteration.\n\t if (entry) {\n\t validateEntry(entry);\n\t var indexedIterable = isIterable(entry);\n\t return iteratorValue(\n\t type,\n\t indexedIterable ? entry.get(0) : entry[0],\n\t indexedIterable ? entry.get(1) : entry[1],\n\t step\n\t );\n\t }\n\t }\n\t });\n\t };\n\t\n\t\n\t ToIndexedSequence.prototype.cacheResult =\n\t ToKeyedSequence.prototype.cacheResult =\n\t ToSetSequence.prototype.cacheResult =\n\t FromEntriesSequence.prototype.cacheResult =\n\t cacheResultThrough;\n\t\n\t\n\t function flipFactory(iterable) {\n\t var flipSequence = makeSequence(iterable);\n\t flipSequence._iter = iterable;\n\t flipSequence.size = iterable.size;\n\t flipSequence.flip = function() {return iterable};\n\t flipSequence.reverse = function () {\n\t var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n\t reversedSequence.flip = function() {return iterable.reverse()};\n\t return reversedSequence;\n\t };\n\t flipSequence.has = function(key ) {return iterable.includes(key)};\n\t flipSequence.includes = function(key ) {return iterable.has(key)};\n\t flipSequence.cacheResult = cacheResultThrough;\n\t flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n\t return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n\t }\n\t flipSequence.__iteratorUncached = function(type, reverse) {\n\t if (type === ITERATE_ENTRIES) {\n\t var iterator = iterable.__iterator(type, reverse);\n\t return new Iterator(function() {\n\t var step = iterator.next();\n\t if (!step.done) {\n\t var k = step.value[0];\n\t step.value[0] = step.value[1];\n\t step.value[1] = k;\n\t }\n\t return step;\n\t });\n\t }\n\t return iterable.__iterator(\n\t type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n\t reverse\n\t );\n\t }\n\t return flipSequence;\n\t }\n\t\n\t\n\t function mapFactory(iterable, mapper, context) {\n\t var mappedSequence = makeSequence(iterable);\n\t mappedSequence.size = iterable.size;\n\t mappedSequence.has = function(key ) {return iterable.has(key)};\n\t mappedSequence.get = function(key, notSetValue) {\n\t var v = iterable.get(key, NOT_SET);\n\t return v === NOT_SET ?\n\t notSetValue :\n\t mapper.call(context, v, key, iterable);\n\t };\n\t mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n\t return iterable.__iterate(\n\t function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n\t reverse\n\t );\n\t }\n\t mappedSequence.__iteratorUncached = function (type, reverse) {\n\t var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n\t return new Iterator(function() {\n\t var step = iterator.next();\n\t if (step.done) {\n\t return step;\n\t }\n\t var entry = step.value;\n\t var key = entry[0];\n\t return iteratorValue(\n\t type,\n\t key,\n\t mapper.call(context, entry[1], key, iterable),\n\t step\n\t );\n\t });\n\t }\n\t return mappedSequence;\n\t }\n\t\n\t\n\t function reverseFactory(iterable, useKeys) {\n\t var reversedSequence = makeSequence(iterable);\n\t reversedSequence._iter = iterable;\n\t reversedSequence.size = iterable.size;\n\t reversedSequence.reverse = function() {return iterable};\n\t if (iterable.flip) {\n\t reversedSequence.flip = function () {\n\t var flipSequence = flipFactory(iterable);\n\t flipSequence.reverse = function() {return iterable.flip()};\n\t return flipSequence;\n\t };\n\t }\n\t reversedSequence.get = function(key, notSetValue) \n\t {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n\t reversedSequence.has = function(key )\n\t {return iterable.has(useKeys ? key : -1 - key)};\n\t reversedSequence.includes = function(value ) {return iterable.includes(value)};\n\t reversedSequence.cacheResult = cacheResultThrough;\n\t reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n\t return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n\t };\n\t reversedSequence.__iterator =\n\t function(type, reverse) {return iterable.__iterator(type, !reverse)};\n\t return reversedSequence;\n\t }\n\t\n\t\n\t function filterFactory(iterable, predicate, context, useKeys) {\n\t var filterSequence = makeSequence(iterable);\n\t if (useKeys) {\n\t filterSequence.has = function(key ) {\n\t var v = iterable.get(key, NOT_SET);\n\t return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n\t };\n\t filterSequence.get = function(key, notSetValue) {\n\t var v = iterable.get(key, NOT_SET);\n\t return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n\t v : notSetValue;\n\t };\n\t }\n\t filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n\t var iterations = 0;\n\t iterable.__iterate(function(v, k, c) {\n\t if (predicate.call(context, v, k, c)) {\n\t iterations++;\n\t return fn(v, useKeys ? k : iterations - 1, this$0);\n\t }\n\t }, reverse);\n\t return iterations;\n\t };\n\t filterSequence.__iteratorUncached = function (type, reverse) {\n\t var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n\t var iterations = 0;\n\t return new Iterator(function() {\n\t while (true) {\n\t var step = iterator.next();\n\t if (step.done) {\n\t return step;\n\t }\n\t var entry = step.value;\n\t var key = entry[0];\n\t var value = entry[1];\n\t if (predicate.call(context, value, key, iterable)) {\n\t return iteratorValue(type, useKeys ? key : iterations++, value, step);\n\t }\n\t }\n\t });\n\t }\n\t return filterSequence;\n\t }\n\t\n\t\n\t function countByFactory(iterable, grouper, context) {\n\t var groups = Map().asMutable();\n\t iterable.__iterate(function(v, k) {\n\t groups.update(\n\t grouper.call(context, v, k, iterable),\n\t 0,\n\t function(a ) {return a + 1}\n\t );\n\t });\n\t return groups.asImmutable();\n\t }\n\t\n\t\n\t function groupByFactory(iterable, grouper, context) {\n\t var isKeyedIter = isKeyed(iterable);\n\t var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n\t iterable.__iterate(function(v, k) {\n\t groups.update(\n\t grouper.call(context, v, k, iterable),\n\t function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n\t );\n\t });\n\t var coerce = iterableClass(iterable);\n\t return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n\t }\n\t\n\t\n\t function sliceFactory(iterable, begin, end, useKeys) {\n\t var originalSize = iterable.size;\n\t\n\t // Sanitize begin & end using this shorthand for ToInt32(argument)\n\t // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n\t if (begin !== undefined) {\n\t begin = begin | 0;\n\t }\n\t if (end !== undefined) {\n\t if (end === Infinity) {\n\t end = originalSize;\n\t } else {\n\t end = end | 0;\n\t }\n\t }\n\t\n\t if (wholeSlice(begin, end, originalSize)) {\n\t return iterable;\n\t }\n\t\n\t var resolvedBegin = resolveBegin(begin, originalSize);\n\t var resolvedEnd = resolveEnd(end, originalSize);\n\t\n\t // begin or end will be NaN if they were provided as negative numbers and\n\t // this iterable's size is unknown. In that case, cache first so there is\n\t // a known size and these do not resolve to NaN.\n\t if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n\t return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n\t }\n\t\n\t // Note: resolvedEnd is undefined when the original sequence's length is\n\t // unknown and this slice did not supply an end and should contain all\n\t // elements after resolvedBegin.\n\t // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n\t var resolvedSize = resolvedEnd - resolvedBegin;\n\t var sliceSize;\n\t if (resolvedSize === resolvedSize) {\n\t sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n\t }\n\t\n\t var sliceSeq = makeSequence(iterable);\n\t\n\t // If iterable.size is undefined, the size of the realized sliceSeq is\n\t // unknown at this point unless the number of items to slice is 0\n\t sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\t\n\t if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n\t sliceSeq.get = function (index, notSetValue) {\n\t index = wrapIndex(this, index);\n\t return index >= 0 && index < sliceSize ?\n\t iterable.get(index + resolvedBegin, notSetValue) :\n\t notSetValue;\n\t }\n\t }\n\t\n\t sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n\t if (sliceSize === 0) {\n\t return 0;\n\t }\n\t if (reverse) {\n\t return this.cacheResult().__iterate(fn, reverse);\n\t }\n\t var skipped = 0;\n\t var isSkipping = true;\n\t var iterations = 0;\n\t iterable.__iterate(function(v, k) {\n\t if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n\t iterations++;\n\t return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n\t iterations !== sliceSize;\n\t }\n\t });\n\t return iterations;\n\t };\n\t\n\t sliceSeq.__iteratorUncached = function(type, reverse) {\n\t if (sliceSize !== 0 && reverse) {\n\t return this.cacheResult().__iterator(type, reverse);\n\t }\n\t // Don't bother instantiating parent iterator if taking 0.\n\t var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n\t var skipped = 0;\n\t var iterations = 0;\n\t return new Iterator(function() {\n\t while (skipped++ < resolvedBegin) {\n\t iterator.next();\n\t }\n\t if (++iterations > sliceSize) {\n\t return iteratorDone();\n\t }\n\t var step = iterator.next();\n\t if (useKeys || type === ITERATE_VALUES) {\n\t return step;\n\t } else if (type === ITERATE_KEYS) {\n\t return iteratorValue(type, iterations - 1, undefined, step);\n\t } else {\n\t return iteratorValue(type, iterations - 1, step.value[1], step);\n\t }\n\t });\n\t }\n\t\n\t return sliceSeq;\n\t }\n\t\n\t\n\t function takeWhileFactory(iterable, predicate, context) {\n\t var takeSequence = makeSequence(iterable);\n\t takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n\t if (reverse) {\n\t return this.cacheResult().__iterate(fn, reverse);\n\t }\n\t var iterations = 0;\n\t iterable.__iterate(function(v, k, c) \n\t {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n\t );\n\t return iterations;\n\t };\n\t takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n\t if (reverse) {\n\t return this.cacheResult().__iterator(type, reverse);\n\t }\n\t var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n\t var iterating = true;\n\t return new Iterator(function() {\n\t if (!iterating) {\n\t return iteratorDone();\n\t }\n\t var step = iterator.next();\n\t if (step.done) {\n\t return step;\n\t }\n\t var entry = step.value;\n\t var k = entry[0];\n\t var v = entry[1];\n\t if (!predicate.call(context, v, k, this$0)) {\n\t iterating = false;\n\t return iteratorDone();\n\t }\n\t return type === ITERATE_ENTRIES ? step :\n\t iteratorValue(type, k, v, step);\n\t });\n\t };\n\t return takeSequence;\n\t }\n\t\n\t\n\t function skipWhileFactory(iterable, predicate, context, useKeys) {\n\t var skipSequence = makeSequence(iterable);\n\t skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n\t if (reverse) {\n\t return this.cacheResult().__iterate(fn, reverse);\n\t }\n\t var isSkipping = true;\n\t var iterations = 0;\n\t iterable.__iterate(function(v, k, c) {\n\t if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n\t iterations++;\n\t return fn(v, useKeys ? k : iterations - 1, this$0);\n\t }\n\t });\n\t return iterations;\n\t };\n\t skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n\t if (reverse) {\n\t return this.cacheResult().__iterator(type, reverse);\n\t }\n\t var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n\t var skipping = true;\n\t var iterations = 0;\n\t return new Iterator(function() {\n\t var step, k, v;\n\t do {\n\t step = iterator.next();\n\t if (step.done) {\n\t if (useKeys || type === ITERATE_VALUES) {\n\t return step;\n\t } else if (type === ITERATE_KEYS) {\n\t return iteratorValue(type, iterations++, undefined, step);\n\t } else {\n\t return iteratorValue(type, iterations++, step.value[1], step);\n\t }\n\t }\n\t var entry = step.value;\n\t k = entry[0];\n\t v = entry[1];\n\t skipping && (skipping = predicate.call(context, v, k, this$0));\n\t } while (skipping);\n\t return type === ITERATE_ENTRIES ? step :\n\t iteratorValue(type, k, v, step);\n\t });\n\t };\n\t return skipSequence;\n\t }\n\t\n\t\n\t function concatFactory(iterable, values) {\n\t var isKeyedIterable = isKeyed(iterable);\n\t var iters = [iterable].concat(values).map(function(v ) {\n\t if (!isIterable(v)) {\n\t v = isKeyedIterable ?\n\t keyedSeqFromValue(v) :\n\t indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n\t } else if (isKeyedIterable) {\n\t v = KeyedIterable(v);\n\t }\n\t return v;\n\t }).filter(function(v ) {return v.size !== 0});\n\t\n\t if (iters.length === 0) {\n\t return iterable;\n\t }\n\t\n\t if (iters.length === 1) {\n\t var singleton = iters[0];\n\t if (singleton === iterable ||\n\t isKeyedIterable && isKeyed(singleton) ||\n\t isIndexed(iterable) && isIndexed(singleton)) {\n\t return singleton;\n\t }\n\t }\n\t\n\t var concatSeq = new ArraySeq(iters);\n\t if (isKeyedIterable) {\n\t concatSeq = concatSeq.toKeyedSeq();\n\t } else if (!isIndexed(iterable)) {\n\t concatSeq = concatSeq.toSetSeq();\n\t }\n\t concatSeq = concatSeq.flatten(true);\n\t concatSeq.size = iters.reduce(\n\t function(sum, seq) {\n\t if (sum !== undefined) {\n\t var size = seq.size;\n\t if (size !== undefined) {\n\t return sum + size;\n\t }\n\t }\n\t },\n\t 0\n\t );\n\t return concatSeq;\n\t }\n\t\n\t\n\t function flattenFactory(iterable, depth, useKeys) {\n\t var flatSequence = makeSequence(iterable);\n\t flatSequence.__iterateUncached = function(fn, reverse) {\n\t var iterations = 0;\n\t var stopped = false;\n\t function flatDeep(iter, currentDepth) {var this$0 = this;\n\t iter.__iterate(function(v, k) {\n\t if ((!depth || currentDepth < depth) && isIterable(v)) {\n\t flatDeep(v, currentDepth + 1);\n\t } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n\t stopped = true;\n\t }\n\t return !stopped;\n\t }, reverse);\n\t }\n\t flatDeep(iterable, 0);\n\t return iterations;\n\t }\n\t flatSequence.__iteratorUncached = function(type, reverse) {\n\t var iterator = iterable.__iterator(type, reverse);\n\t var stack = [];\n\t var iterations = 0;\n\t return new Iterator(function() {\n\t while (iterator) {\n\t var step = iterator.next();\n\t if (step.done !== false) {\n\t iterator = stack.pop();\n\t continue;\n\t }\n\t var v = step.value;\n\t if (type === ITERATE_ENTRIES) {\n\t v = v[1];\n\t }\n\t if ((!depth || stack.length < depth) && isIterable(v)) {\n\t stack.push(iterator);\n\t iterator = v.__iterator(type, reverse);\n\t } else {\n\t return useKeys ? step : iteratorValue(type, iterations++, v, step);\n\t }\n\t }\n\t return iteratorDone();\n\t });\n\t }\n\t return flatSequence;\n\t }\n\t\n\t\n\t function flatMapFactory(iterable, mapper, context) {\n\t var coerce = iterableClass(iterable);\n\t return iterable.toSeq().map(\n\t function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n\t ).flatten(true);\n\t }\n\t\n\t\n\t function interposeFactory(iterable, separator) {\n\t var interposedSequence = makeSequence(iterable);\n\t interposedSequence.size = iterable.size && iterable.size * 2 -1;\n\t interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n\t var iterations = 0;\n\t iterable.__iterate(function(v, k) \n\t {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n\t fn(v, iterations++, this$0) !== false},\n\t reverse\n\t );\n\t return iterations;\n\t };\n\t interposedSequence.__iteratorUncached = function(type, reverse) {\n\t var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n\t var iterations = 0;\n\t var step;\n\t return new Iterator(function() {\n\t if (!step || iterations % 2) {\n\t step = iterator.next();\n\t if (step.done) {\n\t return step;\n\t }\n\t }\n\t return iterations % 2 ?\n\t iteratorValue(type, iterations++, separator) :\n\t iteratorValue(type, iterations++, step.value, step);\n\t });\n\t };\n\t return interposedSequence;\n\t }\n\t\n\t\n\t function sortFactory(iterable, comparator, mapper) {\n\t if (!comparator) {\n\t comparator = defaultComparator;\n\t }\n\t var isKeyedIterable = isKeyed(iterable);\n\t var index = 0;\n\t var entries = iterable.toSeq().map(\n\t function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n\t ).toArray();\n\t entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n\t isKeyedIterable ?\n\t function(v, i) { entries[i].length = 2; } :\n\t function(v, i) { entries[i] = v[1]; }\n\t );\n\t return isKeyedIterable ? KeyedSeq(entries) :\n\t isIndexed(iterable) ? IndexedSeq(entries) :\n\t SetSeq(entries);\n\t }\n\t\n\t\n\t function maxFactory(iterable, comparator, mapper) {\n\t if (!comparator) {\n\t comparator = defaultComparator;\n\t }\n\t if (mapper) {\n\t var entry = iterable.toSeq()\n\t .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n\t .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n\t return entry && entry[0];\n\t } else {\n\t return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n\t }\n\t }\n\t\n\t function maxCompare(comparator, a, b) {\n\t var comp = comparator(b, a);\n\t // b is considered the new max if the comparator declares them equal, but\n\t // they are not equal and b is in fact a nullish value.\n\t return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n\t }\n\t\n\t\n\t function zipWithFactory(keyIter, zipper, iters) {\n\t var zipSequence = makeSequence(keyIter);\n\t zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n\t // Note: this a generic base implementation of __iterate in terms of\n\t // __iterator which may be more generically useful in the future.\n\t zipSequence.__iterate = function(fn, reverse) {\n\t /* generic:\n\t var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n\t var step;\n\t var iterations = 0;\n\t while (!(step = iterator.next()).done) {\n\t iterations++;\n\t if (fn(step.value[1], step.value[0], this) === false) {\n\t break;\n\t }\n\t }\n\t return iterations;\n\t */\n\t // indexed:\n\t var iterator = this.__iterator(ITERATE_VALUES, reverse);\n\t var step;\n\t var iterations = 0;\n\t while (!(step = iterator.next()).done) {\n\t if (fn(step.value, iterations++, this) === false) {\n\t break;\n\t }\n\t }\n\t return iterations;\n\t };\n\t zipSequence.__iteratorUncached = function(type, reverse) {\n\t var iterators = iters.map(function(i )\n\t {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n\t );\n\t var iterations = 0;\n\t var isDone = false;\n\t return new Iterator(function() {\n\t var steps;\n\t if (!isDone) {\n\t steps = iterators.map(function(i ) {return i.next()});\n\t isDone = steps.some(function(s ) {return s.done});\n\t }\n\t if (isDone) {\n\t return iteratorDone();\n\t }\n\t return iteratorValue(\n\t type,\n\t iterations++,\n\t zipper.apply(null, steps.map(function(s ) {return s.value}))\n\t );\n\t });\n\t };\n\t return zipSequence\n\t }\n\t\n\t\n\t // #pragma Helper Functions\n\t\n\t function reify(iter, seq) {\n\t return isSeq(iter) ? seq : iter.constructor(seq);\n\t }\n\t\n\t function validateEntry(entry) {\n\t if (entry !== Object(entry)) {\n\t throw new TypeError('Expected [K, V] tuple: ' + entry);\n\t }\n\t }\n\t\n\t function resolveSize(iter) {\n\t assertNotInfinite(iter.size);\n\t return ensureSize(iter);\n\t }\n\t\n\t function iterableClass(iterable) {\n\t return isKeyed(iterable) ? KeyedIterable :\n\t isIndexed(iterable) ? IndexedIterable :\n\t SetIterable;\n\t }\n\t\n\t function makeSequence(iterable) {\n\t return Object.create(\n\t (\n\t isKeyed(iterable) ? KeyedSeq :\n\t isIndexed(iterable) ? IndexedSeq :\n\t SetSeq\n\t ).prototype\n\t );\n\t }\n\t\n\t function cacheResultThrough() {\n\t if (this._iter.cacheResult) {\n\t this._iter.cacheResult();\n\t this.size = this._iter.size;\n\t return this;\n\t } else {\n\t return Seq.prototype.cacheResult.call(this);\n\t }\n\t }\n\t\n\t function defaultComparator(a, b) {\n\t return a > b ? 1 : a < b ? -1 : 0;\n\t }\n\t\n\t function forceIterator(keyPath) {\n\t var iter = getIterator(keyPath);\n\t if (!iter) {\n\t // Array might not be iterable in this environment, so we need a fallback\n\t // to our wrapped type.\n\t if (!isArrayLike(keyPath)) {\n\t throw new TypeError('Expected iterable or array-like: ' + keyPath);\n\t }\n\t iter = getIterator(Iterable(keyPath));\n\t }\n\t return iter;\n\t }\n\t\n\t createClass(Record, KeyedCollection);\n\t\n\t function Record(defaultValues, name) {\n\t var hasInitialized;\n\t\n\t var RecordType = function Record(values) {\n\t if (values instanceof RecordType) {\n\t return values;\n\t }\n\t if (!(this instanceof RecordType)) {\n\t return new RecordType(values);\n\t }\n\t if (!hasInitialized) {\n\t hasInitialized = true;\n\t var keys = Object.keys(defaultValues);\n\t setProps(RecordTypePrototype, keys);\n\t RecordTypePrototype.size = keys.length;\n\t RecordTypePrototype._name = name;\n\t RecordTypePrototype._keys = keys;\n\t RecordTypePrototype._defaultValues = defaultValues;\n\t }\n\t this._map = Map(values);\n\t };\n\t\n\t var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n\t RecordTypePrototype.constructor = RecordType;\n\t\n\t return RecordType;\n\t }\n\t\n\t Record.prototype.toString = function() {\n\t return this.__toString(recordName(this) + ' {', '}');\n\t };\n\t\n\t // @pragma Access\n\t\n\t Record.prototype.has = function(k) {\n\t return this._defaultValues.hasOwnProperty(k);\n\t };\n\t\n\t Record.prototype.get = function(k, notSetValue) {\n\t if (!this.has(k)) {\n\t return notSetValue;\n\t }\n\t var defaultVal = this._defaultValues[k];\n\t return this._map ? this._map.get(k, defaultVal) : defaultVal;\n\t };\n\t\n\t // @pragma Modification\n\t\n\t Record.prototype.clear = function() {\n\t if (this.__ownerID) {\n\t this._map && this._map.clear();\n\t return this;\n\t }\n\t var RecordType = this.constructor;\n\t return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n\t };\n\t\n\t Record.prototype.set = function(k, v) {\n\t if (!this.has(k)) {\n\t throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n\t }\n\t if (this._map && !this._map.has(k)) {\n\t var defaultVal = this._defaultValues[k];\n\t if (v === defaultVal) {\n\t return this;\n\t }\n\t }\n\t var newMap = this._map && this._map.set(k, v);\n\t if (this.__ownerID || newMap === this._map) {\n\t return this;\n\t }\n\t return makeRecord(this, newMap);\n\t };\n\t\n\t Record.prototype.remove = function(k) {\n\t if (!this.has(k)) {\n\t return this;\n\t }\n\t var newMap = this._map && this._map.remove(k);\n\t if (this.__ownerID || newMap === this._map) {\n\t return this;\n\t }\n\t return makeRecord(this, newMap);\n\t };\n\t\n\t Record.prototype.wasAltered = function() {\n\t return this._map.wasAltered();\n\t };\n\t\n\t Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n\t return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n\t };\n\t\n\t Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n\t return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n\t };\n\t\n\t Record.prototype.__ensureOwner = function(ownerID) {\n\t if (ownerID === this.__ownerID) {\n\t return this;\n\t }\n\t var newMap = this._map && this._map.__ensureOwner(ownerID);\n\t if (!ownerID) {\n\t this.__ownerID = ownerID;\n\t this._map = newMap;\n\t return this;\n\t }\n\t return makeRecord(this, newMap, ownerID);\n\t };\n\t\n\t\n\t var RecordPrototype = Record.prototype;\n\t RecordPrototype[DELETE] = RecordPrototype.remove;\n\t RecordPrototype.deleteIn =\n\t RecordPrototype.removeIn = MapPrototype.removeIn;\n\t RecordPrototype.merge = MapPrototype.merge;\n\t RecordPrototype.mergeWith = MapPrototype.mergeWith;\n\t RecordPrototype.mergeIn = MapPrototype.mergeIn;\n\t RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n\t RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n\t RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n\t RecordPrototype.setIn = MapPrototype.setIn;\n\t RecordPrototype.update = MapPrototype.update;\n\t RecordPrototype.updateIn = MapPrototype.updateIn;\n\t RecordPrototype.withMutations = MapPrototype.withMutations;\n\t RecordPrototype.asMutable = MapPrototype.asMutable;\n\t RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\t\n\t\n\t function makeRecord(likeRecord, map, ownerID) {\n\t var record = Object.create(Object.getPrototypeOf(likeRecord));\n\t record._map = map;\n\t record.__ownerID = ownerID;\n\t return record;\n\t }\n\t\n\t function recordName(record) {\n\t return record._name || record.constructor.name || 'Record';\n\t }\n\t\n\t function setProps(prototype, names) {\n\t try {\n\t names.forEach(setProp.bind(undefined, prototype));\n\t } catch (error) {\n\t // Object.defineProperty failed. Probably IE8.\n\t }\n\t }\n\t\n\t function setProp(prototype, name) {\n\t Object.defineProperty(prototype, name, {\n\t get: function() {\n\t return this.get(name);\n\t },\n\t set: function(value) {\n\t invariant(this.__ownerID, 'Cannot set on an immutable record.');\n\t this.set(name, value);\n\t }\n\t });\n\t }\n\t\n\t createClass(Set, SetCollection);\n\t\n\t // @pragma Construction\n\t\n\t function Set(value) {\n\t return value === null || value === undefined ? emptySet() :\n\t isSet(value) && !isOrdered(value) ? value :\n\t emptySet().withMutations(function(set ) {\n\t var iter = SetIterable(value);\n\t assertNotInfinite(iter.size);\n\t iter.forEach(function(v ) {return set.add(v)});\n\t });\n\t }\n\t\n\t Set.of = function(/*...values*/) {\n\t return this(arguments);\n\t };\n\t\n\t Set.fromKeys = function(value) {\n\t return this(KeyedIterable(value).keySeq());\n\t };\n\t\n\t Set.prototype.toString = function() {\n\t return this.__toString('Set {', '}');\n\t };\n\t\n\t // @pragma Access\n\t\n\t Set.prototype.has = function(value) {\n\t return this._map.has(value);\n\t };\n\t\n\t // @pragma Modification\n\t\n\t Set.prototype.add = function(value) {\n\t return updateSet(this, this._map.set(value, true));\n\t };\n\t\n\t Set.prototype.remove = function(value) {\n\t return updateSet(this, this._map.remove(value));\n\t };\n\t\n\t Set.prototype.clear = function() {\n\t return updateSet(this, this._map.clear());\n\t };\n\t\n\t // @pragma Composition\n\t\n\t Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n\t iters = iters.filter(function(x ) {return x.size !== 0});\n\t if (iters.length === 0) {\n\t return this;\n\t }\n\t if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n\t return this.constructor(iters[0]);\n\t }\n\t return this.withMutations(function(set ) {\n\t for (var ii = 0; ii < iters.length; ii++) {\n\t SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n\t }\n\t });\n\t };\n\t\n\t Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n\t if (iters.length === 0) {\n\t return this;\n\t }\n\t iters = iters.map(function(iter ) {return SetIterable(iter)});\n\t var originalSet = this;\n\t return this.withMutations(function(set ) {\n\t originalSet.forEach(function(value ) {\n\t if (!iters.every(function(iter ) {return iter.includes(value)})) {\n\t set.remove(value);\n\t }\n\t });\n\t });\n\t };\n\t\n\t Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n\t if (iters.length === 0) {\n\t return this;\n\t }\n\t iters = iters.map(function(iter ) {return SetIterable(iter)});\n\t var originalSet = this;\n\t return this.withMutations(function(set ) {\n\t originalSet.forEach(function(value ) {\n\t if (iters.some(function(iter ) {return iter.includes(value)})) {\n\t set.remove(value);\n\t }\n\t });\n\t });\n\t };\n\t\n\t Set.prototype.merge = function() {\n\t return this.union.apply(this, arguments);\n\t };\n\t\n\t Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n\t return this.union.apply(this, iters);\n\t };\n\t\n\t Set.prototype.sort = function(comparator) {\n\t // Late binding\n\t return OrderedSet(sortFactory(this, comparator));\n\t };\n\t\n\t Set.prototype.sortBy = function(mapper, comparator) {\n\t // Late binding\n\t return OrderedSet(sortFactory(this, comparator, mapper));\n\t };\n\t\n\t Set.prototype.wasAltered = function() {\n\t return this._map.wasAltered();\n\t };\n\t\n\t Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n\t return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n\t };\n\t\n\t Set.prototype.__iterator = function(type, reverse) {\n\t return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n\t };\n\t\n\t Set.prototype.__ensureOwner = function(ownerID) {\n\t if (ownerID === this.__ownerID) {\n\t return this;\n\t }\n\t var newMap = this._map.__ensureOwner(ownerID);\n\t if (!ownerID) {\n\t this.__ownerID = ownerID;\n\t this._map = newMap;\n\t return this;\n\t }\n\t return this.__make(newMap, ownerID);\n\t };\n\t\n\t\n\t function isSet(maybeSet) {\n\t return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n\t }\n\t\n\t Set.isSet = isSet;\n\t\n\t var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\t\n\t var SetPrototype = Set.prototype;\n\t SetPrototype[IS_SET_SENTINEL] = true;\n\t SetPrototype[DELETE] = SetPrototype.remove;\n\t SetPrototype.mergeDeep = SetPrototype.merge;\n\t SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n\t SetPrototype.withMutations = MapPrototype.withMutations;\n\t SetPrototype.asMutable = MapPrototype.asMutable;\n\t SetPrototype.asImmutable = MapPrototype.asImmutable;\n\t\n\t SetPrototype.__empty = emptySet;\n\t SetPrototype.__make = makeSet;\n\t\n\t function updateSet(set, newMap) {\n\t if (set.__ownerID) {\n\t set.size = newMap.size;\n\t set._map = newMap;\n\t return set;\n\t }\n\t return newMap === set._map ? set :\n\t newMap.size === 0 ? set.__empty() :\n\t set.__make(newMap);\n\t }\n\t\n\t function makeSet(map, ownerID) {\n\t var set = Object.create(SetPrototype);\n\t set.size = map ? map.size : 0;\n\t set._map = map;\n\t set.__ownerID = ownerID;\n\t return set;\n\t }\n\t\n\t var EMPTY_SET;\n\t function emptySet() {\n\t return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n\t }\n\t\n\t createClass(OrderedSet, Set);\n\t\n\t // @pragma Construction\n\t\n\t function OrderedSet(value) {\n\t return value === null || value === undefined ? emptyOrderedSet() :\n\t isOrderedSet(value) ? value :\n\t emptyOrderedSet().withMutations(function(set ) {\n\t var iter = SetIterable(value);\n\t assertNotInfinite(iter.size);\n\t iter.forEach(function(v ) {return set.add(v)});\n\t });\n\t }\n\t\n\t OrderedSet.of = function(/*...values*/) {\n\t return this(arguments);\n\t };\n\t\n\t OrderedSet.fromKeys = function(value) {\n\t return this(KeyedIterable(value).keySeq());\n\t };\n\t\n\t OrderedSet.prototype.toString = function() {\n\t return this.__toString('OrderedSet {', '}');\n\t };\n\t\n\t\n\t function isOrderedSet(maybeOrderedSet) {\n\t return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n\t }\n\t\n\t OrderedSet.isOrderedSet = isOrderedSet;\n\t\n\t var OrderedSetPrototype = OrderedSet.prototype;\n\t OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\t\n\t OrderedSetPrototype.__empty = emptyOrderedSet;\n\t OrderedSetPrototype.__make = makeOrderedSet;\n\t\n\t function makeOrderedSet(map, ownerID) {\n\t var set = Object.create(OrderedSetPrototype);\n\t set.size = map ? map.size : 0;\n\t set._map = map;\n\t set.__ownerID = ownerID;\n\t return set;\n\t }\n\t\n\t var EMPTY_ORDERED_SET;\n\t function emptyOrderedSet() {\n\t return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n\t }\n\t\n\t createClass(Stack, IndexedCollection);\n\t\n\t // @pragma Construction\n\t\n\t function Stack(value) {\n\t return value === null || value === undefined ? emptyStack() :\n\t isStack(value) ? value :\n\t emptyStack().unshiftAll(value);\n\t }\n\t\n\t Stack.of = function(/*...values*/) {\n\t return this(arguments);\n\t };\n\t\n\t Stack.prototype.toString = function() {\n\t return this.__toString('Stack [', ']');\n\t };\n\t\n\t // @pragma Access\n\t\n\t Stack.prototype.get = function(index, notSetValue) {\n\t var head = this._head;\n\t index = wrapIndex(this, index);\n\t while (head && index--) {\n\t head = head.next;\n\t }\n\t return head ? head.value : notSetValue;\n\t };\n\t\n\t Stack.prototype.peek = function() {\n\t return this._head && this._head.value;\n\t };\n\t\n\t // @pragma Modification\n\t\n\t Stack.prototype.push = function(/*...values*/) {\n\t if (arguments.length === 0) {\n\t return this;\n\t }\n\t var newSize = this.size + arguments.length;\n\t var head = this._head;\n\t for (var ii = arguments.length - 1; ii >= 0; ii--) {\n\t head = {\n\t value: arguments[ii],\n\t next: head\n\t };\n\t }\n\t if (this.__ownerID) {\n\t this.size = newSize;\n\t this._head = head;\n\t this.__hash = undefined;\n\t this.__altered = true;\n\t return this;\n\t }\n\t return makeStack(newSize, head);\n\t };\n\t\n\t Stack.prototype.pushAll = function(iter) {\n\t iter = IndexedIterable(iter);\n\t if (iter.size === 0) {\n\t return this;\n\t }\n\t assertNotInfinite(iter.size);\n\t var newSize = this.size;\n\t var head = this._head;\n\t iter.reverse().forEach(function(value ) {\n\t newSize++;\n\t head = {\n\t value: value,\n\t next: head\n\t };\n\t });\n\t if (this.__ownerID) {\n\t this.size = newSize;\n\t this._head = head;\n\t this.__hash = undefined;\n\t this.__altered = true;\n\t return this;\n\t }\n\t return makeStack(newSize, head);\n\t };\n\t\n\t Stack.prototype.pop = function() {\n\t return this.slice(1);\n\t };\n\t\n\t Stack.prototype.unshift = function(/*...values*/) {\n\t return this.push.apply(this, arguments);\n\t };\n\t\n\t Stack.prototype.unshiftAll = function(iter) {\n\t return this.pushAll(iter);\n\t };\n\t\n\t Stack.prototype.shift = function() {\n\t return this.pop.apply(this, arguments);\n\t };\n\t\n\t Stack.prototype.clear = function() {\n\t if (this.size === 0) {\n\t return this;\n\t }\n\t if (this.__ownerID) {\n\t this.size = 0;\n\t this._head = undefined;\n\t this.__hash = undefined;\n\t this.__altered = true;\n\t return this;\n\t }\n\t return emptyStack();\n\t };\n\t\n\t Stack.prototype.slice = function(begin, end) {\n\t if (wholeSlice(begin, end, this.size)) {\n\t return this;\n\t }\n\t var resolvedBegin = resolveBegin(begin, this.size);\n\t var resolvedEnd = resolveEnd(end, this.size);\n\t if (resolvedEnd !== this.size) {\n\t // super.slice(begin, end);\n\t return IndexedCollection.prototype.slice.call(this, begin, end);\n\t }\n\t var newSize = this.size - resolvedBegin;\n\t var head = this._head;\n\t while (resolvedBegin--) {\n\t head = head.next;\n\t }\n\t if (this.__ownerID) {\n\t this.size = newSize;\n\t this._head = head;\n\t this.__hash = undefined;\n\t this.__altered = true;\n\t return this;\n\t }\n\t return makeStack(newSize, head);\n\t };\n\t\n\t // @pragma Mutability\n\t\n\t Stack.prototype.__ensureOwner = function(ownerID) {\n\t if (ownerID === this.__ownerID) {\n\t return this;\n\t }\n\t if (!ownerID) {\n\t this.__ownerID = ownerID;\n\t this.__altered = false;\n\t return this;\n\t }\n\t return makeStack(this.size, this._head, ownerID, this.__hash);\n\t };\n\t\n\t // @pragma Iteration\n\t\n\t Stack.prototype.__iterate = function(fn, reverse) {\n\t if (reverse) {\n\t return this.reverse().__iterate(fn);\n\t }\n\t var iterations = 0;\n\t var node = this._head;\n\t while (node) {\n\t if (fn(node.value, iterations++, this) === false) {\n\t break;\n\t }\n\t node = node.next;\n\t }\n\t return iterations;\n\t };\n\t\n\t Stack.prototype.__iterator = function(type, reverse) {\n\t if (reverse) {\n\t return this.reverse().__iterator(type);\n\t }\n\t var iterations = 0;\n\t var node = this._head;\n\t return new Iterator(function() {\n\t if (node) {\n\t var value = node.value;\n\t node = node.next;\n\t return iteratorValue(type, iterations++, value);\n\t }\n\t return iteratorDone();\n\t });\n\t };\n\t\n\t\n\t function isStack(maybeStack) {\n\t return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n\t }\n\t\n\t Stack.isStack = isStack;\n\t\n\t var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\t\n\t var StackPrototype = Stack.prototype;\n\t StackPrototype[IS_STACK_SENTINEL] = true;\n\t StackPrototype.withMutations = MapPrototype.withMutations;\n\t StackPrototype.asMutable = MapPrototype.asMutable;\n\t StackPrototype.asImmutable = MapPrototype.asImmutable;\n\t StackPrototype.wasAltered = MapPrototype.wasAltered;\n\t\n\t\n\t function makeStack(size, head, ownerID, hash) {\n\t var map = Object.create(StackPrototype);\n\t map.size = size;\n\t map._head = head;\n\t map.__ownerID = ownerID;\n\t map.__hash = hash;\n\t map.__altered = false;\n\t return map;\n\t }\n\t\n\t var EMPTY_STACK;\n\t function emptyStack() {\n\t return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n\t }\n\t\n\t /**\n\t * Contributes additional methods to a constructor\n\t */\n\t function mixin(ctor, methods) {\n\t var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n\t Object.keys(methods).forEach(keyCopier);\n\t Object.getOwnPropertySymbols &&\n\t Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n\t return ctor;\n\t }\n\t\n\t Iterable.Iterator = Iterator;\n\t\n\t mixin(Iterable, {\n\t\n\t // ### Conversion to other types\n\t\n\t toArray: function() {\n\t assertNotInfinite(this.size);\n\t var array = new Array(this.size || 0);\n\t this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n\t return array;\n\t },\n\t\n\t toIndexedSeq: function() {\n\t return new ToIndexedSequence(this);\n\t },\n\t\n\t toJS: function() {\n\t return this.toSeq().map(\n\t function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n\t ).__toJS();\n\t },\n\t\n\t toJSON: function() {\n\t return this.toSeq().map(\n\t function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n\t ).__toJS();\n\t },\n\t\n\t toKeyedSeq: function() {\n\t return new ToKeyedSequence(this, true);\n\t },\n\t\n\t toMap: function() {\n\t // Use Late Binding here to solve the circular dependency.\n\t return Map(this.toKeyedSeq());\n\t },\n\t\n\t toObject: function() {\n\t assertNotInfinite(this.size);\n\t var object = {};\n\t this.__iterate(function(v, k) { object[k] = v; });\n\t return object;\n\t },\n\t\n\t toOrderedMap: function() {\n\t // Use Late Binding here to solve the circular dependency.\n\t return OrderedMap(this.toKeyedSeq());\n\t },\n\t\n\t toOrderedSet: function() {\n\t // Use Late Binding here to solve the circular dependency.\n\t return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n\t },\n\t\n\t toSet: function() {\n\t // Use Late Binding here to solve the circular dependency.\n\t return Set(isKeyed(this) ? this.valueSeq() : this);\n\t },\n\t\n\t toSetSeq: function() {\n\t return new ToSetSequence(this);\n\t },\n\t\n\t toSeq: function() {\n\t return isIndexed(this) ? this.toIndexedSeq() :\n\t isKeyed(this) ? this.toKeyedSeq() :\n\t this.toSetSeq();\n\t },\n\t\n\t toStack: function() {\n\t // Use Late Binding here to solve the circular dependency.\n\t return Stack(isKeyed(this) ? this.valueSeq() : this);\n\t },\n\t\n\t toList: function() {\n\t // Use Late Binding here to solve the circular dependency.\n\t return List(isKeyed(this) ? this.valueSeq() : this);\n\t },\n\t\n\t\n\t // ### Common JavaScript methods and properties\n\t\n\t toString: function() {\n\t return '[Iterable]';\n\t },\n\t\n\t __toString: function(head, tail) {\n\t if (this.size === 0) {\n\t return head + tail;\n\t }\n\t return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n\t },\n\t\n\t\n\t // ### ES6 Collection methods (ES6 Array and Map)\n\t\n\t concat: function() {var values = SLICE$0.call(arguments, 0);\n\t return reify(this, concatFactory(this, values));\n\t },\n\t\n\t includes: function(searchValue) {\n\t return this.some(function(value ) {return is(value, searchValue)});\n\t },\n\t\n\t entries: function() {\n\t return this.__iterator(ITERATE_ENTRIES);\n\t },\n\t\n\t every: function(predicate, context) {\n\t assertNotInfinite(this.size);\n\t var returnValue = true;\n\t this.__iterate(function(v, k, c) {\n\t if (!predicate.call(context, v, k, c)) {\n\t returnValue = false;\n\t return false;\n\t }\n\t });\n\t return returnValue;\n\t },\n\t\n\t filter: function(predicate, context) {\n\t return reify(this, filterFactory(this, predicate, context, true));\n\t },\n\t\n\t find: function(predicate, context, notSetValue) {\n\t var entry = this.findEntry(predicate, context);\n\t return entry ? entry[1] : notSetValue;\n\t },\n\t\n\t forEach: function(sideEffect, context) {\n\t assertNotInfinite(this.size);\n\t return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n\t },\n\t\n\t join: function(separator) {\n\t assertNotInfinite(this.size);\n\t separator = separator !== undefined ? '' + separator : ',';\n\t var joined = '';\n\t var isFirst = true;\n\t this.__iterate(function(v ) {\n\t isFirst ? (isFirst = false) : (joined += separator);\n\t joined += v !== null && v !== undefined ? v.toString() : '';\n\t });\n\t return joined;\n\t },\n\t\n\t keys: function() {\n\t return this.__iterator(ITERATE_KEYS);\n\t },\n\t\n\t map: function(mapper, context) {\n\t return reify(this, mapFactory(this, mapper, context));\n\t },\n\t\n\t reduce: function(reducer, initialReduction, context) {\n\t assertNotInfinite(this.size);\n\t var reduction;\n\t var useFirst;\n\t if (arguments.length < 2) {\n\t useFirst = true;\n\t } else {\n\t reduction = initialReduction;\n\t }\n\t this.__iterate(function(v, k, c) {\n\t if (useFirst) {\n\t useFirst = false;\n\t reduction = v;\n\t } else {\n\t reduction = reducer.call(context, reduction, v, k, c);\n\t }\n\t });\n\t return reduction;\n\t },\n\t\n\t reduceRight: function(reducer, initialReduction, context) {\n\t var reversed = this.toKeyedSeq().reverse();\n\t return reversed.reduce.apply(reversed, arguments);\n\t },\n\t\n\t reverse: function() {\n\t return reify(this, reverseFactory(this, true));\n\t },\n\t\n\t slice: function(begin, end) {\n\t return reify(this, sliceFactory(this, begin, end, true));\n\t },\n\t\n\t some: function(predicate, context) {\n\t return !this.every(not(predicate), context);\n\t },\n\t\n\t sort: function(comparator) {\n\t return reify(this, sortFactory(this, comparator));\n\t },\n\t\n\t values: function() {\n\t return this.__iterator(ITERATE_VALUES);\n\t },\n\t\n\t\n\t // ### More sequential methods\n\t\n\t butLast: function() {\n\t return this.slice(0, -1);\n\t },\n\t\n\t isEmpty: function() {\n\t return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n\t },\n\t\n\t count: function(predicate, context) {\n\t return ensureSize(\n\t predicate ? this.toSeq().filter(predicate, context) : this\n\t );\n\t },\n\t\n\t countBy: function(grouper, context) {\n\t return countByFactory(this, grouper, context);\n\t },\n\t\n\t equals: function(other) {\n\t return deepEqual(this, other);\n\t },\n\t\n\t entrySeq: function() {\n\t var iterable = this;\n\t if (iterable._cache) {\n\t // We cache as an entries array, so we can just return the cache!\n\t return new ArraySeq(iterable._cache);\n\t }\n\t var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n\t entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n\t return entriesSequence;\n\t },\n\t\n\t filterNot: function(predicate, context) {\n\t return this.filter(not(predicate), context);\n\t },\n\t\n\t findEntry: function(predicate, context, notSetValue) {\n\t var found = notSetValue;\n\t this.__iterate(function(v, k, c) {\n\t if (predicate.call(context, v, k, c)) {\n\t found = [k, v];\n\t return false;\n\t }\n\t });\n\t return found;\n\t },\n\t\n\t findKey: function(predicate, context) {\n\t var entry = this.findEntry(predicate, context);\n\t return entry && entry[0];\n\t },\n\t\n\t findLast: function(predicate, context, notSetValue) {\n\t return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n\t },\n\t\n\t findLastEntry: function(predicate, context, notSetValue) {\n\t return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n\t },\n\t\n\t findLastKey: function(predicate, context) {\n\t return this.toKeyedSeq().reverse().findKey(predicate, context);\n\t },\n\t\n\t first: function() {\n\t return this.find(returnTrue);\n\t },\n\t\n\t flatMap: function(mapper, context) {\n\t return reify(this, flatMapFactory(this, mapper, context));\n\t },\n\t\n\t flatten: function(depth) {\n\t return reify(this, flattenFactory(this, depth, true));\n\t },\n\t\n\t fromEntrySeq: function() {\n\t return new FromEntriesSequence(this);\n\t },\n\t\n\t get: function(searchKey, notSetValue) {\n\t return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n\t },\n\t\n\t getIn: function(searchKeyPath, notSetValue) {\n\t var nested = this;\n\t // Note: in an ES6 environment, we would prefer:\n\t // for (var key of searchKeyPath) {\n\t var iter = forceIterator(searchKeyPath);\n\t var step;\n\t while (!(step = iter.next()).done) {\n\t var key = step.value;\n\t nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n\t if (nested === NOT_SET) {\n\t return notSetValue;\n\t }\n\t }\n\t return nested;\n\t },\n\t\n\t groupBy: function(grouper, context) {\n\t return groupByFactory(this, grouper, context);\n\t },\n\t\n\t has: function(searchKey) {\n\t return this.get(searchKey, NOT_SET) !== NOT_SET;\n\t },\n\t\n\t hasIn: function(searchKeyPath) {\n\t return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n\t },\n\t\n\t isSubset: function(iter) {\n\t iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n\t return this.every(function(value ) {return iter.includes(value)});\n\t },\n\t\n\t isSuperset: function(iter) {\n\t iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n\t return iter.isSubset(this);\n\t },\n\t\n\t keyOf: function(searchValue) {\n\t return this.findKey(function(value ) {return is(value, searchValue)});\n\t },\n\t\n\t keySeq: function() {\n\t return this.toSeq().map(keyMapper).toIndexedSeq();\n\t },\n\t\n\t last: function() {\n\t return this.toSeq().reverse().first();\n\t },\n\t\n\t lastKeyOf: function(searchValue) {\n\t return this.toKeyedSeq().reverse().keyOf(searchValue);\n\t },\n\t\n\t max: function(comparator) {\n\t return maxFactory(this, comparator);\n\t },\n\t\n\t maxBy: function(mapper, comparator) {\n\t return maxFactory(this, comparator, mapper);\n\t },\n\t\n\t min: function(comparator) {\n\t return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n\t },\n\t\n\t minBy: function(mapper, comparator) {\n\t return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n\t },\n\t\n\t rest: function() {\n\t return this.slice(1);\n\t },\n\t\n\t skip: function(amount) {\n\t return this.slice(Math.max(0, amount));\n\t },\n\t\n\t skipLast: function(amount) {\n\t return reify(this, this.toSeq().reverse().skip(amount).reverse());\n\t },\n\t\n\t skipWhile: function(predicate, context) {\n\t return reify(this, skipWhileFactory(this, predicate, context, true));\n\t },\n\t\n\t skipUntil: function(predicate, context) {\n\t return this.skipWhile(not(predicate), context);\n\t },\n\t\n\t sortBy: function(mapper, comparator) {\n\t return reify(this, sortFactory(this, comparator, mapper));\n\t },\n\t\n\t take: function(amount) {\n\t return this.slice(0, Math.max(0, amount));\n\t },\n\t\n\t takeLast: function(amount) {\n\t return reify(this, this.toSeq().reverse().take(amount).reverse());\n\t },\n\t\n\t takeWhile: function(predicate, context) {\n\t return reify(this, takeWhileFactory(this, predicate, context));\n\t },\n\t\n\t takeUntil: function(predicate, context) {\n\t return this.takeWhile(not(predicate), context);\n\t },\n\t\n\t valueSeq: function() {\n\t return this.toIndexedSeq();\n\t },\n\t\n\t\n\t // ### Hashable Object\n\t\n\t hashCode: function() {\n\t return this.__hash || (this.__hash = hashIterable(this));\n\t }\n\t\n\t\n\t // ### Internal\n\t\n\t // abstract __iterate(fn, reverse)\n\t\n\t // abstract __iterator(type, reverse)\n\t });\n\t\n\t // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n\t // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n\t // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n\t // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\t\n\t var IterablePrototype = Iterable.prototype;\n\t IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n\t IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n\t IterablePrototype.__toJS = IterablePrototype.toArray;\n\t IterablePrototype.__toStringMapper = quoteString;\n\t IterablePrototype.inspect =\n\t IterablePrototype.toSource = function() { return this.toString(); };\n\t IterablePrototype.chain = IterablePrototype.flatMap;\n\t IterablePrototype.contains = IterablePrototype.includes;\n\t\n\t mixin(KeyedIterable, {\n\t\n\t // ### More sequential methods\n\t\n\t flip: function() {\n\t return reify(this, flipFactory(this));\n\t },\n\t\n\t mapEntries: function(mapper, context) {var this$0 = this;\n\t var iterations = 0;\n\t return reify(this,\n\t this.toSeq().map(\n\t function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n\t ).fromEntrySeq()\n\t );\n\t },\n\t\n\t mapKeys: function(mapper, context) {var this$0 = this;\n\t return reify(this,\n\t this.toSeq().flip().map(\n\t function(k, v) {return mapper.call(context, k, v, this$0)}\n\t ).flip()\n\t );\n\t }\n\t\n\t });\n\t\n\t var KeyedIterablePrototype = KeyedIterable.prototype;\n\t KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n\t KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n\t KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n\t KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\t\n\t\n\t\n\t mixin(IndexedIterable, {\n\t\n\t // ### Conversion to other types\n\t\n\t toKeyedSeq: function() {\n\t return new ToKeyedSequence(this, false);\n\t },\n\t\n\t\n\t // ### ES6 Collection methods (ES6 Array and Map)\n\t\n\t filter: function(predicate, context) {\n\t return reify(this, filterFactory(this, predicate, context, false));\n\t },\n\t\n\t findIndex: function(predicate, context) {\n\t var entry = this.findEntry(predicate, context);\n\t return entry ? entry[0] : -1;\n\t },\n\t\n\t indexOf: function(searchValue) {\n\t var key = this.keyOf(searchValue);\n\t return key === undefined ? -1 : key;\n\t },\n\t\n\t lastIndexOf: function(searchValue) {\n\t var key = this.lastKeyOf(searchValue);\n\t return key === undefined ? -1 : key;\n\t },\n\t\n\t reverse: function() {\n\t return reify(this, reverseFactory(this, false));\n\t },\n\t\n\t slice: function(begin, end) {\n\t return reify(this, sliceFactory(this, begin, end, false));\n\t },\n\t\n\t splice: function(index, removeNum /*, ...values*/) {\n\t var numArgs = arguments.length;\n\t removeNum = Math.max(removeNum | 0, 0);\n\t if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n\t return this;\n\t }\n\t // If index is negative, it should resolve relative to the size of the\n\t // collection. However size may be expensive to compute if not cached, so\n\t // only call count() if the number is in fact negative.\n\t index = resolveBegin(index, index < 0 ? this.count() : this.size);\n\t var spliced = this.slice(0, index);\n\t return reify(\n\t this,\n\t numArgs === 1 ?\n\t spliced :\n\t spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n\t );\n\t },\n\t\n\t\n\t // ### More collection methods\n\t\n\t findLastIndex: function(predicate, context) {\n\t var entry = this.findLastEntry(predicate, context);\n\t return entry ? entry[0] : -1;\n\t },\n\t\n\t first: function() {\n\t return this.get(0);\n\t },\n\t\n\t flatten: function(depth) {\n\t return reify(this, flattenFactory(this, depth, false));\n\t },\n\t\n\t get: function(index, notSetValue) {\n\t index = wrapIndex(this, index);\n\t return (index < 0 || (this.size === Infinity ||\n\t (this.size !== undefined && index > this.size))) ?\n\t notSetValue :\n\t this.find(function(_, key) {return key === index}, undefined, notSetValue);\n\t },\n\t\n\t has: function(index) {\n\t index = wrapIndex(this, index);\n\t return index >= 0 && (this.size !== undefined ?\n\t this.size === Infinity || index < this.size :\n\t this.indexOf(index) !== -1\n\t );\n\t },\n\t\n\t interpose: function(separator) {\n\t return reify(this, interposeFactory(this, separator));\n\t },\n\t\n\t interleave: function(/*...iterables*/) {\n\t var iterables = [this].concat(arrCopy(arguments));\n\t var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n\t var interleaved = zipped.flatten(true);\n\t if (zipped.size) {\n\t interleaved.size = zipped.size * iterables.length;\n\t }\n\t return reify(this, interleaved);\n\t },\n\t\n\t keySeq: function() {\n\t return Range(0, this.size);\n\t },\n\t\n\t last: function() {\n\t return this.get(-1);\n\t },\n\t\n\t skipWhile: function(predicate, context) {\n\t return reify(this, skipWhileFactory(this, predicate, context, false));\n\t },\n\t\n\t zip: function(/*, ...iterables */) {\n\t var iterables = [this].concat(arrCopy(arguments));\n\t return reify(this, zipWithFactory(this, defaultZipper, iterables));\n\t },\n\t\n\t zipWith: function(zipper/*, ...iterables */) {\n\t var iterables = arrCopy(arguments);\n\t iterables[0] = this;\n\t return reify(this, zipWithFactory(this, zipper, iterables));\n\t }\n\t\n\t });\n\t\n\t IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n\t IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\t\n\t\n\t\n\t mixin(SetIterable, {\n\t\n\t // ### ES6 Collection methods (ES6 Array and Map)\n\t\n\t get: function(value, notSetValue) {\n\t return this.has(value) ? value : notSetValue;\n\t },\n\t\n\t includes: function(value) {\n\t return this.has(value);\n\t },\n\t\n\t\n\t // ### More sequential methods\n\t\n\t keySeq: function() {\n\t return this.valueSeq();\n\t }\n\t\n\t });\n\t\n\t SetIterable.prototype.has = IterablePrototype.includes;\n\t SetIterable.prototype.contains = SetIterable.prototype.includes;\n\t\n\t\n\t // Mixin subclasses\n\t\n\t mixin(KeyedSeq, KeyedIterable.prototype);\n\t mixin(IndexedSeq, IndexedIterable.prototype);\n\t mixin(SetSeq, SetIterable.prototype);\n\t\n\t mixin(KeyedCollection, KeyedIterable.prototype);\n\t mixin(IndexedCollection, IndexedIterable.prototype);\n\t mixin(SetCollection, SetIterable.prototype);\n\t\n\t\n\t // #pragma Helper functions\n\t\n\t function keyMapper(v, k) {\n\t return k;\n\t }\n\t\n\t function entryMapper(v, k) {\n\t return [k, v];\n\t }\n\t\n\t function not(predicate) {\n\t return function() {\n\t return !predicate.apply(this, arguments);\n\t }\n\t }\n\t\n\t function neg(predicate) {\n\t return function() {\n\t return -predicate.apply(this, arguments);\n\t }\n\t }\n\t\n\t function quoteString(value) {\n\t return typeof value === 'string' ? JSON.stringify(value) : String(value);\n\t }\n\t\n\t function defaultZipper() {\n\t return arrCopy(arguments);\n\t }\n\t\n\t function defaultNegComparator(a, b) {\n\t return a < b ? 1 : a > b ? -1 : 0;\n\t }\n\t\n\t function hashIterable(iterable) {\n\t if (iterable.size === Infinity) {\n\t return 0;\n\t }\n\t var ordered = isOrdered(iterable);\n\t var keyed = isKeyed(iterable);\n\t var h = ordered ? 1 : 0;\n\t var size = iterable.__iterate(\n\t keyed ?\n\t ordered ?\n\t function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n\t function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n\t ordered ?\n\t function(v ) { h = 31 * h + hash(v) | 0; } :\n\t function(v ) { h = h + hash(v) | 0; }\n\t );\n\t return murmurHashOfSize(size, h);\n\t }\n\t\n\t function murmurHashOfSize(size, h) {\n\t h = imul(h, 0xCC9E2D51);\n\t h = imul(h << 15 | h >>> -15, 0x1B873593);\n\t h = imul(h << 13 | h >>> -13, 5);\n\t h = (h + 0xE6546B64 | 0) ^ size;\n\t h = imul(h ^ h >>> 16, 0x85EBCA6B);\n\t h = imul(h ^ h >>> 13, 0xC2B2AE35);\n\t h = smi(h ^ h >>> 16);\n\t return h;\n\t }\n\t\n\t function hashMerge(a, b) {\n\t return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n\t }\n\t\n\t var Immutable = {\n\t\n\t Iterable: Iterable,\n\t\n\t Seq: Seq,\n\t Collection: Collection,\n\t Map: Map,\n\t OrderedMap: OrderedMap,\n\t List: List,\n\t Stack: Stack,\n\t Set: Set,\n\t OrderedSet: OrderedSet,\n\t\n\t Record: Record,\n\t Range: Range,\n\t Repeat: Repeat,\n\t\n\t is: is,\n\t fromJS: fromJS\n\t\n\t };\n\t\n\t return Immutable;\n\t\n\t}));\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2016-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\t// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\t\n\tvar debugTool = null;\n\t\n\tif (false) {\n\t var ReactDebugTool = require('./ReactDebugTool');\n\t debugTool = ReactDebugTool;\n\t}\n\t\n\tmodule.exports = { debugTool: debugTool };\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5),\n\t _assign = __webpack_require__(6);\n\t\n\tvar CallbackQueue = __webpack_require__(119);\n\tvar PooledClass = __webpack_require__(28);\n\tvar ReactFeatureFlags = __webpack_require__(124);\n\tvar ReactReconciler = __webpack_require__(32);\n\tvar Transaction = __webpack_require__(53);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\tvar dirtyComponents = [];\n\tvar updateBatchNumber = 0;\n\tvar asapCallbackQueue = CallbackQueue.getPooled();\n\tvar asapEnqueued = false;\n\t\n\tvar batchingStrategy = null;\n\t\n\tfunction ensureInjected() {\n\t !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? false ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n\t}\n\t\n\tvar NESTED_UPDATES = {\n\t initialize: function () {\n\t this.dirtyComponentsLength = dirtyComponents.length;\n\t },\n\t close: function () {\n\t if (this.dirtyComponentsLength !== dirtyComponents.length) {\n\t // Additional updates were enqueued by componentDidUpdate handlers or\n\t // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n\t // these new updates so that if A's componentDidUpdate calls setState on\n\t // B, B will update before the callback A's updater provided when calling\n\t // setState.\n\t dirtyComponents.splice(0, this.dirtyComponentsLength);\n\t flushBatchedUpdates();\n\t } else {\n\t dirtyComponents.length = 0;\n\t }\n\t }\n\t};\n\t\n\tvar UPDATE_QUEUEING = {\n\t initialize: function () {\n\t this.callbackQueue.reset();\n\t },\n\t close: function () {\n\t this.callbackQueue.notifyAll();\n\t }\n\t};\n\t\n\tvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\t\n\tfunction ReactUpdatesFlushTransaction() {\n\t this.reinitializeTransaction();\n\t this.dirtyComponentsLength = null;\n\t this.callbackQueue = CallbackQueue.getPooled();\n\t this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n\t /* useCreateElement */true);\n\t}\n\t\n\t_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n\t getTransactionWrappers: function () {\n\t return TRANSACTION_WRAPPERS;\n\t },\n\t\n\t destructor: function () {\n\t this.dirtyComponentsLength = null;\n\t CallbackQueue.release(this.callbackQueue);\n\t this.callbackQueue = null;\n\t ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n\t this.reconcileTransaction = null;\n\t },\n\t\n\t perform: function (method, scope, a) {\n\t // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n\t // with this transaction's wrappers around it.\n\t return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n\t }\n\t});\n\t\n\tPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\t\n\tfunction batchedUpdates(callback, a, b, c, d, e) {\n\t ensureInjected();\n\t return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n\t}\n\t\n\t/**\n\t * Array comparator for ReactComponents by mount ordering.\n\t *\n\t * @param {ReactComponent} c1 first component you're comparing\n\t * @param {ReactComponent} c2 second component you're comparing\n\t * @return {number} Return value usable by Array.prototype.sort().\n\t */\n\tfunction mountOrderComparator(c1, c2) {\n\t return c1._mountOrder - c2._mountOrder;\n\t}\n\t\n\tfunction runBatchedUpdates(transaction) {\n\t var len = transaction.dirtyComponentsLength;\n\t !(len === dirtyComponents.length) ? false ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\t\n\t // Since reconciling a component higher in the owner hierarchy usually (not\n\t // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n\t // them before their children by sorting the array.\n\t dirtyComponents.sort(mountOrderComparator);\n\t\n\t // Any updates enqueued while reconciling must be performed after this entire\n\t // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n\t // C, B could update twice in a single batch if C's render enqueues an update\n\t // to B (since B would have already updated, we should skip it, and the only\n\t // way we can know to do so is by checking the batch counter).\n\t updateBatchNumber++;\n\t\n\t for (var i = 0; i < len; i++) {\n\t // If a component is unmounted before pending changes apply, it will still\n\t // be here, but we assume that it has cleared its _pendingCallbacks and\n\t // that performUpdateIfNecessary is a noop.\n\t var component = dirtyComponents[i];\n\t\n\t // If performUpdateIfNecessary happens to enqueue any new updates, we\n\t // shouldn't execute the callbacks until the next render happens, so\n\t // stash the callbacks first\n\t var callbacks = component._pendingCallbacks;\n\t component._pendingCallbacks = null;\n\t\n\t var markerName;\n\t if (ReactFeatureFlags.logTopLevelRenders) {\n\t var namedComponent = component;\n\t // Duck type TopLevelWrapper. This is probably always true.\n\t if (component._currentElement.type.isReactTopLevelWrapper) {\n\t namedComponent = component._renderedComponent;\n\t }\n\t markerName = 'React update: ' + namedComponent.getName();\n\t console.time(markerName);\n\t }\n\t\n\t ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\t\n\t if (markerName) {\n\t console.timeEnd(markerName);\n\t }\n\t\n\t if (callbacks) {\n\t for (var j = 0; j < callbacks.length; j++) {\n\t transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n\t }\n\t }\n\t }\n\t}\n\t\n\tvar flushBatchedUpdates = function () {\n\t // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n\t // array and perform any updates enqueued by mount-ready handlers (i.e.,\n\t // componentDidUpdate) but we need to check here too in order to catch\n\t // updates enqueued by setState callbacks and asap calls.\n\t while (dirtyComponents.length || asapEnqueued) {\n\t if (dirtyComponents.length) {\n\t var transaction = ReactUpdatesFlushTransaction.getPooled();\n\t transaction.perform(runBatchedUpdates, null, transaction);\n\t ReactUpdatesFlushTransaction.release(transaction);\n\t }\n\t\n\t if (asapEnqueued) {\n\t asapEnqueued = false;\n\t var queue = asapCallbackQueue;\n\t asapCallbackQueue = CallbackQueue.getPooled();\n\t queue.notifyAll();\n\t CallbackQueue.release(queue);\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Mark a component as needing a rerender, adding an optional callback to a\n\t * list of functions which will be executed once the rerender occurs.\n\t */\n\tfunction enqueueUpdate(component) {\n\t ensureInjected();\n\t\n\t // Various parts of our code (such as ReactCompositeComponent's\n\t // _renderValidatedComponent) assume that calls to render aren't nested;\n\t // verify that that's the case. (This is called by each top-level update\n\t // function, like setState, forceUpdate, etc.; creation and\n\t // destruction of top-level components is guarded in ReactMount.)\n\t\n\t if (!batchingStrategy.isBatchingUpdates) {\n\t batchingStrategy.batchedUpdates(enqueueUpdate, component);\n\t return;\n\t }\n\t\n\t dirtyComponents.push(component);\n\t if (component._updateBatchNumber == null) {\n\t component._updateBatchNumber = updateBatchNumber + 1;\n\t }\n\t}\n\t\n\t/**\n\t * Enqueue a callback to be run at the end of the current batching cycle. Throws\n\t * if no updates are currently being performed.\n\t */\n\tfunction asap(callback, context) {\n\t !batchingStrategy.isBatchingUpdates ? false ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;\n\t asapCallbackQueue.enqueue(callback, context);\n\t asapEnqueued = true;\n\t}\n\t\n\tvar ReactUpdatesInjection = {\n\t injectReconcileTransaction: function (ReconcileTransaction) {\n\t !ReconcileTransaction ? false ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n\t ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n\t },\n\t\n\t injectBatchingStrategy: function (_batchingStrategy) {\n\t !_batchingStrategy ? false ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n\t !(typeof _batchingStrategy.batchedUpdates === 'function') ? false ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n\t !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? false ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n\t batchingStrategy = _batchingStrategy;\n\t }\n\t};\n\t\n\tvar ReactUpdates = {\n\t /**\n\t * React references `ReactReconcileTransaction` using this property in order\n\t * to allow dependency injection.\n\t *\n\t * @internal\n\t */\n\t ReactReconcileTransaction: null,\n\t\n\t batchedUpdates: batchedUpdates,\n\t enqueueUpdate: enqueueUpdate,\n\t flushBatchedUpdates: flushBatchedUpdates,\n\t injection: ReactUpdatesInjection,\n\t asap: asap\n\t};\n\t\n\tmodule.exports = ReactUpdates;\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar PooledClass = __webpack_require__(28);\n\t\n\tvar emptyFunction = __webpack_require__(16);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar didWarnForAddedNewProperty = false;\n\tvar isProxySupported = typeof Proxy === 'function';\n\t\n\tvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\t\n\t/**\n\t * @interface Event\n\t * @see http://www.w3.org/TR/DOM-Level-3-Events/\n\t */\n\tvar EventInterface = {\n\t type: null,\n\t target: null,\n\t // currentTarget is set when dispatching; no use in copying it here\n\t currentTarget: emptyFunction.thatReturnsNull,\n\t eventPhase: null,\n\t bubbles: null,\n\t cancelable: null,\n\t timeStamp: function (event) {\n\t return event.timeStamp || Date.now();\n\t },\n\t defaultPrevented: null,\n\t isTrusted: null\n\t};\n\t\n\t/**\n\t * Synthetic events are dispatched by event plugins, typically in response to a\n\t * top-level event delegation handler.\n\t *\n\t * These systems should generally use pooling to reduce the frequency of garbage\n\t * collection. The system should check `isPersistent` to determine whether the\n\t * event should be released into the pool after being dispatched. Users that\n\t * need a persisted event should invoke `persist`.\n\t *\n\t * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n\t * normalizing browser quirks. Subclasses do not necessarily have to implement a\n\t * DOM interface; custom application-specific events can also subclass this.\n\t *\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {*} targetInst Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @param {DOMEventTarget} nativeEventTarget Target node.\n\t */\n\tfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n\t if (false) {\n\t // these have a getter/setter for warnings\n\t delete this.nativeEvent;\n\t delete this.preventDefault;\n\t delete this.stopPropagation;\n\t }\n\t\n\t this.dispatchConfig = dispatchConfig;\n\t this._targetInst = targetInst;\n\t this.nativeEvent = nativeEvent;\n\t\n\t var Interface = this.constructor.Interface;\n\t for (var propName in Interface) {\n\t if (!Interface.hasOwnProperty(propName)) {\n\t continue;\n\t }\n\t if (false) {\n\t delete this[propName]; // this has a getter/setter for warnings\n\t }\n\t var normalize = Interface[propName];\n\t if (normalize) {\n\t this[propName] = normalize(nativeEvent);\n\t } else {\n\t if (propName === 'target') {\n\t this.target = nativeEventTarget;\n\t } else {\n\t this[propName] = nativeEvent[propName];\n\t }\n\t }\n\t }\n\t\n\t var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n\t if (defaultPrevented) {\n\t this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n\t } else {\n\t this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n\t }\n\t this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n\t return this;\n\t}\n\t\n\t_assign(SyntheticEvent.prototype, {\n\t\n\t preventDefault: function () {\n\t this.defaultPrevented = true;\n\t var event = this.nativeEvent;\n\t if (!event) {\n\t return;\n\t }\n\t\n\t if (event.preventDefault) {\n\t event.preventDefault();\n\t } else if (typeof event.returnValue !== 'unknown') {\n\t // eslint-disable-line valid-typeof\n\t event.returnValue = false;\n\t }\n\t this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n\t },\n\t\n\t stopPropagation: function () {\n\t var event = this.nativeEvent;\n\t if (!event) {\n\t return;\n\t }\n\t\n\t if (event.stopPropagation) {\n\t event.stopPropagation();\n\t } else if (typeof event.cancelBubble !== 'unknown') {\n\t // eslint-disable-line valid-typeof\n\t // The ChangeEventPlugin registers a \"propertychange\" event for\n\t // IE. This event does not support bubbling or cancelling, and\n\t // any references to cancelBubble throw \"Member not found\". A\n\t // typeof check of \"unknown\" circumvents this issue (and is also\n\t // IE specific).\n\t event.cancelBubble = true;\n\t }\n\t\n\t this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n\t },\n\t\n\t /**\n\t * We release all dispatched `SyntheticEvent`s after each event loop, adding\n\t * them back into the pool. This allows a way to hold onto a reference that\n\t * won't be added back into the pool.\n\t */\n\t persist: function () {\n\t this.isPersistent = emptyFunction.thatReturnsTrue;\n\t },\n\t\n\t /**\n\t * Checks if this event should be released back into the pool.\n\t *\n\t * @return {boolean} True if this should not be released, false otherwise.\n\t */\n\t isPersistent: emptyFunction.thatReturnsFalse,\n\t\n\t /**\n\t * `PooledClass` looks for `destructor` on each instance it releases.\n\t */\n\t destructor: function () {\n\t var Interface = this.constructor.Interface;\n\t for (var propName in Interface) {\n\t if (false) {\n\t Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n\t } else {\n\t this[propName] = null;\n\t }\n\t }\n\t for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n\t this[shouldBeReleasedProperties[i]] = null;\n\t }\n\t if (false) {\n\t Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n\t Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n\t Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n\t }\n\t }\n\t\n\t});\n\t\n\tSyntheticEvent.Interface = EventInterface;\n\t\n\tif (false) {\n\t if (isProxySupported) {\n\t /*eslint-disable no-func-assign */\n\t SyntheticEvent = new Proxy(SyntheticEvent, {\n\t construct: function (target, args) {\n\t return this.apply(target, Object.create(target.prototype), args);\n\t },\n\t apply: function (constructor, that, args) {\n\t return new Proxy(constructor.apply(that, args), {\n\t set: function (target, prop, value) {\n\t if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n\t process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\\'re ' + 'seeing this, you\\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n\t didWarnForAddedNewProperty = true;\n\t }\n\t target[prop] = value;\n\t return true;\n\t }\n\t });\n\t }\n\t });\n\t /*eslint-enable no-func-assign */\n\t }\n\t}\n\t/**\n\t * Helper to reduce boilerplate when creating subclasses.\n\t *\n\t * @param {function} Class\n\t * @param {?object} Interface\n\t */\n\tSyntheticEvent.augmentClass = function (Class, Interface) {\n\t var Super = this;\n\t\n\t var E = function () {};\n\t E.prototype = Super.prototype;\n\t var prototype = new E();\n\t\n\t _assign(prototype, Class.prototype);\n\t Class.prototype = prototype;\n\t Class.prototype.constructor = Class;\n\t\n\t Class.Interface = _assign({}, Super.Interface, Interface);\n\t Class.augmentClass = Super.augmentClass;\n\t\n\t PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n\t};\n\t\n\tPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\t\n\tmodule.exports = SyntheticEvent;\n\t\n\t/**\n\t * Helper to nullify syntheticEvent instance properties when destructing\n\t *\n\t * @param {object} SyntheticEvent\n\t * @param {String} propName\n\t * @return {object} defineProperty object\n\t */\n\tfunction getPooledWarningPropertyDefinition(propName, getVal) {\n\t var isFunction = typeof getVal === 'function';\n\t return {\n\t configurable: true,\n\t set: set,\n\t get: get\n\t };\n\t\n\t function set(val) {\n\t var action = isFunction ? 'setting the method' : 'setting the property';\n\t warn(action, 'This is effectively a no-op');\n\t return val;\n\t }\n\t\n\t function get() {\n\t var action = isFunction ? 'accessing the method' : 'accessing the property';\n\t var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n\t warn(action, result);\n\t return getVal;\n\t }\n\t\n\t function warn(action, result) {\n\t var warningCondition = false;\n\t false ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\\'re seeing this, ' + 'you\\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n\t }\n\t}\n\n/***/ },\n/* 21 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Keeps track of the current owner.\n\t *\n\t * The current owner is the component who should own any components that are\n\t * currently being constructed.\n\t */\n\tvar ReactCurrentOwner = {\n\t\n\t /**\n\t * @internal\n\t * @type {ReactComponent}\n\t */\n\t current: null\n\t\n\t};\n\t\n\tmodule.exports = ReactCurrentOwner;\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.ERROR_REMOVE_FEATURE_TOGGLE = exports.ERROR_UPDATE_FEATURE_TOGGLE = exports.ERROR_CREATING_FEATURE_TOGGLE = exports.ERROR_FETCH_FEATURE_TOGGLES = exports.RECEIVE_FEATURE_TOGGLES = exports.START_REMOVE_FEATURE_TOGGLE = exports.START_CREATE_FEATURE_TOGGLE = exports.START_UPDATE_FEATURE_TOGGLE = exports.START_FETCH_FEATURE_TOGGLES = exports.TOGGLE_FEATURE_TOGGLE = exports.UPDATE_FEATURE_TOGGLE = exports.REMOVE_FEATURE_TOGGLE = exports.ADD_FEATURE_TOGGLE = undefined;\n\texports.toggleFeature = toggleFeature;\n\texports.editFeatureToggle = editFeatureToggle;\n\texports.fetchFeatureToggles = fetchFeatureToggles;\n\texports.createFeatureToggles = createFeatureToggles;\n\texports.requestUpdateFeatureToggle = requestUpdateFeatureToggle;\n\texports.removeFeatureToggle = removeFeatureToggle;\n\texports.validateName = validateName;\n\t\n\tvar _featureApi = __webpack_require__(210);\n\t\n\tvar _featureApi2 = _interopRequireDefault(_featureApi);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar debug = __webpack_require__(63)('unleash:feature-actions');\n\t\n\tvar ADD_FEATURE_TOGGLE = exports.ADD_FEATURE_TOGGLE = 'ADD_FEATURE_TOGGLE';\n\tvar REMOVE_FEATURE_TOGGLE = exports.REMOVE_FEATURE_TOGGLE = 'REMOVE_FEATURE_TOGGLE';\n\tvar UPDATE_FEATURE_TOGGLE = exports.UPDATE_FEATURE_TOGGLE = 'UPDATE_FEATURE_TOGGLE';\n\tvar TOGGLE_FEATURE_TOGGLE = exports.TOGGLE_FEATURE_TOGGLE = 'TOGGLE_FEATURE_TOGGLE';\n\tvar START_FETCH_FEATURE_TOGGLES = exports.START_FETCH_FEATURE_TOGGLES = 'START_FETCH_FEATURE_TOGGLES';\n\tvar START_UPDATE_FEATURE_TOGGLE = exports.START_UPDATE_FEATURE_TOGGLE = 'START_UPDATE_FEATURE_TOGGLE';\n\tvar START_CREATE_FEATURE_TOGGLE = exports.START_CREATE_FEATURE_TOGGLE = 'START_CREATE_FEATURE_TOGGLE';\n\tvar START_REMOVE_FEATURE_TOGGLE = exports.START_REMOVE_FEATURE_TOGGLE = 'START_REMOVE_FEATURE_TOGGLE';\n\tvar RECEIVE_FEATURE_TOGGLES = exports.RECEIVE_FEATURE_TOGGLES = 'RECEIVE_FEATURE_TOGGLES';\n\tvar ERROR_FETCH_FEATURE_TOGGLES = exports.ERROR_FETCH_FEATURE_TOGGLES = 'ERROR_FETCH_FEATURE_TOGGLES';\n\tvar ERROR_CREATING_FEATURE_TOGGLE = exports.ERROR_CREATING_FEATURE_TOGGLE = 'ERROR_CREATING_FEATURE_TOGGLE';\n\tvar ERROR_UPDATE_FEATURE_TOGGLE = exports.ERROR_UPDATE_FEATURE_TOGGLE = 'ERROR_UPDATE_FEATURE_TOGGLE';\n\tvar ERROR_REMOVE_FEATURE_TOGGLE = exports.ERROR_REMOVE_FEATURE_TOGGLE = 'ERROR_REMOVE_FEATURE_TOGGLE';\n\t\n\tfunction toggleFeature(featureToggle) {\n\t debug('Toggle feature toggle ', featureToggle);\n\t return function (dispatch) {\n\t var newValue = Object.assign({}, featureToggle, { enabled: !featureToggle.enabled });\n\t dispatch(requestUpdateFeatureToggle(newValue));\n\t };\n\t};\n\t\n\tfunction editFeatureToggle(featureToggle) {\n\t debug('Update feature toggle ', featureToggle);\n\t return function (dispatch) {\n\t dispatch(requestUpdateFeatureToggle(featureToggle));\n\t };\n\t};\n\t\n\tfunction receiveFeatureToggles(json) {\n\t debug('reviced feature toggles', json);\n\t return {\n\t type: RECEIVE_FEATURE_TOGGLES,\n\t featureToggles: json.features.map(function (features) {\n\t return features;\n\t }),\n\t receivedAt: Date.now()\n\t };\n\t}\n\t\n\tfunction dispatchAndThrow(dispatch, type) {\n\t return function (error) {\n\t dispatch({ type: type, error: error, receivedAt: Date.now() });\n\t throw error;\n\t };\n\t}\n\t\n\tfunction fetchFeatureToggles() {\n\t debug('Start fetching feature toggles');\n\t return function (dispatch) {\n\t dispatch({ type: START_FETCH_FEATURE_TOGGLES });\n\t\n\t return _featureApi2.default.fetchAll().then(function (json) {\n\t return dispatch(receiveFeatureToggles(json));\n\t }).catch(dispatchAndThrow(dispatch, ERROR_FETCH_FEATURE_TOGGLES));\n\t };\n\t}\n\t\n\tfunction createFeatureToggles(featureToggle) {\n\t return function (dispatch) {\n\t dispatch({ type: START_CREATE_FEATURE_TOGGLE });\n\t\n\t return _featureApi2.default.create(featureToggle).then(function () {\n\t return dispatch({ type: ADD_FEATURE_TOGGLE, featureToggle: featureToggle });\n\t }).catch(dispatchAndThrow(dispatch, ERROR_CREATING_FEATURE_TOGGLE));\n\t };\n\t}\n\t\n\tfunction requestUpdateFeatureToggle(featureToggle) {\n\t return function (dispatch) {\n\t dispatch({ type: START_UPDATE_FEATURE_TOGGLE });\n\t\n\t return _featureApi2.default.update(featureToggle).then(function () {\n\t return dispatch({ type: UPDATE_FEATURE_TOGGLE, featureToggle: featureToggle });\n\t }).catch(dispatchAndThrow(dispatch, ERROR_UPDATE_FEATURE_TOGGLE));\n\t };\n\t}\n\t\n\tfunction removeFeatureToggle(featureToggleName) {\n\t return function (dispatch) {\n\t dispatch({ type: START_REMOVE_FEATURE_TOGGLE });\n\t\n\t return _featureApi2.default.remove(featureToggleName).then(function () {\n\t return dispatch({ type: REMOVE_FEATURE_TOGGLE, featureToggleName: featureToggleName });\n\t }).catch(dispatchAndThrow(dispatch, ERROR_REMOVE_FEATURE_TOGGLE));\n\t };\n\t}\n\t\n\tfunction validateName(featureToggleName) {\n\t return _featureApi2.default.validate({ name: featureToggleName });\n\t}\n\n/***/ },\n/* 23 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.createPath = exports.parsePath = exports.getQueryStringValueFromPath = exports.stripQueryStringValueFromPath = exports.addQueryStringValueToPath = undefined;\n\t\n\tvar _warning = __webpack_require__(25);\n\t\n\tvar _warning2 = _interopRequireDefault(_warning);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar addQueryStringValueToPath = exports.addQueryStringValueToPath = function addQueryStringValueToPath(path, key, value) {\n\t var _parsePath = parsePath(path);\n\t\n\t var pathname = _parsePath.pathname;\n\t var search = _parsePath.search;\n\t var hash = _parsePath.hash;\n\t\n\t\n\t return createPath({\n\t pathname: pathname,\n\t search: search + (search.indexOf('?') === -1 ? '?' : '&') + key + '=' + value,\n\t hash: hash\n\t });\n\t};\n\t\n\tvar stripQueryStringValueFromPath = exports.stripQueryStringValueFromPath = function stripQueryStringValueFromPath(path, key) {\n\t var _parsePath2 = parsePath(path);\n\t\n\t var pathname = _parsePath2.pathname;\n\t var search = _parsePath2.search;\n\t var hash = _parsePath2.hash;\n\t\n\t\n\t return createPath({\n\t pathname: pathname,\n\t search: search.replace(new RegExp('([?&])' + key + '=[a-zA-Z0-9]+(&?)'), function (match, prefix, suffix) {\n\t return prefix === '?' ? prefix : suffix;\n\t }),\n\t hash: hash\n\t });\n\t};\n\t\n\tvar getQueryStringValueFromPath = exports.getQueryStringValueFromPath = function getQueryStringValueFromPath(path, key) {\n\t var _parsePath3 = parsePath(path);\n\t\n\t var search = _parsePath3.search;\n\t\n\t var match = search.match(new RegExp('[?&]' + key + '=([a-zA-Z0-9]+)'));\n\t return match && match[1];\n\t};\n\t\n\tvar extractPath = function extractPath(string) {\n\t var match = string.match(/^(https?:)?\\/\\/[^\\/]*/);\n\t return match == null ? string : string.substring(match[0].length);\n\t};\n\t\n\tvar parsePath = exports.parsePath = function parsePath(path) {\n\t var pathname = extractPath(path);\n\t var search = '';\n\t var hash = '';\n\t\n\t false ? (0, _warning2.default)(path === pathname, 'A path must be pathname + search + hash only, not a full URL like \"%s\"', path) : void 0;\n\t\n\t var hashIndex = pathname.indexOf('#');\n\t if (hashIndex !== -1) {\n\t hash = pathname.substring(hashIndex);\n\t pathname = pathname.substring(0, hashIndex);\n\t }\n\t\n\t var searchIndex = pathname.indexOf('?');\n\t if (searchIndex !== -1) {\n\t search = pathname.substring(searchIndex);\n\t pathname = pathname.substring(0, searchIndex);\n\t }\n\t\n\t if (pathname === '') pathname = '/';\n\t\n\t return {\n\t pathname: pathname,\n\t search: search,\n\t hash: hash\n\t };\n\t};\n\t\n\tvar createPath = exports.createPath = function createPath(location) {\n\t if (location == null || typeof location === 'string') return location;\n\t\n\t var basename = location.basename;\n\t var pathname = location.pathname;\n\t var search = location.search;\n\t var hash = location.hash;\n\t\n\t var path = (basename || '') + pathname;\n\t\n\t if (search && search !== '?') path += search;\n\t\n\t if (hash) path += hash;\n\t\n\t return path;\n\t};\n\n/***/ },\n/* 24 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\texports.isReactChildren = isReactChildren;\n\texports.createRouteFromReactElement = createRouteFromReactElement;\n\texports.createRoutesFromReactChildren = createRoutesFromReactChildren;\n\texports.createRoutes = createRoutes;\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction isValidChild(object) {\n\t return object == null || _react2.default.isValidElement(object);\n\t}\n\t\n\tfunction isReactChildren(object) {\n\t return isValidChild(object) || Array.isArray(object) && object.every(isValidChild);\n\t}\n\t\n\tfunction createRoute(defaultProps, props) {\n\t return _extends({}, defaultProps, props);\n\t}\n\t\n\tfunction createRouteFromReactElement(element) {\n\t var type = element.type;\n\t var route = createRoute(type.defaultProps, element.props);\n\t\n\t if (route.children) {\n\t var childRoutes = createRoutesFromReactChildren(route.children, route);\n\t\n\t if (childRoutes.length) route.childRoutes = childRoutes;\n\t\n\t delete route.children;\n\t }\n\t\n\t return route;\n\t}\n\t\n\t/**\n\t * Creates and returns a routes object from the given ReactChildren. JSX\n\t * provides a convenient way to visualize how routes in the hierarchy are\n\t * nested.\n\t *\n\t * import { Route, createRoutesFromReactChildren } from 'react-router'\n\t *\n\t * const routes = createRoutesFromReactChildren(\n\t * \n\t * \n\t * \n\t * \n\t * )\n\t *\n\t * Note: This method is automatically used when you provide children\n\t * to a component.\n\t */\n\tfunction createRoutesFromReactChildren(children, parentRoute) {\n\t var routes = [];\n\t\n\t _react2.default.Children.forEach(children, function (element) {\n\t if (_react2.default.isValidElement(element)) {\n\t // Component classes may have a static create* method.\n\t if (element.type.createRouteFromReactElement) {\n\t var route = element.type.createRouteFromReactElement(element, parentRoute);\n\t\n\t if (route) routes.push(route);\n\t } else {\n\t routes.push(createRouteFromReactElement(element));\n\t }\n\t }\n\t });\n\t\n\t return routes;\n\t}\n\t\n\t/**\n\t * Creates and returns an array of routes from the given object which\n\t * may be a JSX route, a plain object route, or an array of either.\n\t */\n\tfunction createRoutes(routes) {\n\t if (isReactChildren(routes)) {\n\t routes = createRoutesFromReactChildren(routes);\n\t } else if (routes && !Array.isArray(routes)) {\n\t routes = [routes];\n\t }\n\t\n\t return routes;\n\t}\n\n/***/ },\n/* 25 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-2015, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Similar to invariant but only logs a warning if the condition is not met.\n\t * This can be used to log issues in development environments in critical\n\t * paths. Removing the logging code for production environments will keep the\n\t * same logic and follow the same code paths.\n\t */\n\t\n\tvar warning = function() {};\n\t\n\tif (false) {\n\t warning = function(condition, format, args) {\n\t var len = arguments.length;\n\t args = new Array(len > 2 ? len - 2 : 0);\n\t for (var key = 2; key < len; key++) {\n\t args[key - 2] = arguments[key];\n\t }\n\t if (format === undefined) {\n\t throw new Error(\n\t '`warning(condition, format, ...args)` requires a warning ' +\n\t 'message argument'\n\t );\n\t }\n\t\n\t if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n\t throw new Error(\n\t 'The warning format should be able to uniquely identify this ' +\n\t 'warning. Please, use a more descriptive format than: ' + format\n\t );\n\t }\n\t\n\t if (!condition) {\n\t var argIndex = 0;\n\t var message = 'Warning: ' +\n\t format.replace(/%s/g, function() {\n\t return args[argIndex++];\n\t });\n\t if (typeof console !== 'undefined') {\n\t console.error(message);\n\t }\n\t try {\n\t // This error was thrown as a convenience so that you can use this stack\n\t // to find the callsite that caused this warning to fire.\n\t throw new Error(message);\n\t } catch(x) {}\n\t }\n\t };\n\t}\n\t\n\tmodule.exports = warning;\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.throwIfNotSuccess = throwIfNotSuccess;\n\tvar defaultErrorMessage = 'Unexptected exception when talking to unleash-api';\n\t\n\tfunction extractJoiMsg(body) {\n\t return body.details.length > 0 ? body.details[0].message : defaultErrorMessage;\n\t}\n\tfunction extractLegacyMsg(body) {\n\t return body && body.length > 0 ? body[0].msg : defaultErrorMessage;\n\t}\n\t\n\tfunction throwIfNotSuccess(response) {\n\t if (!response.ok) {\n\t if (response.status > 399 && response.status < 404) {\n\t return new Promise(function (resolve, reject) {\n\t response.json().then(function (body) {\n\t var errorMsg = body && body.isJoi ? extractJoiMsg(body) : extractLegacyMsg(body);\n\t var error = new Error(errorMsg);\n\t error.statusCode = response.status;\n\t reject(error);\n\t });\n\t });\n\t } else {\n\t return Promise.reject(new Error(defaultErrorMessage));\n\t }\n\t }\n\t return Promise.resolve(response);\n\t};\n\t\n\tvar headers = exports.headers = {\n\t 'Accept': 'application/json',\n\t 'Content-Type': 'application/json'\n\t};\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.ERROR_UPDATING_STRATEGY = exports.ERROR_CREATING_STRATEGY = exports.ERROR_RECEIVE_STRATEGIES = exports.RECEIVE_STRATEGIES = exports.START_UPDATE_STRATEGY = exports.START_CREATE_STRATEGY = exports.REQUEST_STRATEGIES = exports.REMOVE_STRATEGY = exports.UPDATE_STRATEGY = exports.ADD_STRATEGY = undefined;\n\texports.fetchStrategies = fetchStrategies;\n\texports.createStrategy = createStrategy;\n\texports.updateStrategy = updateStrategy;\n\texports.removeStrategy = removeStrategy;\n\texports.getApplicationsWithStrategy = getApplicationsWithStrategy;\n\t\n\tvar _strategyApi = __webpack_require__(213);\n\t\n\tvar _strategyApi2 = _interopRequireDefault(_strategyApi);\n\t\n\tvar _applicationsApi = __webpack_require__(104);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar ADD_STRATEGY = exports.ADD_STRATEGY = 'ADD_STRATEGY';\n\tvar UPDATE_STRATEGY = exports.UPDATE_STRATEGY = 'UPDATE_STRATEGY';\n\tvar REMOVE_STRATEGY = exports.REMOVE_STRATEGY = 'REMOVE_STRATEGY';\n\tvar REQUEST_STRATEGIES = exports.REQUEST_STRATEGIES = 'REQUEST_STRATEGIES';\n\tvar START_CREATE_STRATEGY = exports.START_CREATE_STRATEGY = 'START_CREATE_STRATEGY';\n\tvar START_UPDATE_STRATEGY = exports.START_UPDATE_STRATEGY = 'START_UPDATE_STRATEGY';\n\tvar RECEIVE_STRATEGIES = exports.RECEIVE_STRATEGIES = 'RECEIVE_STRATEGIES';\n\tvar ERROR_RECEIVE_STRATEGIES = exports.ERROR_RECEIVE_STRATEGIES = 'ERROR_RECEIVE_STRATEGIES';\n\tvar ERROR_CREATING_STRATEGY = exports.ERROR_CREATING_STRATEGY = 'ERROR_CREATING_STRATEGY';\n\tvar ERROR_UPDATING_STRATEGY = exports.ERROR_UPDATING_STRATEGY = 'ERROR_UPDATING_STRATEGY';\n\t\n\tvar addStrategy = function addStrategy(strategy) {\n\t return { type: ADD_STRATEGY, strategy: strategy };\n\t};\n\tvar createRemoveStrategy = function createRemoveStrategy(strategy) {\n\t return { type: REMOVE_STRATEGY, strategy: strategy };\n\t};\n\tvar updatedStrategy = function updatedStrategy(strategy) {\n\t return { type: UPDATE_STRATEGY, strategy: strategy };\n\t};\n\t\n\tvar errorCreatingStrategy = function errorCreatingStrategy(statusCode) {\n\t return {\n\t type: ERROR_CREATING_STRATEGY,\n\t statusCode: statusCode\n\t };\n\t};\n\t\n\tvar startRequest = function startRequest() {\n\t return { type: REQUEST_STRATEGIES };\n\t};\n\t\n\tvar receiveStrategies = function receiveStrategies(json) {\n\t return {\n\t type: RECEIVE_STRATEGIES,\n\t value: json.strategies\n\t };\n\t};\n\t\n\tvar startCreate = function startCreate() {\n\t return { type: START_CREATE_STRATEGY };\n\t};\n\t\n\tvar errorReceiveStrategies = function errorReceiveStrategies(statusCode) {\n\t return {\n\t type: ERROR_RECEIVE_STRATEGIES,\n\t statusCode: statusCode\n\t };\n\t};\n\t\n\tvar startUpdate = function startUpdate() {\n\t return { type: START_UPDATE_STRATEGY };\n\t};\n\t\n\tfunction dispatchAndThrow(dispatch, type) {\n\t return function (error) {\n\t dispatch({ type: type, error: error, receivedAt: Date.now() });\n\t throw error;\n\t };\n\t}\n\t\n\tfunction fetchStrategies() {\n\t return function (dispatch) {\n\t dispatch(startRequest());\n\t\n\t return _strategyApi2.default.fetchAll().then(function (json) {\n\t return dispatch(receiveStrategies(json));\n\t }).catch(function (error) {\n\t return dispatch(errorReceiveStrategies(error));\n\t });\n\t };\n\t}\n\t\n\tfunction createStrategy(strategy) {\n\t return function (dispatch) {\n\t dispatch(startCreate());\n\t\n\t return _strategyApi2.default.create(strategy).then(function () {\n\t return dispatch(addStrategy(strategy));\n\t }).catch(function (error) {\n\t return dispatch(errorCreatingStrategy(error));\n\t });\n\t };\n\t}\n\t\n\tfunction updateStrategy(strategy) {\n\t return function (dispatch) {\n\t dispatch(startUpdate());\n\t\n\t return _strategyApi2.default.update(strategy).then(function () {\n\t return dispatch(updatedStrategy(strategy));\n\t }).catch(dispatchAndThrow(dispatch, ERROR_UPDATING_STRATEGY));\n\t };\n\t}\n\t\n\tfunction removeStrategy(strategy) {\n\t return function (dispatch) {\n\t return _strategyApi2.default.remove(strategy).then(function () {\n\t return dispatch(createRemoveStrategy(strategy));\n\t }).catch(function (error) {\n\t return dispatch(errorCreatingStrategy(error));\n\t });\n\t };\n\t}\n\t\n\tfunction getApplicationsWithStrategy(strategyName) {\n\t return (0, _applicationsApi.fetchApplicationsWithStrategyName)(strategyName);\n\t}\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * Static poolers. Several custom versions for each potential number of\n\t * arguments. A completely generic pooler is easy to implement, but would\n\t * require accessing the `arguments` object. In each of these, `this` refers to\n\t * the Class itself, not an instance. If any others are needed, simply add them\n\t * here, or in their own files.\n\t */\n\tvar oneArgumentPooler = function (copyFieldsFrom) {\n\t var Klass = this;\n\t if (Klass.instancePool.length) {\n\t var instance = Klass.instancePool.pop();\n\t Klass.call(instance, copyFieldsFrom);\n\t return instance;\n\t } else {\n\t return new Klass(copyFieldsFrom);\n\t }\n\t};\n\t\n\tvar twoArgumentPooler = function (a1, a2) {\n\t var Klass = this;\n\t if (Klass.instancePool.length) {\n\t var instance = Klass.instancePool.pop();\n\t Klass.call(instance, a1, a2);\n\t return instance;\n\t } else {\n\t return new Klass(a1, a2);\n\t }\n\t};\n\t\n\tvar threeArgumentPooler = function (a1, a2, a3) {\n\t var Klass = this;\n\t if (Klass.instancePool.length) {\n\t var instance = Klass.instancePool.pop();\n\t Klass.call(instance, a1, a2, a3);\n\t return instance;\n\t } else {\n\t return new Klass(a1, a2, a3);\n\t }\n\t};\n\t\n\tvar fourArgumentPooler = function (a1, a2, a3, a4) {\n\t var Klass = this;\n\t if (Klass.instancePool.length) {\n\t var instance = Klass.instancePool.pop();\n\t Klass.call(instance, a1, a2, a3, a4);\n\t return instance;\n\t } else {\n\t return new Klass(a1, a2, a3, a4);\n\t }\n\t};\n\t\n\tvar fiveArgumentPooler = function (a1, a2, a3, a4, a5) {\n\t var Klass = this;\n\t if (Klass.instancePool.length) {\n\t var instance = Klass.instancePool.pop();\n\t Klass.call(instance, a1, a2, a3, a4, a5);\n\t return instance;\n\t } else {\n\t return new Klass(a1, a2, a3, a4, a5);\n\t }\n\t};\n\t\n\tvar standardReleaser = function (instance) {\n\t var Klass = this;\n\t !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n\t instance.destructor();\n\t if (Klass.instancePool.length < Klass.poolSize) {\n\t Klass.instancePool.push(instance);\n\t }\n\t};\n\t\n\tvar DEFAULT_POOL_SIZE = 10;\n\tvar DEFAULT_POOLER = oneArgumentPooler;\n\t\n\t/**\n\t * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n\t * itself (statically) not adding any prototypical fields. Any CopyConstructor\n\t * you give this may have a `poolSize` property, and will look for a\n\t * prototypical `destructor` on instances.\n\t *\n\t * @param {Function} CopyConstructor Constructor that can be used to reset.\n\t * @param {Function} pooler Customizable pooler.\n\t */\n\tvar addPoolingTo = function (CopyConstructor, pooler) {\n\t // Casting as any so that flow ignores the actual implementation and trusts\n\t // it to match the type we declared\n\t var NewKlass = CopyConstructor;\n\t NewKlass.instancePool = [];\n\t NewKlass.getPooled = pooler || DEFAULT_POOLER;\n\t if (!NewKlass.poolSize) {\n\t NewKlass.poolSize = DEFAULT_POOL_SIZE;\n\t }\n\t NewKlass.release = standardReleaser;\n\t return NewKlass;\n\t};\n\t\n\tvar PooledClass = {\n\t addPoolingTo: addPoolingTo,\n\t oneArgumentPooler: oneArgumentPooler,\n\t twoArgumentPooler: twoArgumentPooler,\n\t threeArgumentPooler: threeArgumentPooler,\n\t fourArgumentPooler: fourArgumentPooler,\n\t fiveArgumentPooler: fiveArgumentPooler\n\t};\n\t\n\tmodule.exports = PooledClass;\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.locationsAreEqual = exports.statesAreEqual = exports.createLocation = exports.createQuery = undefined;\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _warning = __webpack_require__(25);\n\t\n\tvar _warning2 = _interopRequireDefault(_warning);\n\t\n\tvar _PathUtils = __webpack_require__(23);\n\t\n\tvar _Actions = __webpack_require__(49);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar createQuery = exports.createQuery = function createQuery(props) {\n\t return _extends(Object.create(null), props);\n\t};\n\t\n\tvar createLocation = exports.createLocation = function createLocation() {\n\t var input = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0];\n\t var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1];\n\t var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];\n\t\n\t var object = typeof input === 'string' ? (0, _PathUtils.parsePath)(input) : input;\n\t\n\t false ? (0, _warning2.default)(!object.path, 'Location descriptor objects should have a `pathname`, not a `path`.') : void 0;\n\t\n\t var pathname = object.pathname || '/';\n\t var search = object.search || '';\n\t var hash = object.hash || '';\n\t var state = object.state;\n\t\n\t return {\n\t pathname: pathname,\n\t search: search,\n\t hash: hash,\n\t state: state,\n\t action: action,\n\t key: key\n\t };\n\t};\n\t\n\tvar isDate = function isDate(object) {\n\t return Object.prototype.toString.call(object) === '[object Date]';\n\t};\n\t\n\tvar statesAreEqual = exports.statesAreEqual = function statesAreEqual(a, b) {\n\t if (a === b) return true;\n\t\n\t var typeofA = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n\t var typeofB = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\t\n\t if (typeofA !== typeofB) return false;\n\t\n\t !(typeofA !== 'function') ? false ? (0, _invariant2.default)(false, 'You must not store functions in location state') : (0, _invariant2.default)(false) : void 0;\n\t\n\t // Not the same object, but same type.\n\t if (typeofA === 'object') {\n\t !!(isDate(a) && isDate(b)) ? false ? (0, _invariant2.default)(false, 'You must not store Date objects in location state') : (0, _invariant2.default)(false) : void 0;\n\t\n\t if (!Array.isArray(a)) {\n\t var keysofA = Object.keys(a);\n\t var keysofB = Object.keys(b);\n\t return keysofA.length === keysofB.length && keysofA.every(function (key) {\n\t return statesAreEqual(a[key], b[key]);\n\t });\n\t }\n\t\n\t return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n\t return statesAreEqual(item, b[index]);\n\t });\n\t }\n\t\n\t // All other serializable types (string, number, boolean)\n\t // should be strict equal.\n\t return false;\n\t};\n\t\n\tvar locationsAreEqual = exports.locationsAreEqual = function locationsAreEqual(a, b) {\n\t return a.key === b.key &&\n\t // a.action === b.action && // Different action !== location change.\n\t a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && statesAreEqual(a.state, b.state);\n\t};\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar DOMNamespaces = __webpack_require__(73);\n\tvar setInnerHTML = __webpack_require__(55);\n\t\n\tvar createMicrosoftUnsafeLocalFunction = __webpack_require__(81);\n\tvar setTextContent = __webpack_require__(136);\n\t\n\tvar ELEMENT_NODE_TYPE = 1;\n\tvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\t\n\t/**\n\t * In IE (8-11) and Edge, appending nodes with no children is dramatically\n\t * faster than appending a full subtree, so we essentially queue up the\n\t * .appendChild calls here and apply them so each node is added to its parent\n\t * before any children are added.\n\t *\n\t * In other browsers, doing so is slower or neutral compared to the other order\n\t * (in Firefox, twice as slow) so we only do this inversion in IE.\n\t *\n\t * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n\t */\n\tvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\t\n\tfunction insertTreeChildren(tree) {\n\t if (!enableLazy) {\n\t return;\n\t }\n\t var node = tree.node;\n\t var children = tree.children;\n\t if (children.length) {\n\t for (var i = 0; i < children.length; i++) {\n\t insertTreeBefore(node, children[i], null);\n\t }\n\t } else if (tree.html != null) {\n\t setInnerHTML(node, tree.html);\n\t } else if (tree.text != null) {\n\t setTextContent(node, tree.text);\n\t }\n\t}\n\t\n\tvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n\t // DocumentFragments aren't actually part of the DOM after insertion so\n\t // appending children won't update the DOM. We need to ensure the fragment\n\t // is properly populated first, breaking out of our lazy approach for just\n\t // this level. Also, some plugins (like Flash Player) will read\n\t // nodes immediately upon insertion into the DOM, so \n\t // must also be populated prior to insertion into the DOM.\n\t if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n\t insertTreeChildren(tree);\n\t parentNode.insertBefore(tree.node, referenceNode);\n\t } else {\n\t parentNode.insertBefore(tree.node, referenceNode);\n\t insertTreeChildren(tree);\n\t }\n\t});\n\t\n\tfunction replaceChildWithTree(oldNode, newTree) {\n\t oldNode.parentNode.replaceChild(newTree.node, oldNode);\n\t insertTreeChildren(newTree);\n\t}\n\t\n\tfunction queueChild(parentTree, childTree) {\n\t if (enableLazy) {\n\t parentTree.children.push(childTree);\n\t } else {\n\t parentTree.node.appendChild(childTree.node);\n\t }\n\t}\n\t\n\tfunction queueHTML(tree, html) {\n\t if (enableLazy) {\n\t tree.html = html;\n\t } else {\n\t setInnerHTML(tree.node, html);\n\t }\n\t}\n\t\n\tfunction queueText(tree, text) {\n\t if (enableLazy) {\n\t tree.text = text;\n\t } else {\n\t setTextContent(tree.node, text);\n\t }\n\t}\n\t\n\tfunction toString() {\n\t return this.node.nodeName;\n\t}\n\t\n\tfunction DOMLazyTree(node) {\n\t return {\n\t node: node,\n\t children: [],\n\t html: null,\n\t text: null,\n\t toString: toString\n\t };\n\t}\n\t\n\tDOMLazyTree.insertTreeBefore = insertTreeBefore;\n\tDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\n\tDOMLazyTree.queueChild = queueChild;\n\tDOMLazyTree.queueHTML = queueHTML;\n\tDOMLazyTree.queueText = queueText;\n\t\n\tmodule.exports = DOMLazyTree;\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\tfunction checkMask(value, bitmask) {\n\t return (value & bitmask) === bitmask;\n\t}\n\t\n\tvar DOMPropertyInjection = {\n\t /**\n\t * Mapping from normalized, camelcased property names to a configuration that\n\t * specifies how the associated DOM property should be accessed or rendered.\n\t */\n\t MUST_USE_PROPERTY: 0x1,\n\t HAS_BOOLEAN_VALUE: 0x4,\n\t HAS_NUMERIC_VALUE: 0x8,\n\t HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n\t HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\t\n\t /**\n\t * Inject some specialized knowledge about the DOM. This takes a config object\n\t * with the following properties:\n\t *\n\t * isCustomAttribute: function that given an attribute name will return true\n\t * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n\t * attributes where it's impossible to enumerate all of the possible\n\t * attribute names,\n\t *\n\t * Properties: object mapping DOM property name to one of the\n\t * DOMPropertyInjection constants or null. If your attribute isn't in here,\n\t * it won't get written to the DOM.\n\t *\n\t * DOMAttributeNames: object mapping React attribute name to the DOM\n\t * attribute name. Attribute names not specified use the **lowercase**\n\t * normalized name.\n\t *\n\t * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n\t * attribute namespace URL. (Attribute names not specified use no namespace.)\n\t *\n\t * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n\t * Property names not specified use the normalized name.\n\t *\n\t * DOMMutationMethods: Properties that require special mutation methods. If\n\t * `value` is undefined, the mutation method should unset the property.\n\t *\n\t * @param {object} domPropertyConfig the config as described above.\n\t */\n\t injectDOMPropertyConfig: function (domPropertyConfig) {\n\t var Injection = DOMPropertyInjection;\n\t var Properties = domPropertyConfig.Properties || {};\n\t var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n\t var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n\t var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n\t var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\t\n\t if (domPropertyConfig.isCustomAttribute) {\n\t DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n\t }\n\t\n\t for (var propName in Properties) {\n\t !!DOMProperty.properties.hasOwnProperty(propName) ? false ? invariant(false, 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property \\'%s\\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0;\n\t\n\t var lowerCased = propName.toLowerCase();\n\t var propConfig = Properties[propName];\n\t\n\t var propertyInfo = {\n\t attributeName: lowerCased,\n\t attributeNamespace: null,\n\t propertyName: propName,\n\t mutationMethod: null,\n\t\n\t mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n\t hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n\t hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n\t hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n\t hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n\t };\n\t !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? false ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\t\n\t if (false) {\n\t DOMProperty.getPossibleStandardName[lowerCased] = propName;\n\t }\n\t\n\t if (DOMAttributeNames.hasOwnProperty(propName)) {\n\t var attributeName = DOMAttributeNames[propName];\n\t propertyInfo.attributeName = attributeName;\n\t if (false) {\n\t DOMProperty.getPossibleStandardName[attributeName] = propName;\n\t }\n\t }\n\t\n\t if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n\t propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n\t }\n\t\n\t if (DOMPropertyNames.hasOwnProperty(propName)) {\n\t propertyInfo.propertyName = DOMPropertyNames[propName];\n\t }\n\t\n\t if (DOMMutationMethods.hasOwnProperty(propName)) {\n\t propertyInfo.mutationMethod = DOMMutationMethods[propName];\n\t }\n\t\n\t DOMProperty.properties[propName] = propertyInfo;\n\t }\n\t }\n\t};\n\t\n\t/* eslint-disable max-len */\n\tvar ATTRIBUTE_NAME_START_CHAR = ':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';\n\t/* eslint-enable max-len */\n\t\n\t/**\n\t * DOMProperty exports lookup objects that can be used like functions:\n\t *\n\t * > DOMProperty.isValid['id']\n\t * true\n\t * > DOMProperty.isValid['foobar']\n\t * undefined\n\t *\n\t * Although this may be confusing, it performs better in general.\n\t *\n\t * @see http://jsperf.com/key-exists\n\t * @see http://jsperf.com/key-missing\n\t */\n\tvar DOMProperty = {\n\t\n\t ID_ATTRIBUTE_NAME: 'data-reactid',\n\t ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\t\n\t ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n\t ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\t\n\t /**\n\t * Map from property \"standard name\" to an object with info about how to set\n\t * the property in the DOM. Each object contains:\n\t *\n\t * attributeName:\n\t * Used when rendering markup or with `*Attribute()`.\n\t * attributeNamespace\n\t * propertyName:\n\t * Used on DOM node instances. (This includes properties that mutate due to\n\t * external factors.)\n\t * mutationMethod:\n\t * If non-null, used instead of the property or `setAttribute()` after\n\t * initial render.\n\t * mustUseProperty:\n\t * Whether the property must be accessed and mutated as an object property.\n\t * hasBooleanValue:\n\t * Whether the property should be removed when set to a falsey value.\n\t * hasNumericValue:\n\t * Whether the property must be numeric or parse as a numeric and should be\n\t * removed when set to a falsey value.\n\t * hasPositiveNumericValue:\n\t * Whether the property must be positive numeric or parse as a positive\n\t * numeric and should be removed when set to a falsey value.\n\t * hasOverloadedBooleanValue:\n\t * Whether the property can be used as a flag as well as with a value.\n\t * Removed when strictly equal to false; present without a value when\n\t * strictly equal to true; present with a value otherwise.\n\t */\n\t properties: {},\n\t\n\t /**\n\t * Mapping from lowercase property names to the properly cased version, used\n\t * to warn in the case of missing properties. Available only in __DEV__.\n\t *\n\t * autofocus is predefined, because adding it to the property whitelist\n\t * causes unintended side effects.\n\t *\n\t * @type {Object}\n\t */\n\t getPossibleStandardName: false ? { autofocus: 'autoFocus' } : null,\n\t\n\t /**\n\t * All of the isCustomAttribute() functions that have been injected.\n\t */\n\t _isCustomAttributeFunctions: [],\n\t\n\t /**\n\t * Checks whether a property name is a custom attribute.\n\t * @method\n\t */\n\t isCustomAttribute: function (attributeName) {\n\t for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n\t var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n\t if (isCustomAttributeFn(attributeName)) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t },\n\t\n\t injection: DOMPropertyInjection\n\t};\n\t\n\tmodule.exports = DOMProperty;\n\n/***/ },\n/* 32 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactRef = __webpack_require__(311);\n\tvar ReactInstrumentation = __webpack_require__(18);\n\t\n\tvar warning = __webpack_require__(4);\n\t\n\t/**\n\t * Helper to call ReactRef.attachRefs with this composite component, split out\n\t * to avoid allocations in the transaction mount-ready queue.\n\t */\n\tfunction attachRefs() {\n\t ReactRef.attachRefs(this, this._currentElement);\n\t}\n\t\n\tvar ReactReconciler = {\n\t\n\t /**\n\t * Initializes the component, renders markup, and registers event listeners.\n\t *\n\t * @param {ReactComponent} internalInstance\n\t * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n\t * @param {?object} the containing host component instance\n\t * @param {?object} info about the host container\n\t * @return {?string} Rendered markup to be inserted into the DOM.\n\t * @final\n\t * @internal\n\t */\n\t mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots\n\t ) {\n\t if (false) {\n\t if (internalInstance._debugID !== 0) {\n\t ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n\t }\n\t }\n\t var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n\t if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n\t transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n\t }\n\t if (false) {\n\t if (internalInstance._debugID !== 0) {\n\t ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n\t }\n\t }\n\t return markup;\n\t },\n\t\n\t /**\n\t * Returns a value that can be passed to\n\t * ReactComponentEnvironment.replaceNodeWithMarkup.\n\t */\n\t getHostNode: function (internalInstance) {\n\t return internalInstance.getHostNode();\n\t },\n\t\n\t /**\n\t * Releases any resources allocated by `mountComponent`.\n\t *\n\t * @final\n\t * @internal\n\t */\n\t unmountComponent: function (internalInstance, safely) {\n\t if (false) {\n\t if (internalInstance._debugID !== 0) {\n\t ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n\t }\n\t }\n\t ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n\t internalInstance.unmountComponent(safely);\n\t if (false) {\n\t if (internalInstance._debugID !== 0) {\n\t ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n\t }\n\t }\n\t },\n\t\n\t /**\n\t * Update a component using a new element.\n\t *\n\t * @param {ReactComponent} internalInstance\n\t * @param {ReactElement} nextElement\n\t * @param {ReactReconcileTransaction} transaction\n\t * @param {object} context\n\t * @internal\n\t */\n\t receiveComponent: function (internalInstance, nextElement, transaction, context) {\n\t var prevElement = internalInstance._currentElement;\n\t\n\t if (nextElement === prevElement && context === internalInstance._context) {\n\t // Since elements are immutable after the owner is rendered,\n\t // we can do a cheap identity compare here to determine if this is a\n\t // superfluous reconcile. It's possible for state to be mutable but such\n\t // change should trigger an update of the owner which would recreate\n\t // the element. We explicitly check for the existence of an owner since\n\t // it's possible for an element created outside a composite to be\n\t // deeply mutated and reused.\n\t\n\t // TODO: Bailing out early is just a perf optimization right?\n\t // TODO: Removing the return statement should affect correctness?\n\t return;\n\t }\n\t\n\t if (false) {\n\t if (internalInstance._debugID !== 0) {\n\t ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n\t }\n\t }\n\t\n\t var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\t\n\t if (refsChanged) {\n\t ReactRef.detachRefs(internalInstance, prevElement);\n\t }\n\t\n\t internalInstance.receiveComponent(nextElement, transaction, context);\n\t\n\t if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n\t transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n\t }\n\t\n\t if (false) {\n\t if (internalInstance._debugID !== 0) {\n\t ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n\t }\n\t }\n\t },\n\t\n\t /**\n\t * Flush any dirty changes in a component.\n\t *\n\t * @param {ReactComponent} internalInstance\n\t * @param {ReactReconcileTransaction} transaction\n\t * @internal\n\t */\n\t performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {\n\t if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n\t // The component's enqueued batch number should always be the current\n\t // batch or the following one.\n\t false ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n\t return;\n\t }\n\t if (false) {\n\t if (internalInstance._debugID !== 0) {\n\t ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n\t }\n\t }\n\t internalInstance.performUpdateIfNecessary(transaction);\n\t if (false) {\n\t if (internalInstance._debugID !== 0) {\n\t ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n\t }\n\t }\n\t }\n\t\n\t};\n\t\n\tmodule.exports = ReactReconciler;\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\texports.default = function (displayName, defaultClassName) {\n\t var element = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'div';\n\t\n\t var fn = function fn(props) {\n\t var className = props.className,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'children']);\n\t\n\t return _react2.default.createElement(element, _extends({\n\t className: (0, _classnames2.default)(defaultClassName, className)\n\t }, otherProps), children);\n\t };\n\t\n\t fn.displayName = displayName;\n\t fn.propTypes = {\n\t className: _react.PropTypes.string\n\t };\n\t\n\t return fn;\n\t};\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.compilePattern = compilePattern;\n\texports.matchPattern = matchPattern;\n\texports.getParamNames = getParamNames;\n\texports.getParams = getParams;\n\texports.formatPattern = formatPattern;\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction escapeRegExp(string) {\n\t return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\t}\n\t\n\tfunction _compilePattern(pattern) {\n\t var regexpSource = '';\n\t var paramNames = [];\n\t var tokens = [];\n\t\n\t var match = void 0,\n\t lastIndex = 0,\n\t matcher = /:([a-zA-Z_$][a-zA-Z0-9_$]*)|\\*\\*|\\*|\\(|\\)/g;\n\t while (match = matcher.exec(pattern)) {\n\t if (match.index !== lastIndex) {\n\t tokens.push(pattern.slice(lastIndex, match.index));\n\t regexpSource += escapeRegExp(pattern.slice(lastIndex, match.index));\n\t }\n\t\n\t if (match[1]) {\n\t regexpSource += '([^/]+)';\n\t paramNames.push(match[1]);\n\t } else if (match[0] === '**') {\n\t regexpSource += '(.*)';\n\t paramNames.push('splat');\n\t } else if (match[0] === '*') {\n\t regexpSource += '(.*?)';\n\t paramNames.push('splat');\n\t } else if (match[0] === '(') {\n\t regexpSource += '(?:';\n\t } else if (match[0] === ')') {\n\t regexpSource += ')?';\n\t }\n\t\n\t tokens.push(match[0]);\n\t\n\t lastIndex = matcher.lastIndex;\n\t }\n\t\n\t if (lastIndex !== pattern.length) {\n\t tokens.push(pattern.slice(lastIndex, pattern.length));\n\t regexpSource += escapeRegExp(pattern.slice(lastIndex, pattern.length));\n\t }\n\t\n\t return {\n\t pattern: pattern,\n\t regexpSource: regexpSource,\n\t paramNames: paramNames,\n\t tokens: tokens\n\t };\n\t}\n\t\n\tvar CompiledPatternsCache = Object.create(null);\n\t\n\tfunction compilePattern(pattern) {\n\t if (!CompiledPatternsCache[pattern]) CompiledPatternsCache[pattern] = _compilePattern(pattern);\n\t\n\t return CompiledPatternsCache[pattern];\n\t}\n\t\n\t/**\n\t * Attempts to match a pattern on the given pathname. Patterns may use\n\t * the following special characters:\n\t *\n\t * - :paramName Matches a URL segment up to the next /, ?, or #. The\n\t * captured string is considered a \"param\"\n\t * - () Wraps a segment of the URL that is optional\n\t * - * Consumes (non-greedy) all characters up to the next\n\t * character in the pattern, or to the end of the URL if\n\t * there is none\n\t * - ** Consumes (greedy) all characters up to the next character\n\t * in the pattern, or to the end of the URL if there is none\n\t *\n\t * The function calls callback(error, matched) when finished.\n\t * The return value is an object with the following properties:\n\t *\n\t * - remainingPathname\n\t * - paramNames\n\t * - paramValues\n\t */\n\tfunction matchPattern(pattern, pathname) {\n\t // Ensure pattern starts with leading slash for consistency with pathname.\n\t if (pattern.charAt(0) !== '/') {\n\t pattern = '/' + pattern;\n\t }\n\t\n\t var _compilePattern2 = compilePattern(pattern),\n\t regexpSource = _compilePattern2.regexpSource,\n\t paramNames = _compilePattern2.paramNames,\n\t tokens = _compilePattern2.tokens;\n\t\n\t if (pattern.charAt(pattern.length - 1) !== '/') {\n\t regexpSource += '/?'; // Allow optional path separator at end.\n\t }\n\t\n\t // Special-case patterns like '*' for catch-all routes.\n\t if (tokens[tokens.length - 1] === '*') {\n\t regexpSource += '$';\n\t }\n\t\n\t var match = pathname.match(new RegExp('^' + regexpSource, 'i'));\n\t if (match == null) {\n\t return null;\n\t }\n\t\n\t var matchedPath = match[0];\n\t var remainingPathname = pathname.substr(matchedPath.length);\n\t\n\t if (remainingPathname) {\n\t // Require that the match ends at a path separator, if we didn't match\n\t // the full path, so any remaining pathname is a new path segment.\n\t if (matchedPath.charAt(matchedPath.length - 1) !== '/') {\n\t return null;\n\t }\n\t\n\t // If there is a remaining pathname, treat the path separator as part of\n\t // the remaining pathname for properly continuing the match.\n\t remainingPathname = '/' + remainingPathname;\n\t }\n\t\n\t return {\n\t remainingPathname: remainingPathname,\n\t paramNames: paramNames,\n\t paramValues: match.slice(1).map(function (v) {\n\t return v && decodeURIComponent(v);\n\t })\n\t };\n\t}\n\t\n\tfunction getParamNames(pattern) {\n\t return compilePattern(pattern).paramNames;\n\t}\n\t\n\tfunction getParams(pattern, pathname) {\n\t var match = matchPattern(pattern, pathname);\n\t if (!match) {\n\t return null;\n\t }\n\t\n\t var paramNames = match.paramNames,\n\t paramValues = match.paramValues;\n\t\n\t var params = {};\n\t\n\t paramNames.forEach(function (paramName, index) {\n\t params[paramName] = paramValues[index];\n\t });\n\t\n\t return params;\n\t}\n\t\n\t/**\n\t * Returns a version of the given pattern with params interpolated. Throws\n\t * if there is a dynamic segment of the pattern for which there is no param.\n\t */\n\tfunction formatPattern(pattern, params) {\n\t params = params || {};\n\t\n\t var _compilePattern3 = compilePattern(pattern),\n\t tokens = _compilePattern3.tokens;\n\t\n\t var parenCount = 0,\n\t pathname = '',\n\t splatIndex = 0,\n\t parenHistory = [];\n\t\n\t var token = void 0,\n\t paramName = void 0,\n\t paramValue = void 0;\n\t for (var i = 0, len = tokens.length; i < len; ++i) {\n\t token = tokens[i];\n\t\n\t if (token === '*' || token === '**') {\n\t paramValue = Array.isArray(params.splat) ? params.splat[splatIndex++] : params.splat;\n\t\n\t !(paramValue != null || parenCount > 0) ? false ? (0, _invariant2.default)(false, 'Missing splat #%s for path \"%s\"', splatIndex, pattern) : (0, _invariant2.default)(false) : void 0;\n\t\n\t if (paramValue != null) pathname += encodeURI(paramValue);\n\t } else if (token === '(') {\n\t parenHistory[parenCount] = '';\n\t parenCount += 1;\n\t } else if (token === ')') {\n\t var parenText = parenHistory.pop();\n\t parenCount -= 1;\n\t\n\t if (parenCount) parenHistory[parenCount - 1] += parenText;else pathname += parenText;\n\t } else if (token.charAt(0) === ':') {\n\t paramName = token.substring(1);\n\t paramValue = params[paramName];\n\t\n\t !(paramValue != null || parenCount > 0) ? false ? (0, _invariant2.default)(false, 'Missing \"%s\" parameter for path \"%s\"', paramName, pattern) : (0, _invariant2.default)(false) : void 0;\n\t\n\t if (paramValue == null) {\n\t if (parenCount) {\n\t parenHistory[parenCount - 1] = '';\n\t\n\t var curTokenIdx = tokens.indexOf(token);\n\t var tokensSubset = tokens.slice(curTokenIdx, tokens.length);\n\t var nextParenIdx = -1;\n\t\n\t for (var _i = 0; _i < tokensSubset.length; _i++) {\n\t if (tokensSubset[_i] == ')') {\n\t nextParenIdx = _i;\n\t break;\n\t }\n\t }\n\t\n\t !(nextParenIdx > 0) ? false ? (0, _invariant2.default)(false, 'Path \"%s\" is missing end paren at segment \"%s\"', pattern, tokensSubset.join('')) : (0, _invariant2.default)(false) : void 0;\n\t\n\t // jump to ending paren\n\t i = curTokenIdx + nextParenIdx - 1;\n\t }\n\t } else if (parenCount) parenHistory[parenCount - 1] += encodeURIComponent(paramValue);else pathname += encodeURIComponent(paramValue);\n\t } else {\n\t if (parenCount) parenHistory[parenCount - 1] += token;else pathname += token;\n\t }\n\t }\n\t\n\t !(parenCount <= 0) ? false ? (0, _invariant2.default)(false, 'Path \"%s\" is missing end paren', pattern) : (0, _invariant2.default)(false) : void 0;\n\t\n\t return pathname.replace(/\\/+/g, '/');\n\t}\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.default = routerWarning;\n\texports._resetWarned = _resetWarned;\n\t\n\tvar _warning = __webpack_require__(25);\n\t\n\tvar _warning2 = _interopRequireDefault(_warning);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar warned = {};\n\t\n\tfunction routerWarning(falseToWarn, message) {\n\t // Only issue deprecation warnings once.\n\t if (message.indexOf('deprecated') !== -1) {\n\t if (warned[message]) {\n\t return;\n\t }\n\t\n\t warned[message] = true;\n\t }\n\t\n\t message = '[react-router] ' + message;\n\t\n\t for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t args[_key - 2] = arguments[_key];\n\t }\n\t\n\t _warning2.default.apply(undefined, [falseToWarn, message].concat(args));\n\t}\n\t\n\tfunction _resetWarned() {\n\t warned = {};\n\t}\n\n/***/ },\n/* 36 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar ReactChildren = __webpack_require__(413);\n\tvar ReactComponent = __webpack_require__(96);\n\tvar ReactPureComponent = __webpack_require__(418);\n\tvar ReactClass = __webpack_require__(414);\n\tvar ReactDOMFactories = __webpack_require__(415);\n\tvar ReactElement = __webpack_require__(37);\n\tvar ReactPropTypes = __webpack_require__(416);\n\tvar ReactVersion = __webpack_require__(419);\n\t\n\tvar onlyChild = __webpack_require__(420);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar createElement = ReactElement.createElement;\n\tvar createFactory = ReactElement.createFactory;\n\tvar cloneElement = ReactElement.cloneElement;\n\t\n\tif (false) {\n\t var ReactElementValidator = require('./ReactElementValidator');\n\t createElement = ReactElementValidator.createElement;\n\t createFactory = ReactElementValidator.createFactory;\n\t cloneElement = ReactElementValidator.cloneElement;\n\t}\n\t\n\tvar __spread = _assign;\n\t\n\tif (false) {\n\t var warned = false;\n\t __spread = function () {\n\t process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;\n\t warned = true;\n\t return _assign.apply(null, arguments);\n\t };\n\t}\n\t\n\tvar React = {\n\t\n\t // Modern\n\t\n\t Children: {\n\t map: ReactChildren.map,\n\t forEach: ReactChildren.forEach,\n\t count: ReactChildren.count,\n\t toArray: ReactChildren.toArray,\n\t only: onlyChild\n\t },\n\t\n\t Component: ReactComponent,\n\t PureComponent: ReactPureComponent,\n\t\n\t createElement: createElement,\n\t cloneElement: cloneElement,\n\t isValidElement: ReactElement.isValidElement,\n\t\n\t // Classic\n\t\n\t PropTypes: ReactPropTypes,\n\t createClass: ReactClass.createClass,\n\t createFactory: createFactory,\n\t createMixin: function (mixin) {\n\t // Currently a noop. Will be used to validate and trace mixins.\n\t return mixin;\n\t },\n\t\n\t // This looks DOM specific but these are actually isomorphic helpers\n\t // since they are just generating DOM strings.\n\t DOM: ReactDOMFactories,\n\t\n\t version: ReactVersion,\n\t\n\t // Deprecated hook for JSX spread, don't use this for anything.\n\t __spread: __spread\n\t};\n\t\n\tmodule.exports = React;\n\n/***/ },\n/* 37 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar ReactCurrentOwner = __webpack_require__(21);\n\t\n\tvar warning = __webpack_require__(4);\n\tvar canDefineProperty = __webpack_require__(159);\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\t\n\tvar REACT_ELEMENT_TYPE = __webpack_require__(157);\n\t\n\tvar RESERVED_PROPS = {\n\t key: true,\n\t ref: true,\n\t __self: true,\n\t __source: true\n\t};\n\t\n\tvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\t\n\tfunction hasValidRef(config) {\n\t if (false) {\n\t if (hasOwnProperty.call(config, 'ref')) {\n\t var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\t if (getter && getter.isReactWarning) {\n\t return false;\n\t }\n\t }\n\t }\n\t return config.ref !== undefined;\n\t}\n\t\n\tfunction hasValidKey(config) {\n\t if (false) {\n\t if (hasOwnProperty.call(config, 'key')) {\n\t var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\t if (getter && getter.isReactWarning) {\n\t return false;\n\t }\n\t }\n\t }\n\t return config.key !== undefined;\n\t}\n\t\n\tfunction defineKeyPropWarningGetter(props, displayName) {\n\t var warnAboutAccessingKey = function () {\n\t if (!specialPropKeyWarningShown) {\n\t specialPropKeyWarningShown = true;\n\t false ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n\t }\n\t };\n\t warnAboutAccessingKey.isReactWarning = true;\n\t Object.defineProperty(props, 'key', {\n\t get: warnAboutAccessingKey,\n\t configurable: true\n\t });\n\t}\n\t\n\tfunction defineRefPropWarningGetter(props, displayName) {\n\t var warnAboutAccessingRef = function () {\n\t if (!specialPropRefWarningShown) {\n\t specialPropRefWarningShown = true;\n\t false ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n\t }\n\t };\n\t warnAboutAccessingRef.isReactWarning = true;\n\t Object.defineProperty(props, 'ref', {\n\t get: warnAboutAccessingRef,\n\t configurable: true\n\t });\n\t}\n\t\n\t/**\n\t * Factory method to create a new React element. This no longer adheres to\n\t * the class pattern, so do not use new to call it. Also, no instanceof check\n\t * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n\t * if something is a React Element.\n\t *\n\t * @param {*} type\n\t * @param {*} key\n\t * @param {string|object} ref\n\t * @param {*} self A *temporary* helper to detect places where `this` is\n\t * different from the `owner` when React.createElement is called, so that we\n\t * can warn. We want to get rid of owner and replace string `ref`s with arrow\n\t * functions, and as long as `this` and owner are the same, there will be no\n\t * change in behavior.\n\t * @param {*} source An annotation object (added by a transpiler or otherwise)\n\t * indicating filename, line number, and/or other information.\n\t * @param {*} owner\n\t * @param {*} props\n\t * @internal\n\t */\n\tvar ReactElement = function (type, key, ref, self, source, owner, props) {\n\t var element = {\n\t // This tag allow us to uniquely identify this as a React Element\n\t $$typeof: REACT_ELEMENT_TYPE,\n\t\n\t // Built-in properties that belong on the element\n\t type: type,\n\t key: key,\n\t ref: ref,\n\t props: props,\n\t\n\t // Record the component responsible for creating this element.\n\t _owner: owner\n\t };\n\t\n\t if (false) {\n\t // The validation flag is currently mutative. We put it on\n\t // an external backing store so that we can freeze the whole object.\n\t // This can be replaced with a WeakMap once they are implemented in\n\t // commonly used development environments.\n\t element._store = {};\n\t\n\t // To make comparing ReactElements easier for testing purposes, we make\n\t // the validation flag non-enumerable (where possible, which should\n\t // include every environment we run tests in), so the test framework\n\t // ignores it.\n\t if (canDefineProperty) {\n\t Object.defineProperty(element._store, 'validated', {\n\t configurable: false,\n\t enumerable: false,\n\t writable: true,\n\t value: false\n\t });\n\t // self and source are DEV only properties.\n\t Object.defineProperty(element, '_self', {\n\t configurable: false,\n\t enumerable: false,\n\t writable: false,\n\t value: self\n\t });\n\t // Two elements created in two different places should be considered\n\t // equal for testing purposes and therefore we hide it from enumeration.\n\t Object.defineProperty(element, '_source', {\n\t configurable: false,\n\t enumerable: false,\n\t writable: false,\n\t value: source\n\t });\n\t } else {\n\t element._store.validated = false;\n\t element._self = self;\n\t element._source = source;\n\t }\n\t if (Object.freeze) {\n\t Object.freeze(element.props);\n\t Object.freeze(element);\n\t }\n\t }\n\t\n\t return element;\n\t};\n\t\n\t/**\n\t * Create and return a new ReactElement of the given type.\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n\t */\n\tReactElement.createElement = function (type, config, children) {\n\t var propName;\n\t\n\t // Reserved names are extracted\n\t var props = {};\n\t\n\t var key = null;\n\t var ref = null;\n\t var self = null;\n\t var source = null;\n\t\n\t if (config != null) {\n\t if (hasValidRef(config)) {\n\t ref = config.ref;\n\t }\n\t if (hasValidKey(config)) {\n\t key = '' + config.key;\n\t }\n\t\n\t self = config.__self === undefined ? null : config.__self;\n\t source = config.__source === undefined ? null : config.__source;\n\t // Remaining properties are added to a new props object\n\t for (propName in config) {\n\t if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n\t props[propName] = config[propName];\n\t }\n\t }\n\t }\n\t\n\t // Children can be more than one argument, and those are transferred onto\n\t // the newly allocated props object.\n\t var childrenLength = arguments.length - 2;\n\t if (childrenLength === 1) {\n\t props.children = children;\n\t } else if (childrenLength > 1) {\n\t var childArray = Array(childrenLength);\n\t for (var i = 0; i < childrenLength; i++) {\n\t childArray[i] = arguments[i + 2];\n\t }\n\t if (false) {\n\t if (Object.freeze) {\n\t Object.freeze(childArray);\n\t }\n\t }\n\t props.children = childArray;\n\t }\n\t\n\t // Resolve default props\n\t if (type && type.defaultProps) {\n\t var defaultProps = type.defaultProps;\n\t for (propName in defaultProps) {\n\t if (props[propName] === undefined) {\n\t props[propName] = defaultProps[propName];\n\t }\n\t }\n\t }\n\t if (false) {\n\t if (key || ref) {\n\t if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n\t var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\t if (key) {\n\t defineKeyPropWarningGetter(props, displayName);\n\t }\n\t if (ref) {\n\t defineRefPropWarningGetter(props, displayName);\n\t }\n\t }\n\t }\n\t }\n\t return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n\t};\n\t\n\t/**\n\t * Return a function that produces ReactElements of a given type.\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n\t */\n\tReactElement.createFactory = function (type) {\n\t var factory = ReactElement.createElement.bind(null, type);\n\t // Expose the type on the factory and the prototype so that it can be\n\t // easily accessed on elements. E.g. `.type === Foo`.\n\t // This should not be named `constructor` since this may not be the function\n\t // that created the element, and it may not even be a constructor.\n\t // Legacy hook TODO: Warn if this is accessed\n\t factory.type = type;\n\t return factory;\n\t};\n\t\n\tReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n\t var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\t\n\t return newElement;\n\t};\n\t\n\t/**\n\t * Clone and return a new ReactElement using element as the starting point.\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n\t */\n\tReactElement.cloneElement = function (element, config, children) {\n\t var propName;\n\t\n\t // Original props are copied\n\t var props = _assign({}, element.props);\n\t\n\t // Reserved names are extracted\n\t var key = element.key;\n\t var ref = element.ref;\n\t // Self is preserved since the owner is preserved.\n\t var self = element._self;\n\t // Source is preserved since cloneElement is unlikely to be targeted by a\n\t // transpiler, and the original source is probably a better indicator of the\n\t // true owner.\n\t var source = element._source;\n\t\n\t // Owner will be preserved, unless ref is overridden\n\t var owner = element._owner;\n\t\n\t if (config != null) {\n\t if (hasValidRef(config)) {\n\t // Silently steal the ref from the parent.\n\t ref = config.ref;\n\t owner = ReactCurrentOwner.current;\n\t }\n\t if (hasValidKey(config)) {\n\t key = '' + config.key;\n\t }\n\t\n\t // Remaining properties override existing props\n\t var defaultProps;\n\t if (element.type && element.type.defaultProps) {\n\t defaultProps = element.type.defaultProps;\n\t }\n\t for (propName in config) {\n\t if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n\t if (config[propName] === undefined && defaultProps !== undefined) {\n\t // Resolve default props\n\t props[propName] = defaultProps[propName];\n\t } else {\n\t props[propName] = config[propName];\n\t }\n\t }\n\t }\n\t }\n\t\n\t // Children can be more than one argument, and those are transferred onto\n\t // the newly allocated props object.\n\t var childrenLength = arguments.length - 2;\n\t if (childrenLength === 1) {\n\t props.children = children;\n\t } else if (childrenLength > 1) {\n\t var childArray = Array(childrenLength);\n\t for (var i = 0; i < childrenLength; i++) {\n\t childArray[i] = arguments[i + 2];\n\t }\n\t props.children = childArray;\n\t }\n\t\n\t return ReactElement(element.type, key, ref, self, source, owner, props);\n\t};\n\t\n\t/**\n\t * Verifies the object is a ReactElement.\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n\t * @param {?object} object\n\t * @return {boolean} True if `object` is a valid component.\n\t * @final\n\t */\n\tReactElement.isValidElement = function (object) {\n\t return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n\t};\n\t\n\tmodule.exports = ReactElement;\n\n/***/ },\n/* 38 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t'use strict';\n\t\n\t/**\n\t * WARNING: DO NOT manually require this module.\n\t * This is a replacement for `invariant(...)` used by the error code system\n\t * and will _only_ be required by the corresponding babel pass.\n\t * It always throws.\n\t */\n\t\n\tfunction reactProdInvariant(code) {\n\t var argCount = arguments.length - 1;\n\t\n\t var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\t\n\t for (var argIdx = 0; argIdx < argCount; argIdx++) {\n\t message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n\t }\n\t\n\t message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\t\n\t var error = new Error(message);\n\t error.name = 'Invariant Violation';\n\t error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\t\n\t throw error;\n\t}\n\t\n\tmodule.exports = reactProdInvariant;\n\n/***/ },\n/* 39 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyObject = {};\n\t\n\tif (false) {\n\t Object.freeze(emptyObject);\n\t}\n\t\n\tmodule.exports = emptyObject;\n\n/***/ },\n/* 40 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar EventPluginRegistry = __webpack_require__(74);\n\tvar EventPluginUtils = __webpack_require__(75);\n\tvar ReactErrorUtils = __webpack_require__(79);\n\t\n\tvar accumulateInto = __webpack_require__(130);\n\tvar forEachAccumulated = __webpack_require__(131);\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * Internal store for event listeners\n\t */\n\tvar listenerBank = {};\n\t\n\t/**\n\t * Internal queue of events that have accumulated their dispatches and are\n\t * waiting to have their dispatches executed.\n\t */\n\tvar eventQueue = null;\n\t\n\t/**\n\t * Dispatches an event and releases it back into the pool, unless persistent.\n\t *\n\t * @param {?object} event Synthetic event to be dispatched.\n\t * @param {boolean} simulated If the event is simulated (changes exn behavior)\n\t * @private\n\t */\n\tvar executeDispatchesAndRelease = function (event, simulated) {\n\t if (event) {\n\t EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\t\n\t if (!event.isPersistent()) {\n\t event.constructor.release(event);\n\t }\n\t }\n\t};\n\tvar executeDispatchesAndReleaseSimulated = function (e) {\n\t return executeDispatchesAndRelease(e, true);\n\t};\n\tvar executeDispatchesAndReleaseTopLevel = function (e) {\n\t return executeDispatchesAndRelease(e, false);\n\t};\n\t\n\tvar getDictionaryKey = function (inst) {\n\t // Prevents V8 performance issue:\n\t // https://github.com/facebook/react/pull/7232\n\t return '.' + inst._rootNodeID;\n\t};\n\t\n\tfunction isInteractive(tag) {\n\t return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n\t}\n\t\n\tfunction shouldPreventMouseEvent(name, type, props) {\n\t switch (name) {\n\t case 'onClick':\n\t case 'onClickCapture':\n\t case 'onDoubleClick':\n\t case 'onDoubleClickCapture':\n\t case 'onMouseDown':\n\t case 'onMouseDownCapture':\n\t case 'onMouseMove':\n\t case 'onMouseMoveCapture':\n\t case 'onMouseUp':\n\t case 'onMouseUpCapture':\n\t return !!(props.disabled && isInteractive(type));\n\t default:\n\t return false;\n\t }\n\t}\n\t\n\t/**\n\t * This is a unified interface for event plugins to be installed and configured.\n\t *\n\t * Event plugins can implement the following properties:\n\t *\n\t * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n\t * Required. When a top-level event is fired, this method is expected to\n\t * extract synthetic events that will in turn be queued and dispatched.\n\t *\n\t * `eventTypes` {object}\n\t * Optional, plugins that fire events must publish a mapping of registration\n\t * names that are used to register listeners. Values of this mapping must\n\t * be objects that contain `registrationName` or `phasedRegistrationNames`.\n\t *\n\t * `executeDispatch` {function(object, function, string)}\n\t * Optional, allows plugins to override how an event gets dispatched. By\n\t * default, the listener is simply invoked.\n\t *\n\t * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n\t *\n\t * @public\n\t */\n\tvar EventPluginHub = {\n\t\n\t /**\n\t * Methods for injecting dependencies.\n\t */\n\t injection: {\n\t\n\t /**\n\t * @param {array} InjectedEventPluginOrder\n\t * @public\n\t */\n\t injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\t\n\t /**\n\t * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n\t */\n\t injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\t\n\t },\n\t\n\t /**\n\t * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n\t *\n\t * @param {object} inst The instance, which is the source of events.\n\t * @param {string} registrationName Name of listener (e.g. `onClick`).\n\t * @param {function} listener The callback to store.\n\t */\n\t putListener: function (inst, registrationName, listener) {\n\t !(typeof listener === 'function') ? false ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;\n\t\n\t var key = getDictionaryKey(inst);\n\t var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n\t bankForRegistrationName[key] = listener;\n\t\n\t var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n\t if (PluginModule && PluginModule.didPutListener) {\n\t PluginModule.didPutListener(inst, registrationName, listener);\n\t }\n\t },\n\t\n\t /**\n\t * @param {object} inst The instance, which is the source of events.\n\t * @param {string} registrationName Name of listener (e.g. `onClick`).\n\t * @return {?function} The stored callback.\n\t */\n\t getListener: function (inst, registrationName) {\n\t // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n\t // live here; needs to be moved to a better place soon\n\t var bankForRegistrationName = listenerBank[registrationName];\n\t if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n\t return null;\n\t }\n\t var key = getDictionaryKey(inst);\n\t return bankForRegistrationName && bankForRegistrationName[key];\n\t },\n\t\n\t /**\n\t * Deletes a listener from the registration bank.\n\t *\n\t * @param {object} inst The instance, which is the source of events.\n\t * @param {string} registrationName Name of listener (e.g. `onClick`).\n\t */\n\t deleteListener: function (inst, registrationName) {\n\t var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n\t if (PluginModule && PluginModule.willDeleteListener) {\n\t PluginModule.willDeleteListener(inst, registrationName);\n\t }\n\t\n\t var bankForRegistrationName = listenerBank[registrationName];\n\t // TODO: This should never be null -- when is it?\n\t if (bankForRegistrationName) {\n\t var key = getDictionaryKey(inst);\n\t delete bankForRegistrationName[key];\n\t }\n\t },\n\t\n\t /**\n\t * Deletes all listeners for the DOM element with the supplied ID.\n\t *\n\t * @param {object} inst The instance, which is the source of events.\n\t */\n\t deleteAllListeners: function (inst) {\n\t var key = getDictionaryKey(inst);\n\t for (var registrationName in listenerBank) {\n\t if (!listenerBank.hasOwnProperty(registrationName)) {\n\t continue;\n\t }\n\t\n\t if (!listenerBank[registrationName][key]) {\n\t continue;\n\t }\n\t\n\t var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n\t if (PluginModule && PluginModule.willDeleteListener) {\n\t PluginModule.willDeleteListener(inst, registrationName);\n\t }\n\t\n\t delete listenerBank[registrationName][key];\n\t }\n\t },\n\t\n\t /**\n\t * Allows registered plugins an opportunity to extract events from top-level\n\t * native browser events.\n\t *\n\t * @return {*} An accumulation of synthetic events.\n\t * @internal\n\t */\n\t extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n\t var events;\n\t var plugins = EventPluginRegistry.plugins;\n\t for (var i = 0; i < plugins.length; i++) {\n\t // Not every plugin in the ordering may be loaded at runtime.\n\t var possiblePlugin = plugins[i];\n\t if (possiblePlugin) {\n\t var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n\t if (extractedEvents) {\n\t events = accumulateInto(events, extractedEvents);\n\t }\n\t }\n\t }\n\t return events;\n\t },\n\t\n\t /**\n\t * Enqueues a synthetic event that should be dispatched when\n\t * `processEventQueue` is invoked.\n\t *\n\t * @param {*} events An accumulation of synthetic events.\n\t * @internal\n\t */\n\t enqueueEvents: function (events) {\n\t if (events) {\n\t eventQueue = accumulateInto(eventQueue, events);\n\t }\n\t },\n\t\n\t /**\n\t * Dispatches all synthetic events on the event queue.\n\t *\n\t * @internal\n\t */\n\t processEventQueue: function (simulated) {\n\t // Set `eventQueue` to null before processing it so that we can tell if more\n\t // events get enqueued while processing.\n\t var processingEventQueue = eventQueue;\n\t eventQueue = null;\n\t if (simulated) {\n\t forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n\t } else {\n\t forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n\t }\n\t !!eventQueue ? false ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;\n\t // This would be a good time to rethrow if any of the event handlers threw.\n\t ReactErrorUtils.rethrowCaughtError();\n\t },\n\t\n\t /**\n\t * These are needed for tests only. Do not use!\n\t */\n\t __purge: function () {\n\t listenerBank = {};\n\t },\n\t\n\t __getListenerBank: function () {\n\t return listenerBank;\n\t }\n\t\n\t};\n\t\n\tmodule.exports = EventPluginHub;\n\n/***/ },\n/* 41 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar EventPluginHub = __webpack_require__(40);\n\tvar EventPluginUtils = __webpack_require__(75);\n\t\n\tvar accumulateInto = __webpack_require__(130);\n\tvar forEachAccumulated = __webpack_require__(131);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar getListener = EventPluginHub.getListener;\n\t\n\t/**\n\t * Some event types have a notion of different registration names for different\n\t * \"phases\" of propagation. This finds listeners by a given phase.\n\t */\n\tfunction listenerAtPhase(inst, event, propagationPhase) {\n\t var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n\t return getListener(inst, registrationName);\n\t}\n\t\n\t/**\n\t * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n\t * here, allows us to not have to bind or create functions for each event.\n\t * Mutating the event's members allows us to not have to create a wrapping\n\t * \"dispatch\" object that pairs the event with the listener.\n\t */\n\tfunction accumulateDirectionalDispatches(inst, phase, event) {\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n\t }\n\t var listener = listenerAtPhase(inst, event, phase);\n\t if (listener) {\n\t event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n\t event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n\t }\n\t}\n\t\n\t/**\n\t * Collect dispatches (must be entirely collected before dispatching - see unit\n\t * tests). Lazily allocate the array to conserve memory. We must loop through\n\t * each event and perform the traversal for each one. We cannot perform a\n\t * single traversal for the entire collection of events because each event may\n\t * have a different target.\n\t */\n\tfunction accumulateTwoPhaseDispatchesSingle(event) {\n\t if (event && event.dispatchConfig.phasedRegistrationNames) {\n\t EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n\t }\n\t}\n\t\n\t/**\n\t * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n\t */\n\tfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n\t if (event && event.dispatchConfig.phasedRegistrationNames) {\n\t var targetInst = event._targetInst;\n\t var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n\t EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n\t }\n\t}\n\t\n\t/**\n\t * Accumulates without regard to direction, does not look for phased\n\t * registration names. Same as `accumulateDirectDispatchesSingle` but without\n\t * requiring that the `dispatchMarker` be the same as the dispatched ID.\n\t */\n\tfunction accumulateDispatches(inst, ignoredDirection, event) {\n\t if (event && event.dispatchConfig.registrationName) {\n\t var registrationName = event.dispatchConfig.registrationName;\n\t var listener = getListener(inst, registrationName);\n\t if (listener) {\n\t event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n\t event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Accumulates dispatches on an `SyntheticEvent`, but only for the\n\t * `dispatchMarker`.\n\t * @param {SyntheticEvent} event\n\t */\n\tfunction accumulateDirectDispatchesSingle(event) {\n\t if (event && event.dispatchConfig.registrationName) {\n\t accumulateDispatches(event._targetInst, null, event);\n\t }\n\t}\n\t\n\tfunction accumulateTwoPhaseDispatches(events) {\n\t forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n\t}\n\t\n\tfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n\t forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n\t}\n\t\n\tfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n\t EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n\t}\n\t\n\tfunction accumulateDirectDispatches(events) {\n\t forEachAccumulated(events, accumulateDirectDispatchesSingle);\n\t}\n\t\n\t/**\n\t * A small set of propagation patterns, each of which will accept a small amount\n\t * of information, and generate a set of \"dispatch ready event objects\" - which\n\t * are sets of events that have already been annotated with a set of dispatched\n\t * listener functions/ids. The API is designed this way to discourage these\n\t * propagation strategies from actually executing the dispatches, since we\n\t * always want to collect the entire set of dispatches before executing event a\n\t * single one.\n\t *\n\t * @constructor EventPropagators\n\t */\n\tvar EventPropagators = {\n\t accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n\t accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n\t accumulateDirectDispatches: accumulateDirectDispatches,\n\t accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n\t};\n\t\n\tmodule.exports = EventPropagators;\n\n/***/ },\n/* 42 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * `ReactInstanceMap` maintains a mapping from a public facing stateful\n\t * instance (key) and the internal representation (value). This allows public\n\t * methods to accept the user facing instance as an argument and map them back\n\t * to internal methods.\n\t */\n\t\n\t// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\t\n\tvar ReactInstanceMap = {\n\t\n\t /**\n\t * This API should be called `delete` but we'd have to make sure to always\n\t * transform these to strings for IE support. When this transform is fully\n\t * supported we can rename it.\n\t */\n\t remove: function (key) {\n\t key._reactInternalInstance = undefined;\n\t },\n\t\n\t get: function (key) {\n\t return key._reactInternalInstance;\n\t },\n\t\n\t has: function (key) {\n\t return key._reactInternalInstance !== undefined;\n\t },\n\t\n\t set: function (key, value) {\n\t key._reactInternalInstance = value;\n\t }\n\t\n\t};\n\t\n\tmodule.exports = ReactInstanceMap;\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar SyntheticEvent = __webpack_require__(20);\n\t\n\tvar getEventTarget = __webpack_require__(84);\n\t\n\t/**\n\t * @interface UIEvent\n\t * @see http://www.w3.org/TR/DOM-Level-3-Events/\n\t */\n\tvar UIEventInterface = {\n\t view: function (event) {\n\t if (event.view) {\n\t return event.view;\n\t }\n\t\n\t var target = getEventTarget(event);\n\t if (target.window === target) {\n\t // target is a window object\n\t return target;\n\t }\n\t\n\t var doc = target.ownerDocument;\n\t // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n\t if (doc) {\n\t return doc.defaultView || doc.parentWindow;\n\t } else {\n\t return window;\n\t }\n\t },\n\t detail: function (event) {\n\t return event.detail || 0;\n\t }\n\t};\n\t\n\t/**\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {string} dispatchMarker Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @extends {SyntheticEvent}\n\t */\n\tfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n\t return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n\t}\n\t\n\tSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\t\n\tmodule.exports = SyntheticUIEvent;\n\n/***/ },\n/* 44 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t className: _react.PropTypes.string,\n\t name: _react.PropTypes.string.isRequired\n\t};\n\t\n\tvar Icon = function Icon(props) {\n\t var className = props.className,\n\t name = props.name,\n\t otherProps = _objectWithoutProperties(props, ['className', 'name']);\n\t\n\t var classes = (0, _classnames2.default)('material-icons', className);\n\t\n\t return _react2.default.createElement(\n\t 'i',\n\t _extends({ className: classes }, otherProps),\n\t name\n\t );\n\t};\n\t\n\tIcon.propTypes = propTypes;\n\t\n\texports.default = Icon;\n\n/***/ },\n/* 45 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.routes = exports.route = exports.components = exports.component = exports.history = undefined;\n\texports.falsy = falsy;\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar func = _react.PropTypes.func,\n\t object = _react.PropTypes.object,\n\t arrayOf = _react.PropTypes.arrayOf,\n\t oneOfType = _react.PropTypes.oneOfType,\n\t element = _react.PropTypes.element,\n\t shape = _react.PropTypes.shape,\n\t string = _react.PropTypes.string;\n\tfunction falsy(props, propName, componentName) {\n\t if (props[propName]) return new Error('<' + componentName + '> should not have a \"' + propName + '\" prop');\n\t}\n\t\n\tvar history = exports.history = shape({\n\t listen: func.isRequired,\n\t push: func.isRequired,\n\t replace: func.isRequired,\n\t go: func.isRequired,\n\t goBack: func.isRequired,\n\t goForward: func.isRequired\n\t});\n\t\n\tvar component = exports.component = oneOfType([func, string]);\n\tvar components = exports.components = oneOfType([component, object]);\n\tvar route = exports.route = oneOfType([object, element]);\n\tvar routes = exports.routes = oneOfType([route, arrayOf(route)]);\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.createMapper = createMapper;\n\texports.createActions = createActions;\n\t\n\tvar _inputActions = __webpack_require__(107);\n\t\n\tfunction getId(id, ownProps) {\n\t if (typeof id === 'function') {\n\t return id(ownProps); // should return array...\n\t }\n\t return [id];\n\t}\n\t\n\tfunction createMapper(_ref) {\n\t var id = _ref.id,\n\t getDefault = _ref.getDefault,\n\t _ref$prepare = _ref.prepare,\n\t prepare = _ref$prepare === undefined ? function (v) {\n\t return v;\n\t } : _ref$prepare;\n\t\n\t return function (state, ownProps) {\n\t var input = void 0;\n\t var initCallRequired = false;\n\t var scope = getId(id, ownProps);\n\t if (state.input.hasIn(scope)) {\n\t input = state.input.getIn(scope).toJS();\n\t } else {\n\t initCallRequired = true;\n\t input = getDefault ? getDefault(state, ownProps) : {};\n\t }\n\t\n\t return prepare({\n\t initCallRequired: initCallRequired,\n\t input: input\n\t }, state, ownProps);\n\t };\n\t}\n\t\n\tfunction createActions(_ref2) {\n\t var id = _ref2.id,\n\t _ref2$prepare = _ref2.prepare,\n\t prepare = _ref2$prepare === undefined ? function (v) {\n\t return v;\n\t } : _ref2$prepare;\n\t\n\t return function (dispatch, ownProps) {\n\t return prepare({\n\t clear: function clear() {\n\t dispatch((0, _inputActions.createClear)({ id: getId(id, ownProps) }));\n\t },\n\t init: function init(value) {\n\t dispatch((0, _inputActions.createInit)({ id: getId(id, ownProps), value: value }));\n\t },\n\t setValue: function setValue(key, value) {\n\t dispatch((0, _inputActions.createSet)({ id: getId(id, ownProps), key: key, value: value }));\n\t },\n\t pushToList: function pushToList(key, value) {\n\t dispatch((0, _inputActions.createPush)({ id: getId(id, ownProps), key: key, value: value }));\n\t },\n\t removeFromList: function removeFromList(key, index) {\n\t dispatch((0, _inputActions.createPop)({ id: getId(id, ownProps), key: key, index: index }));\n\t },\n\t updateInList: function updateInList(key, index, newValue) {\n\t var merge = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\t\n\t dispatch((0, _inputActions.createUp)({ id: getId(id, ownProps), key: key, index: index, newValue: newValue, merge: merge }));\n\t },\n\t incValue: function incValue(key) {\n\t dispatch((0, _inputActions.createInc)({ id: getId(id, ownProps), key: key }));\n\t }\n\t }, dispatch, ownProps);\n\t };\n\t}\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.RECEIVE_APPLICATION = exports.ERROR_UPDATING_APPLICATION_DATA = exports.ERROR_RECEIVE_ALL_APPLICATIONS = exports.RECEIVE_ALL_APPLICATIONS = undefined;\n\texports.fetchAll = fetchAll;\n\texports.storeApplicationMetaData = storeApplicationMetaData;\n\texports.fetchApplication = fetchApplication;\n\t\n\tvar _applicationsApi = __webpack_require__(104);\n\t\n\tvar _applicationsApi2 = _interopRequireDefault(_applicationsApi);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar RECEIVE_ALL_APPLICATIONS = exports.RECEIVE_ALL_APPLICATIONS = 'RECEIVE_ALL_APPLICATIONS';\n\tvar ERROR_RECEIVE_ALL_APPLICATIONS = exports.ERROR_RECEIVE_ALL_APPLICATIONS = 'ERROR_RECEIVE_ALL_APPLICATIONS';\n\tvar ERROR_UPDATING_APPLICATION_DATA = exports.ERROR_UPDATING_APPLICATION_DATA = 'ERROR_UPDATING_APPLICATION_DATA';\n\t\n\tvar RECEIVE_APPLICATION = exports.RECEIVE_APPLICATION = 'RECEIVE_APPLICATION';\n\t\n\tvar recieveAllApplications = function recieveAllApplications(json) {\n\t return {\n\t type: RECEIVE_ALL_APPLICATIONS,\n\t value: json\n\t };\n\t};\n\t\n\tvar recieveApplication = function recieveApplication(json) {\n\t return {\n\t type: RECEIVE_APPLICATION,\n\t value: json\n\t };\n\t};\n\t\n\tvar errorReceiveApplications = function errorReceiveApplications(statusCode) {\n\t var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ERROR_RECEIVE_ALL_APPLICATIONS;\n\t return {\n\t type: type,\n\t statusCode: statusCode\n\t };\n\t};\n\t\n\tfunction fetchAll() {\n\t return function (dispatch) {\n\t return _applicationsApi2.default.fetchAll().then(function (json) {\n\t return dispatch(recieveAllApplications(json));\n\t }).catch(function (error) {\n\t return dispatch(errorReceiveApplications(error));\n\t });\n\t };\n\t}\n\t\n\tfunction storeApplicationMetaData(appName, key, value) {\n\t return function (dispatch) {\n\t return _applicationsApi2.default.storeApplicationMetaData(appName, key, value).catch(function (error) {\n\t return dispatch(errorReceiveApplications(error, ERROR_UPDATING_APPLICATION_DATA));\n\t });\n\t };\n\t}\n\t\n\tfunction fetchApplication(appName) {\n\t return function (dispatch) {\n\t return _applicationsApi2.default.fetchApplication(appName).then(function (json) {\n\t return dispatch(recieveApplication(json));\n\t }).catch(function (error) {\n\t return dispatch(errorReceiveApplications(error));\n\t });\n\t };\n\t}\n\n/***/ },\n/* 48 */\n/***/ function(module, exports) {\n\n\tmodule.exports = clamp\n\t\n\tfunction clamp(value, min, max) {\n\t return min < max\n\t ? (value < min ? min : value > max ? max : value)\n\t : (value < max ? max : value > min ? min : value)\n\t}\n\n\n/***/ },\n/* 49 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t/**\n\t * Indicates that navigation was caused by a call to history.push.\n\t */\n\tvar PUSH = exports.PUSH = 'PUSH';\n\t\n\t/**\n\t * Indicates that navigation was caused by a call to history.replace.\n\t */\n\tvar REPLACE = exports.REPLACE = 'REPLACE';\n\t\n\t/**\n\t * Indicates that navigation was caused by some other action such\n\t * as using a browser's back/forward buttons and/or manually manipulating\n\t * the URL in a browser's location bar. This is the default.\n\t *\n\t * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate\n\t * for more information.\n\t */\n\tvar POP = exports.POP = 'POP';\n\n/***/ },\n/* 50 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\tvar addEventListener = exports.addEventListener = function addEventListener(node, event, listener) {\n\t return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n\t};\n\t\n\tvar removeEventListener = exports.removeEventListener = function removeEventListener(node, event, listener) {\n\t return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n\t};\n\t\n\t/**\n\t * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n\t *\n\t * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n\t * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n\t * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n\t */\n\tvar supportsHistory = exports.supportsHistory = function supportsHistory() {\n\t var ua = window.navigator.userAgent;\n\t\n\t if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\t\n\t return window.history && 'pushState' in window.history;\n\t};\n\t\n\t/**\n\t * Returns false if using go(n) with hash history causes a full page reload.\n\t */\n\tvar supportsGoWithoutReloadUsingHash = exports.supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n\t return window.navigator.userAgent.indexOf('Firefox') === -1;\n\t};\n\t\n\t/**\n\t * Returns true if browser fires popstate on hash change.\n\t * IE10 and IE11 do not.\n\t */\n\tvar supportsPopstateOnHashchange = exports.supportsPopstateOnHashchange = function supportsPopstateOnHashchange() {\n\t return window.navigator.userAgent.indexOf('Trident') === -1;\n\t};\n\n/***/ },\n/* 51 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar EventPluginRegistry = __webpack_require__(74);\n\tvar ReactEventEmitterMixin = __webpack_require__(303);\n\tvar ViewportMetrics = __webpack_require__(129);\n\t\n\tvar getVendorPrefixedEventName = __webpack_require__(336);\n\tvar isEventSupported = __webpack_require__(85);\n\t\n\t/**\n\t * Summary of `ReactBrowserEventEmitter` event handling:\n\t *\n\t * - Top-level delegation is used to trap most native browser events. This\n\t * may only occur in the main thread and is the responsibility of\n\t * ReactEventListener, which is injected and can therefore support pluggable\n\t * event sources. This is the only work that occurs in the main thread.\n\t *\n\t * - We normalize and de-duplicate events to account for browser quirks. This\n\t * may be done in the worker thread.\n\t *\n\t * - Forward these native events (with the associated top-level type used to\n\t * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n\t * to extract any synthetic events.\n\t *\n\t * - The `EventPluginHub` will then process each event by annotating them with\n\t * \"dispatches\", a sequence of listeners and IDs that care about that event.\n\t *\n\t * - The `EventPluginHub` then dispatches the events.\n\t *\n\t * Overview of React and the event system:\n\t *\n\t * +------------+ .\n\t * | DOM | .\n\t * +------------+ .\n\t * | .\n\t * v .\n\t * +------------+ .\n\t * | ReactEvent | .\n\t * | Listener | .\n\t * +------------+ . +-----------+\n\t * | . +--------+|SimpleEvent|\n\t * | . | |Plugin |\n\t * +-----|------+ . v +-----------+\n\t * | | | . +--------------+ +------------+\n\t * | +-----------.--->|EventPluginHub| | Event |\n\t * | | . | | +-----------+ | Propagators|\n\t * | ReactEvent | . | | |TapEvent | |------------|\n\t * | Emitter | . | |<---+|Plugin | |other plugin|\n\t * | | . | | +-----------+ | utilities |\n\t * | +-----------.--->| | +------------+\n\t * | | | . +--------------+\n\t * +-----|------+ . ^ +-----------+\n\t * | . | |Enter/Leave|\n\t * + . +-------+|Plugin |\n\t * +-------------+ . +-----------+\n\t * | application | .\n\t * |-------------| .\n\t * | | .\n\t * | | .\n\t * +-------------+ .\n\t * .\n\t * React Core . General Purpose Event Plugin System\n\t */\n\t\n\tvar hasEventPageXY;\n\tvar alreadyListeningTo = {};\n\tvar isMonitoringScrollValue = false;\n\tvar reactTopListenersCounter = 0;\n\t\n\t// For events like 'submit' which don't consistently bubble (which we trap at a\n\t// lower node than `document`), binding at `document` would cause duplicate\n\t// events so we don't include them here\n\tvar topEventMapping = {\n\t topAbort: 'abort',\n\t topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n\t topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n\t topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n\t topBlur: 'blur',\n\t topCanPlay: 'canplay',\n\t topCanPlayThrough: 'canplaythrough',\n\t topChange: 'change',\n\t topClick: 'click',\n\t topCompositionEnd: 'compositionend',\n\t topCompositionStart: 'compositionstart',\n\t topCompositionUpdate: 'compositionupdate',\n\t topContextMenu: 'contextmenu',\n\t topCopy: 'copy',\n\t topCut: 'cut',\n\t topDoubleClick: 'dblclick',\n\t topDrag: 'drag',\n\t topDragEnd: 'dragend',\n\t topDragEnter: 'dragenter',\n\t topDragExit: 'dragexit',\n\t topDragLeave: 'dragleave',\n\t topDragOver: 'dragover',\n\t topDragStart: 'dragstart',\n\t topDrop: 'drop',\n\t topDurationChange: 'durationchange',\n\t topEmptied: 'emptied',\n\t topEncrypted: 'encrypted',\n\t topEnded: 'ended',\n\t topError: 'error',\n\t topFocus: 'focus',\n\t topInput: 'input',\n\t topKeyDown: 'keydown',\n\t topKeyPress: 'keypress',\n\t topKeyUp: 'keyup',\n\t topLoadedData: 'loadeddata',\n\t topLoadedMetadata: 'loadedmetadata',\n\t topLoadStart: 'loadstart',\n\t topMouseDown: 'mousedown',\n\t topMouseMove: 'mousemove',\n\t topMouseOut: 'mouseout',\n\t topMouseOver: 'mouseover',\n\t topMouseUp: 'mouseup',\n\t topPaste: 'paste',\n\t topPause: 'pause',\n\t topPlay: 'play',\n\t topPlaying: 'playing',\n\t topProgress: 'progress',\n\t topRateChange: 'ratechange',\n\t topScroll: 'scroll',\n\t topSeeked: 'seeked',\n\t topSeeking: 'seeking',\n\t topSelectionChange: 'selectionchange',\n\t topStalled: 'stalled',\n\t topSuspend: 'suspend',\n\t topTextInput: 'textInput',\n\t topTimeUpdate: 'timeupdate',\n\t topTouchCancel: 'touchcancel',\n\t topTouchEnd: 'touchend',\n\t topTouchMove: 'touchmove',\n\t topTouchStart: 'touchstart',\n\t topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n\t topVolumeChange: 'volumechange',\n\t topWaiting: 'waiting',\n\t topWheel: 'wheel'\n\t};\n\t\n\t/**\n\t * To ensure no conflicts with other potential React instances on the page\n\t */\n\tvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\t\n\tfunction getListeningForDocument(mountAt) {\n\t // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n\t // directly.\n\t if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n\t mountAt[topListenersIDKey] = reactTopListenersCounter++;\n\t alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n\t }\n\t return alreadyListeningTo[mountAt[topListenersIDKey]];\n\t}\n\t\n\t/**\n\t * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n\t * example:\n\t *\n\t * EventPluginHub.putListener('myID', 'onClick', myFunction);\n\t *\n\t * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n\t *\n\t * @internal\n\t */\n\tvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n\t\n\t /**\n\t * Injectable event backend\n\t */\n\t ReactEventListener: null,\n\t\n\t injection: {\n\t /**\n\t * @param {object} ReactEventListener\n\t */\n\t injectReactEventListener: function (ReactEventListener) {\n\t ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n\t ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n\t }\n\t },\n\t\n\t /**\n\t * Sets whether or not any created callbacks should be enabled.\n\t *\n\t * @param {boolean} enabled True if callbacks should be enabled.\n\t */\n\t setEnabled: function (enabled) {\n\t if (ReactBrowserEventEmitter.ReactEventListener) {\n\t ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n\t }\n\t },\n\t\n\t /**\n\t * @return {boolean} True if callbacks are enabled.\n\t */\n\t isEnabled: function () {\n\t return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n\t },\n\t\n\t /**\n\t * We listen for bubbled touch events on the document object.\n\t *\n\t * Firefox v8.01 (and possibly others) exhibited strange behavior when\n\t * mounting `onmousemove` events at some node that was not the document\n\t * element. The symptoms were that if your mouse is not moving over something\n\t * contained within that mount point (for example on the background) the\n\t * top-level listeners for `onmousemove` won't be called. However, if you\n\t * register the `mousemove` on the document object, then it will of course\n\t * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n\t * top-level listeners to the document object only, at least for these\n\t * movement types of events and possibly all events.\n\t *\n\t * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n\t *\n\t * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n\t * they bubble to document.\n\t *\n\t * @param {string} registrationName Name of listener (e.g. `onClick`).\n\t * @param {object} contentDocumentHandle Document which owns the container\n\t */\n\t listenTo: function (registrationName, contentDocumentHandle) {\n\t var mountAt = contentDocumentHandle;\n\t var isListening = getListeningForDocument(mountAt);\n\t var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\t\n\t for (var i = 0; i < dependencies.length; i++) {\n\t var dependency = dependencies[i];\n\t if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n\t if (dependency === 'topWheel') {\n\t if (isEventSupported('wheel')) {\n\t ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);\n\t } else if (isEventSupported('mousewheel')) {\n\t ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n\t } else {\n\t // Firefox needs to capture a different mouse scroll event.\n\t // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n\t ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n\t }\n\t } else if (dependency === 'topScroll') {\n\t\n\t if (isEventSupported('scroll', true)) {\n\t ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);\n\t } else {\n\t ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n\t }\n\t } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n\t\n\t if (isEventSupported('focus', true)) {\n\t ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);\n\t ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);\n\t } else if (isEventSupported('focusin')) {\n\t // IE has `focusin` and `focusout` events which bubble.\n\t // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n\t ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);\n\t ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);\n\t }\n\t\n\t // to make sure blur and focus event listeners are only attached once\n\t isListening.topBlur = true;\n\t isListening.topFocus = true;\n\t } else if (topEventMapping.hasOwnProperty(dependency)) {\n\t ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n\t }\n\t\n\t isListening[dependency] = true;\n\t }\n\t }\n\t },\n\t\n\t trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {\n\t return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n\t },\n\t\n\t trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {\n\t return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n\t },\n\t\n\t /**\n\t * Protect against document.createEvent() returning null\n\t * Some popup blocker extensions appear to do this:\n\t * https://github.com/facebook/react/issues/6887\n\t */\n\t supportsEventPageXY: function () {\n\t if (!document.createEvent) {\n\t return false;\n\t }\n\t var ev = document.createEvent('MouseEvent');\n\t return ev != null && 'pageX' in ev;\n\t },\n\t\n\t /**\n\t * Listens to window scroll and resize events. We cache scroll values so that\n\t * application code can access them without triggering reflows.\n\t *\n\t * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n\t * pageX/pageY isn't supported (legacy browsers).\n\t *\n\t * NOTE: Scroll events do not bubble.\n\t *\n\t * @see http://www.quirksmode.org/dom/events/scroll.html\n\t */\n\t ensureScrollValueMonitoring: function () {\n\t if (hasEventPageXY === undefined) {\n\t hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n\t }\n\t if (!hasEventPageXY && !isMonitoringScrollValue) {\n\t var refresh = ViewportMetrics.refreshScrollValues;\n\t ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n\t isMonitoringScrollValue = true;\n\t }\n\t }\n\t\n\t});\n\t\n\tmodule.exports = ReactBrowserEventEmitter;\n\n/***/ },\n/* 52 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar SyntheticUIEvent = __webpack_require__(43);\n\tvar ViewportMetrics = __webpack_require__(129);\n\t\n\tvar getEventModifierState = __webpack_require__(83);\n\t\n\t/**\n\t * @interface MouseEvent\n\t * @see http://www.w3.org/TR/DOM-Level-3-Events/\n\t */\n\tvar MouseEventInterface = {\n\t screenX: null,\n\t screenY: null,\n\t clientX: null,\n\t clientY: null,\n\t ctrlKey: null,\n\t shiftKey: null,\n\t altKey: null,\n\t metaKey: null,\n\t getModifierState: getEventModifierState,\n\t button: function (event) {\n\t // Webkit, Firefox, IE9+\n\t // which: 1 2 3\n\t // button: 0 1 2 (standard)\n\t var button = event.button;\n\t if ('which' in event) {\n\t return button;\n\t }\n\t // IE<9\n\t // which: undefined\n\t // button: 0 0 0\n\t // button: 1 4 2 (onmouseup)\n\t return button === 2 ? 2 : button === 4 ? 1 : 0;\n\t },\n\t buttons: null,\n\t relatedTarget: function (event) {\n\t return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n\t },\n\t // \"Proprietary\" Interface.\n\t pageX: function (event) {\n\t return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n\t },\n\t pageY: function (event) {\n\t return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n\t }\n\t};\n\t\n\t/**\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {string} dispatchMarker Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @extends {SyntheticUIEvent}\n\t */\n\tfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n\t return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n\t}\n\t\n\tSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\t\n\tmodule.exports = SyntheticMouseEvent;\n\n/***/ },\n/* 53 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\tvar OBSERVED_ERROR = {};\n\t\n\t/**\n\t * `Transaction` creates a black box that is able to wrap any method such that\n\t * certain invariants are maintained before and after the method is invoked\n\t * (Even if an exception is thrown while invoking the wrapped method). Whoever\n\t * instantiates a transaction can provide enforcers of the invariants at\n\t * creation time. The `Transaction` class itself will supply one additional\n\t * automatic invariant for you - the invariant that any transaction instance\n\t * should not be run while it is already being run. You would typically create a\n\t * single instance of a `Transaction` for reuse multiple times, that potentially\n\t * is used to wrap several different methods. Wrappers are extremely simple -\n\t * they only require implementing two methods.\n\t *\n\t *
\n\t *                       wrappers (injected at creation time)\n\t *                                      +        +\n\t *                                      |        |\n\t *                    +-----------------|--------|--------------+\n\t *                    |                 v        |              |\n\t *                    |      +---------------+   |              |\n\t *                    |   +--|    wrapper1   |---|----+         |\n\t *                    |   |  +---------------+   v    |         |\n\t *                    |   |          +-------------+  |         |\n\t *                    |   |     +----|   wrapper2  |--------+   |\n\t *                    |   |     |    +-------------+  |     |   |\n\t *                    |   |     |                     |     |   |\n\t *                    |   v     v                     v     v   | wrapper\n\t *                    | +---+ +---+   +---------+   +---+ +---+ | invariants\n\t * perform(anyMethod) | |   | |   |   |         |   |   | |   | | maintained\n\t * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n\t *                    | |   | |   |   |         |   |   | |   | |\n\t *                    | |   | |   |   |         |   |   | |   | |\n\t *                    | |   | |   |   |         |   |   | |   | |\n\t *                    | +---+ +---+   +---------+   +---+ +---+ |\n\t *                    |  initialize                    close    |\n\t *                    +-----------------------------------------+\n\t * 
\n\t *\n\t * Use cases:\n\t * - Preserving the input selection ranges before/after reconciliation.\n\t * Restoring selection even in the event of an unexpected error.\n\t * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n\t * while guaranteeing that afterwards, the event system is reactivated.\n\t * - Flushing a queue of collected DOM mutations to the main UI thread after a\n\t * reconciliation takes place in a worker thread.\n\t * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n\t * content.\n\t * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n\t * to preserve the `scrollTop` (an automatic scroll aware DOM).\n\t * - (Future use case): Layout calculations before and after DOM updates.\n\t *\n\t * Transactional plugin API:\n\t * - A module that has an `initialize` method that returns any precomputation.\n\t * - and a `close` method that accepts the precomputation. `close` is invoked\n\t * when the wrapped process is completed, or has failed.\n\t *\n\t * @param {Array} transactionWrapper Wrapper modules\n\t * that implement `initialize` and `close`.\n\t * @return {Transaction} Single transaction for reuse in thread.\n\t *\n\t * @class Transaction\n\t */\n\tvar TransactionImpl = {\n\t /**\n\t * Sets up this instance so that it is prepared for collecting metrics. Does\n\t * so such that this setup method may be used on an instance that is already\n\t * initialized, in a way that does not consume additional memory upon reuse.\n\t * That can be useful if you decide to make your subclass of this mixin a\n\t * \"PooledClass\".\n\t */\n\t reinitializeTransaction: function () {\n\t this.transactionWrappers = this.getTransactionWrappers();\n\t if (this.wrapperInitData) {\n\t this.wrapperInitData.length = 0;\n\t } else {\n\t this.wrapperInitData = [];\n\t }\n\t this._isInTransaction = false;\n\t },\n\t\n\t _isInTransaction: false,\n\t\n\t /**\n\t * @abstract\n\t * @return {Array} Array of transaction wrappers.\n\t */\n\t getTransactionWrappers: null,\n\t\n\t isInTransaction: function () {\n\t return !!this._isInTransaction;\n\t },\n\t\n\t /**\n\t * Executes the function within a safety window. Use this for the top level\n\t * methods that result in large amounts of computation/mutations that would\n\t * need to be safety checked. The optional arguments helps prevent the need\n\t * to bind in many cases.\n\t *\n\t * @param {function} method Member of scope to call.\n\t * @param {Object} scope Scope to invoke from.\n\t * @param {Object?=} a Argument to pass to the method.\n\t * @param {Object?=} b Argument to pass to the method.\n\t * @param {Object?=} c Argument to pass to the method.\n\t * @param {Object?=} d Argument to pass to the method.\n\t * @param {Object?=} e Argument to pass to the method.\n\t * @param {Object?=} f Argument to pass to the method.\n\t *\n\t * @return {*} Return value from `method`.\n\t */\n\t perform: function (method, scope, a, b, c, d, e, f) {\n\t !!this.isInTransaction() ? false ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;\n\t var errorThrown;\n\t var ret;\n\t try {\n\t this._isInTransaction = true;\n\t // Catching errors makes debugging more difficult, so we start with\n\t // errorThrown set to true before setting it to false after calling\n\t // close -- if it's still set to true in the finally block, it means\n\t // one of these calls threw.\n\t errorThrown = true;\n\t this.initializeAll(0);\n\t ret = method.call(scope, a, b, c, d, e, f);\n\t errorThrown = false;\n\t } finally {\n\t try {\n\t if (errorThrown) {\n\t // If `method` throws, prefer to show that stack trace over any thrown\n\t // by invoking `closeAll`.\n\t try {\n\t this.closeAll(0);\n\t } catch (err) {}\n\t } else {\n\t // Since `method` didn't throw, we don't want to silence the exception\n\t // here.\n\t this.closeAll(0);\n\t }\n\t } finally {\n\t this._isInTransaction = false;\n\t }\n\t }\n\t return ret;\n\t },\n\t\n\t initializeAll: function (startIndex) {\n\t var transactionWrappers = this.transactionWrappers;\n\t for (var i = startIndex; i < transactionWrappers.length; i++) {\n\t var wrapper = transactionWrappers[i];\n\t try {\n\t // Catching errors makes debugging more difficult, so we start with the\n\t // OBSERVED_ERROR state before overwriting it with the real return value\n\t // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n\t // block, it means wrapper.initialize threw.\n\t this.wrapperInitData[i] = OBSERVED_ERROR;\n\t this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n\t } finally {\n\t if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n\t // The initializer for wrapper i threw an error; initialize the\n\t // remaining wrappers but silence any exceptions from them to ensure\n\t // that the first error is the one to bubble up.\n\t try {\n\t this.initializeAll(i + 1);\n\t } catch (err) {}\n\t }\n\t }\n\t }\n\t },\n\t\n\t /**\n\t * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n\t * them the respective return values of `this.transactionWrappers.init[i]`\n\t * (`close`rs that correspond to initializers that failed will not be\n\t * invoked).\n\t */\n\t closeAll: function (startIndex) {\n\t !this.isInTransaction() ? false ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;\n\t var transactionWrappers = this.transactionWrappers;\n\t for (var i = startIndex; i < transactionWrappers.length; i++) {\n\t var wrapper = transactionWrappers[i];\n\t var initData = this.wrapperInitData[i];\n\t var errorThrown;\n\t try {\n\t // Catching errors makes debugging more difficult, so we start with\n\t // errorThrown set to true before setting it to false after calling\n\t // close -- if it's still set to true in the finally block, it means\n\t // wrapper.close threw.\n\t errorThrown = true;\n\t if (initData !== OBSERVED_ERROR && wrapper.close) {\n\t wrapper.close.call(this, initData);\n\t }\n\t errorThrown = false;\n\t } finally {\n\t if (errorThrown) {\n\t // The closer for wrapper i threw an error; close the remaining\n\t // wrappers but silence any exceptions from them to ensure that the\n\t // first error is the one to bubble up.\n\t try {\n\t this.closeAll(i + 1);\n\t } catch (e) {}\n\t }\n\t }\n\t }\n\t this.wrapperInitData.length = 0;\n\t }\n\t};\n\t\n\tmodule.exports = TransactionImpl;\n\n/***/ },\n/* 54 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2016-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * Based on the escape-html library, which is used under the MIT License below:\n\t *\n\t * Copyright (c) 2012-2013 TJ Holowaychuk\n\t * Copyright (c) 2015 Andreas Lubbe\n\t * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n\t *\n\t * Permission is hereby granted, free of charge, to any person obtaining\n\t * a copy of this software and associated documentation files (the\n\t * 'Software'), to deal in the Software without restriction, including\n\t * without limitation the rights to use, copy, modify, merge, publish,\n\t * distribute, sublicense, and/or sell copies of the Software, and to\n\t * permit persons to whom the Software is furnished to do so, subject to\n\t * the following conditions:\n\t *\n\t * The above copyright notice and this permission notice shall be\n\t * included in all copies or substantial portions of the Software.\n\t *\n\t * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n\t * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n\t * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n\t * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n\t * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n\t * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n\t * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t// code copied and modified from escape-html\n\t/**\n\t * Module variables.\n\t * @private\n\t */\n\t\n\tvar matchHtmlRegExp = /[\"'&<>]/;\n\t\n\t/**\n\t * Escape special characters in the given string of html.\n\t *\n\t * @param {string} string The string to escape for inserting into HTML\n\t * @return {string}\n\t * @public\n\t */\n\t\n\tfunction escapeHtml(string) {\n\t var str = '' + string;\n\t var match = matchHtmlRegExp.exec(str);\n\t\n\t if (!match) {\n\t return str;\n\t }\n\t\n\t var escape;\n\t var html = '';\n\t var index = 0;\n\t var lastIndex = 0;\n\t\n\t for (index = match.index; index < str.length; index++) {\n\t switch (str.charCodeAt(index)) {\n\t case 34:\n\t // \"\n\t escape = '"';\n\t break;\n\t case 38:\n\t // &\n\t escape = '&';\n\t break;\n\t case 39:\n\t // '\n\t escape = '''; // modified from escape-html; used to be '''\n\t break;\n\t case 60:\n\t // <\n\t escape = '<';\n\t break;\n\t case 62:\n\t // >\n\t escape = '>';\n\t break;\n\t default:\n\t continue;\n\t }\n\t\n\t if (lastIndex !== index) {\n\t html += str.substring(lastIndex, index);\n\t }\n\t\n\t lastIndex = index + 1;\n\t html += escape;\n\t }\n\t\n\t return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n\t}\n\t// end code copied and modified from escape-html\n\t\n\t\n\t/**\n\t * Escapes text to prevent scripting attacks.\n\t *\n\t * @param {*} text Text value to escape.\n\t * @return {string} An escaped string.\n\t */\n\tfunction escapeTextContentForBrowser(text) {\n\t if (typeof text === 'boolean' || typeof text === 'number') {\n\t // this shortcircuit helps perf for types that we know will never have\n\t // special characters, especially given that this function is used often\n\t // for numeric dom ids.\n\t return '' + text;\n\t }\n\t return escapeHtml(text);\n\t}\n\t\n\tmodule.exports = escapeTextContentForBrowser;\n\n/***/ },\n/* 55 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\tvar DOMNamespaces = __webpack_require__(73);\n\t\n\tvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\n\tvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\t\n\tvar createMicrosoftUnsafeLocalFunction = __webpack_require__(81);\n\t\n\t// SVG temp container for IE lacking innerHTML\n\tvar reusableSVGContainer;\n\t\n\t/**\n\t * Set the innerHTML property of a node, ensuring that whitespace is preserved\n\t * even in IE8.\n\t *\n\t * @param {DOMElement} node\n\t * @param {string} html\n\t * @internal\n\t */\n\tvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n\t // IE does not have innerHTML for SVG nodes, so instead we inject the\n\t // new markup in a temp node and then move the child nodes across into\n\t // the target node\n\t if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {\n\t reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n\t reusableSVGContainer.innerHTML = '' + html + '';\n\t var svgNode = reusableSVGContainer.firstChild;\n\t while (svgNode.firstChild) {\n\t node.appendChild(svgNode.firstChild);\n\t }\n\t } else {\n\t node.innerHTML = html;\n\t }\n\t});\n\t\n\tif (ExecutionEnvironment.canUseDOM) {\n\t // IE8: When updating a just created node with innerHTML only leading\n\t // whitespace is removed. When updating an existing node with innerHTML\n\t // whitespace in root TextNodes is also collapsed.\n\t // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\t\n\t // Feature detection; only IE8 is known to behave improperly like this.\n\t var testElement = document.createElement('div');\n\t testElement.innerHTML = ' ';\n\t if (testElement.innerHTML === '') {\n\t setInnerHTML = function (node, html) {\n\t // Magic theory: IE8 supposedly differentiates between added and updated\n\t // nodes when processing innerHTML, innerHTML on updated nodes suffers\n\t // from worse whitespace behavior. Re-adding a node like this triggers\n\t // the initial and more favorable whitespace behavior.\n\t // TODO: What to do on a detached node?\n\t if (node.parentNode) {\n\t node.parentNode.replaceChild(node, node);\n\t }\n\t\n\t // We also implement a workaround for non-visible tags disappearing into\n\t // thin air on IE8, this only happens if there is no visible text\n\t // in-front of the non-visible tags. Piggyback on the whitespace fix\n\t // and simply check if any non-visible tags appear in the source.\n\t if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n\t // Recover leading whitespace by temporarily prepending any character.\n\t // \\uFEFF has the potential advantage of being zero-width/invisible.\n\t // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n\t // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n\t // the actual Unicode character (by Babel, for example).\n\t // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n\t node.innerHTML = String.fromCharCode(0xFEFF) + html;\n\t\n\t // deleteData leaves an empty `TextNode` which offsets the index of all\n\t // children. Definitely want to avoid this.\n\t var textNode = node.firstChild;\n\t if (textNode.data.length === 1) {\n\t node.removeChild(textNode);\n\t } else {\n\t textNode.deleteData(0, 1);\n\t }\n\t } else {\n\t node.innerHTML = html;\n\t }\n\t };\n\t }\n\t testElement = null;\n\t}\n\t\n\tmodule.exports = setInnerHTML;\n\n/***/ },\n/* 56 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _Tooltip = __webpack_require__(144);\n\t\n\tvar _Tooltip2 = _interopRequireDefault(_Tooltip);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t cellFormatter: _react.PropTypes.func, // Used by the Table component to format the cell content for this \"column\"\n\t className: _react.PropTypes.string,\n\t name: _react.PropTypes.string.isRequired,\n\t numeric: _react.PropTypes.bool,\n\t onClick: _react.PropTypes.func,\n\t nosort: _react.PropTypes.bool,\n\t sortFn: _react.PropTypes.func, // Used by the Sortable component\n\t tooltip: _react.PropTypes.node\n\t};\n\t\n\tvar TableHeader = function TableHeader(props) {\n\t var className = props.className,\n\t name = props.name,\n\t numeric = props.numeric,\n\t onClick = props.onClick,\n\t nosort = props.nosort,\n\t tooltip = props.tooltip,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'name', 'numeric', 'onClick', 'nosort', 'tooltip', 'children']);\n\t\n\t // remove unwanted props\n\t // see https://github.com/Hacker0x01/react-datepicker/issues/517#issuecomment-230171426\n\t\n\t\n\t delete otherProps.cellFormatter;\n\t delete otherProps.sortFn;\n\t\n\t var classes = (0, _classnames2.default)({\n\t 'mdl-data-table__cell--non-numeric': !numeric\n\t }, className);\n\t\n\t var clickFn = !nosort && onClick ? function (e) {\n\t return onClick(e, name);\n\t } : null;\n\t\n\t return _react2.default.createElement(\n\t 'th',\n\t _extends({ className: classes, onClick: clickFn }, otherProps),\n\t !!tooltip ? _react2.default.createElement(\n\t _Tooltip2.default,\n\t { label: tooltip },\n\t children\n\t ) : children\n\t );\n\t};\n\t\n\tTableHeader.propTypes = propTypes;\n\t\n\texports.default = TableHeader;\n\n/***/ },\n/* 57 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function (children, props) {\n\t return _react2.default.Children.map(children, function (child) {\n\t if (!child) return child;\n\t var newProps = typeof props === 'function' ? props(child) : props;\n\t return _react2.default.cloneElement(child, newProps);\n\t });\n\t};\n\n/***/ },\n/* 58 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar values = [2, 3, 4, 6, 8, 16, 24];\n\texports.default = values.map(function (v) {\n\t return \"mdl-shadow--\" + v + \"dp\";\n\t});\n\n/***/ },\n/* 59 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.ERROR_FETCH_SEEN_APP = exports.RECEIVE_SEEN_APPS = exports.START_FETCH_SEEN_APP = exports.ERROR_FETCH_FEATURE_TOGGLES = exports.RECEIVE_FEATURE_METRICS = exports.START_FETCH_FEATURE_METRICS = undefined;\n\texports.fetchFeatureMetrics = fetchFeatureMetrics;\n\texports.fetchSeenApps = fetchSeenApps;\n\t\n\tvar _featureMetricsApi = __webpack_require__(211);\n\t\n\tvar _featureMetricsApi2 = _interopRequireDefault(_featureMetricsApi);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar START_FETCH_FEATURE_METRICS = exports.START_FETCH_FEATURE_METRICS = 'START_FETCH_FEATURE_METRICS';\n\tvar RECEIVE_FEATURE_METRICS = exports.RECEIVE_FEATURE_METRICS = 'RECEIVE_FEATURE_METRICS';\n\tvar ERROR_FETCH_FEATURE_TOGGLES = exports.ERROR_FETCH_FEATURE_TOGGLES = 'ERROR_FETCH_FEATURE_TOGGLES';\n\t\n\tvar START_FETCH_SEEN_APP = exports.START_FETCH_SEEN_APP = 'START_FETCH_SEEN_APP';\n\tvar RECEIVE_SEEN_APPS = exports.RECEIVE_SEEN_APPS = 'RECEIVE_SEEN_APPS';\n\tvar ERROR_FETCH_SEEN_APP = exports.ERROR_FETCH_SEEN_APP = 'ERROR_FETCH_SEEN_APP';\n\t\n\tfunction receiveFeatureMetrics(json) {\n\t return {\n\t type: RECEIVE_FEATURE_METRICS,\n\t value: json,\n\t receivedAt: Date.now()\n\t };\n\t}\n\t\n\tfunction receiveSeenApps(json) {\n\t return {\n\t type: RECEIVE_SEEN_APPS,\n\t value: json,\n\t receivedAt: Date.now()\n\t };\n\t}\n\t\n\tfunction dispatchAndThrow(dispatch, type) {\n\t return function (error) {\n\t dispatch({ type: type, error: error, receivedAt: Date.now() });\n\t throw error;\n\t };\n\t}\n\t\n\tfunction fetchFeatureMetrics() {\n\t return function (dispatch) {\n\t dispatch({ type: START_FETCH_SEEN_APP });\n\t\n\t return _featureMetricsApi2.default.fetchFeatureMetrics().then(function (json) {\n\t return dispatch(receiveFeatureMetrics(json));\n\t }).catch(dispatchAndThrow(dispatch, ERROR_FETCH_SEEN_APP));\n\t };\n\t}\n\t\n\tfunction fetchSeenApps() {\n\t return function (dispatch) {\n\t dispatch({ type: START_FETCH_FEATURE_METRICS });\n\t\n\t return _featureMetricsApi2.default.fetchSeenApps().then(function (json) {\n\t return dispatch(receiveSeenApps(json));\n\t }).catch(dispatchAndThrow(dispatch, ERROR_FETCH_FEATURE_TOGGLES));\n\t };\n\t}\n\n/***/ },\n/* 60 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.RECEIVE_HISTORY_FOR_TOGGLE = exports.ERROR_RECEIVE_HISTORY = exports.RECEIVE_HISTORY = undefined;\n\texports.fetchHistory = fetchHistory;\n\texports.fetchHistoryForToggle = fetchHistoryForToggle;\n\t\n\tvar _historyApi = __webpack_require__(212);\n\t\n\tvar _historyApi2 = _interopRequireDefault(_historyApi);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar RECEIVE_HISTORY = exports.RECEIVE_HISTORY = 'RECEIVE_HISTORY';\n\tvar ERROR_RECEIVE_HISTORY = exports.ERROR_RECEIVE_HISTORY = 'ERROR_RECEIVE_HISTORY';\n\t\n\tvar RECEIVE_HISTORY_FOR_TOGGLE = exports.RECEIVE_HISTORY_FOR_TOGGLE = 'RECEIVE_HISTORY_FOR_TOGGLE';\n\t\n\tvar receiveHistory = function receiveHistory(json) {\n\t return {\n\t type: RECEIVE_HISTORY,\n\t value: json.events\n\t };\n\t};\n\t\n\tvar receiveHistoryforToggle = function receiveHistoryforToggle(json) {\n\t return {\n\t type: RECEIVE_HISTORY_FOR_TOGGLE,\n\t value: json\n\t };\n\t};\n\t\n\tvar errorReceiveHistory = function errorReceiveHistory(statusCode) {\n\t return {\n\t type: ERROR_RECEIVE_HISTORY,\n\t statusCode: statusCode\n\t };\n\t};\n\t\n\tfunction fetchHistory() {\n\t return function (dispatch) {\n\t return _historyApi2.default.fetchAll().then(function (json) {\n\t return dispatch(receiveHistory(json));\n\t }).catch(function (error) {\n\t return dispatch(errorReceiveHistory(error));\n\t });\n\t };\n\t}\n\t\n\tfunction fetchHistoryForToggle(toggleName) {\n\t return function (dispatch) {\n\t return _historyApi2.default.fetchHistoryForToggle(toggleName).then(function (json) {\n\t return dispatch(receiveHistoryforToggle(json));\n\t }).catch(function (error) {\n\t return dispatch(errorReceiveHistory(error));\n\t });\n\t };\n\t}\n\n/***/ },\n/* 61 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar UPDATE_SETTING = exports.UPDATE_SETTING = 'UPDATE_SETTING';\n\t\n\tvar updateSetting = exports.updateSetting = function updateSetting(group, field, value) {\n\t return {\n\t type: UPDATE_SETTING,\n\t group: group,\n\t field: field,\n\t value: value\n\t };\n\t};\n\t\n\tvar updateSettingForGroup = exports.updateSettingForGroup = function updateSettingForGroup(group) {\n\t return function (field, value) {\n\t return updateSetting(group, field, value);\n\t };\n\t};\n\n/***/ },\n/* 62 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar USER_UPDATE_USERNAME = exports.USER_UPDATE_USERNAME = 'USER_UPDATE_USERNAME';\n\tvar USER_SAVE = exports.USER_SAVE = 'USER_SAVE';\n\tvar USER_EDIT = exports.USER_EDIT = 'USER_EDIT';\n\t\n\tvar updateUserName = exports.updateUserName = function updateUserName(value) {\n\t return {\n\t type: USER_UPDATE_USERNAME,\n\t value: value\n\t };\n\t};\n\t\n\tvar save = exports.save = function save() {\n\t return {\n\t type: USER_SAVE\n\t };\n\t};\n\t\n\tvar openEdit = exports.openEdit = function openEdit() {\n\t return {\n\t type: USER_EDIT\n\t };\n\t};\n\n/***/ },\n/* 63 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * This is the web browser implementation of `debug()`.\n\t *\n\t * Expose `debug()` as the module.\n\t */\n\t\n\texports = module.exports = __webpack_require__(239);\n\texports.log = log;\n\texports.formatArgs = formatArgs;\n\texports.save = save;\n\texports.load = load;\n\texports.useColors = useColors;\n\texports.storage = 'undefined' != typeof chrome\n\t && 'undefined' != typeof chrome.storage\n\t ? chrome.storage.local\n\t : localstorage();\n\t\n\t/**\n\t * Colors.\n\t */\n\t\n\texports.colors = [\n\t 'lightseagreen',\n\t 'forestgreen',\n\t 'goldenrod',\n\t 'dodgerblue',\n\t 'darkorchid',\n\t 'crimson'\n\t];\n\t\n\t/**\n\t * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n\t * and the Firebug extension (any Firefox version) are known\n\t * to support \"%c\" CSS customizations.\n\t *\n\t * TODO: add a `localStorage` variable to explicitly enable/disable colors\n\t */\n\t\n\tfunction useColors() {\n\t // NB: In an Electron preload script, document will be defined but not fully\n\t // initialized. Since we know we're in Chrome, we'll just detect this case\n\t // explicitly\n\t if (typeof window !== 'undefined' && typeof window.process !== 'undefined' && window.process.type === 'renderer') {\n\t return true;\n\t }\n\t\n\t // is webkit? http://stackoverflow.com/a/16459606/376773\n\t // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t return (typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style) ||\n\t // is firebug? http://stackoverflow.com/a/398120/376773\n\t (typeof window !== 'undefined' && window.console && (console.firebug || (console.exception && console.table))) ||\n\t // is firefox >= v31?\n\t // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t (navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t // double check webkit in userAgent just in case we are in a worker\n\t (navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n\t}\n\t\n\t/**\n\t * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n\t */\n\t\n\texports.formatters.j = function(v) {\n\t try {\n\t return JSON.stringify(v);\n\t } catch (err) {\n\t return '[UnexpectedJSONParseError]: ' + err.message;\n\t }\n\t};\n\t\n\t\n\t/**\n\t * Colorize log arguments if enabled.\n\t *\n\t * @api public\n\t */\n\t\n\tfunction formatArgs(args) {\n\t var useColors = this.useColors;\n\t\n\t args[0] = (useColors ? '%c' : '')\n\t + this.namespace\n\t + (useColors ? ' %c' : ' ')\n\t + args[0]\n\t + (useColors ? '%c ' : ' ')\n\t + '+' + exports.humanize(this.diff);\n\t\n\t if (!useColors) return;\n\t\n\t var c = 'color: ' + this.color;\n\t args.splice(1, 0, c, 'color: inherit')\n\t\n\t // the final \"%c\" is somewhat tricky, because there could be other\n\t // arguments passed either before or after the %c, so we need to\n\t // figure out the correct index to insert the CSS into\n\t var index = 0;\n\t var lastC = 0;\n\t args[0].replace(/%[a-zA-Z%]/g, function(match) {\n\t if ('%%' === match) return;\n\t index++;\n\t if ('%c' === match) {\n\t // we only are interested in the *last* %c\n\t // (the user may have provided their own)\n\t lastC = index;\n\t }\n\t });\n\t\n\t args.splice(lastC, 0, c);\n\t}\n\t\n\t/**\n\t * Invokes `console.log()` when available.\n\t * No-op when `console.log` is not a \"function\".\n\t *\n\t * @api public\n\t */\n\t\n\tfunction log() {\n\t // this hackery is required for IE8/9, where\n\t // the `console.log` function doesn't have 'apply'\n\t return 'object' === typeof console\n\t && console.log\n\t && Function.prototype.apply.call(console.log, console, arguments);\n\t}\n\t\n\t/**\n\t * Save `namespaces`.\n\t *\n\t * @param {String} namespaces\n\t * @api private\n\t */\n\t\n\tfunction save(namespaces) {\n\t try {\n\t if (null == namespaces) {\n\t exports.storage.removeItem('debug');\n\t } else {\n\t exports.storage.debug = namespaces;\n\t }\n\t } catch(e) {}\n\t}\n\t\n\t/**\n\t * Load `namespaces`.\n\t *\n\t * @return {String} returns the previously persisted debug modes\n\t * @api private\n\t */\n\t\n\tfunction load() {\n\t try {\n\t return exports.storage.debug;\n\t } catch(e) {}\n\t\n\t // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\t if (typeof process !== 'undefined' && 'env' in process) {\n\t return ({\"NODE_ENV\":\"production\"}).DEBUG;\n\t }\n\t}\n\t\n\t/**\n\t * Enable namespaces listed in `localStorage.debug` initially.\n\t */\n\t\n\texports.enable(load());\n\t\n\t/**\n\t * Localstorage attempts to return the localstorage.\n\t *\n\t * This is necessary because safari throws\n\t * when a user disables cookies/localstorage\n\t * and you attempt to access it.\n\t *\n\t * @return {LocalStorage}\n\t * @api private\n\t */\n\t\n\tfunction localstorage() {\n\t try {\n\t return window.localStorage;\n\t } catch (e) {}\n\t}\n\t\n\t/** Attach to Window*/\n\tif (window) {\n\t window.debug = exports;\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(71)))\n\n/***/ },\n/* 64 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\tmodule.exports = {\"history\":\"history__history___2SlHd\",\"diff-N\":\"history__diff-N___AXtC3\",\"diff-D\":\"history__diff-D___tE-cJ\",\"diff-A\":\"history__diff-A___r8S1s\",\"diff-E\":\"history__diff-E___qtsD_\",\"negative\":\"history__negative___2G_kU\",\"positive\":\"history__positive___qcMCq\",\"blue\":\"history__blue___2HZTE\",\"history-item\":\"history__history-item___MA_uO\"};\n\n/***/ },\n/* 65 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks\n\t * \n\t */\n\t\n\t/*eslint-disable no-self-compare */\n\t\n\t'use strict';\n\t\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\t\n\t/**\n\t * inlined Object.is polyfill to avoid requiring consumers ship their own\n\t * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\t */\n\tfunction is(x, y) {\n\t // SameValue algorithm\n\t if (x === y) {\n\t // Steps 1-5, 7-10\n\t // Steps 6.b-6.e: +0 != -0\n\t // Added the nonzero y check to make Flow happy, but it is redundant\n\t return x !== 0 || y !== 0 || 1 / x === 1 / y;\n\t } else {\n\t // Step 6.a: NaN == NaN\n\t return x !== x && y !== y;\n\t }\n\t}\n\t\n\t/**\n\t * Performs equality by iterating through keys on an object and returning false\n\t * when any key has values which are not strictly equal between the arguments.\n\t * Returns true when the values of all keys are strictly equal.\n\t */\n\tfunction shallowEqual(objA, objB) {\n\t if (is(objA, objB)) {\n\t return true;\n\t }\n\t\n\t if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n\t return false;\n\t }\n\t\n\t var keysA = Object.keys(objA);\n\t var keysB = Object.keys(objB);\n\t\n\t if (keysA.length !== keysB.length) {\n\t return false;\n\t }\n\t\n\t // Test for A's keys different from B.\n\t for (var i = 0; i < keysA.length; i++) {\n\t if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\t\n\tmodule.exports = shallowEqual;\n\n/***/ },\n/* 66 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.go = exports.replaceLocation = exports.pushLocation = exports.startListener = exports.getUserConfirmation = exports.getCurrentLocation = undefined;\n\t\n\tvar _LocationUtils = __webpack_require__(29);\n\t\n\tvar _DOMUtils = __webpack_require__(50);\n\t\n\tvar _DOMStateStorage = __webpack_require__(112);\n\t\n\tvar _PathUtils = __webpack_require__(23);\n\t\n\tvar _ExecutionEnvironment = __webpack_require__(67);\n\t\n\tvar PopStateEvent = 'popstate';\n\tvar HashChangeEvent = 'hashchange';\n\t\n\tvar needsHashchangeListener = _ExecutionEnvironment.canUseDOM && !(0, _DOMUtils.supportsPopstateOnHashchange)();\n\t\n\tvar _createLocation = function _createLocation(historyState) {\n\t var key = historyState && historyState.key;\n\t\n\t return (0, _LocationUtils.createLocation)({\n\t pathname: window.location.pathname,\n\t search: window.location.search,\n\t hash: window.location.hash,\n\t state: key ? (0, _DOMStateStorage.readState)(key) : undefined\n\t }, undefined, key);\n\t};\n\t\n\tvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() {\n\t var historyState = void 0;\n\t try {\n\t historyState = window.history.state || {};\n\t } catch (error) {\n\t // IE 11 sometimes throws when accessing window.history.state\n\t // See https://github.com/ReactTraining/history/pull/289\n\t historyState = {};\n\t }\n\t\n\t return _createLocation(historyState);\n\t};\n\t\n\tvar getUserConfirmation = exports.getUserConfirmation = function getUserConfirmation(message, callback) {\n\t return callback(window.confirm(message));\n\t}; // eslint-disable-line no-alert\n\t\n\tvar startListener = exports.startListener = function startListener(listener) {\n\t var handlePopState = function handlePopState(event) {\n\t if (event.state !== undefined) // Ignore extraneous popstate events in WebKit\n\t listener(_createLocation(event.state));\n\t };\n\t\n\t (0, _DOMUtils.addEventListener)(window, PopStateEvent, handlePopState);\n\t\n\t var handleUnpoppedHashChange = function handleUnpoppedHashChange() {\n\t return listener(getCurrentLocation());\n\t };\n\t\n\t if (needsHashchangeListener) {\n\t (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleUnpoppedHashChange);\n\t }\n\t\n\t return function () {\n\t (0, _DOMUtils.removeEventListener)(window, PopStateEvent, handlePopState);\n\t\n\t if (needsHashchangeListener) {\n\t (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleUnpoppedHashChange);\n\t }\n\t };\n\t};\n\t\n\tvar updateLocation = function updateLocation(location, updateState) {\n\t var state = location.state;\n\t var key = location.key;\n\t\n\t\n\t if (state !== undefined) (0, _DOMStateStorage.saveState)(key, state);\n\t\n\t updateState({ key: key }, (0, _PathUtils.createPath)(location));\n\t};\n\t\n\tvar pushLocation = exports.pushLocation = function pushLocation(location) {\n\t return updateLocation(location, function (state, path) {\n\t return window.history.pushState(state, null, path);\n\t });\n\t};\n\t\n\tvar replaceLocation = exports.replaceLocation = function replaceLocation(location) {\n\t return updateLocation(location, function (state, path) {\n\t return window.history.replaceState(state, null, path);\n\t });\n\t};\n\t\n\tvar go = exports.go = function go(n) {\n\t if (n) window.history.go(n);\n\t};\n\n/***/ },\n/* 67 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\tvar canUseDOM = exports.canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/***/ },\n/* 68 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _AsyncUtils = __webpack_require__(258);\n\t\n\tvar _PathUtils = __webpack_require__(23);\n\t\n\tvar _runTransitionHook = __webpack_require__(69);\n\t\n\tvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\t\n\tvar _Actions = __webpack_require__(49);\n\t\n\tvar _LocationUtils = __webpack_require__(29);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar createHistory = function createHistory() {\n\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t var getCurrentLocation = options.getCurrentLocation;\n\t var getUserConfirmation = options.getUserConfirmation;\n\t var pushLocation = options.pushLocation;\n\t var replaceLocation = options.replaceLocation;\n\t var go = options.go;\n\t var keyLength = options.keyLength;\n\t\n\t\n\t var currentLocation = void 0;\n\t var pendingLocation = void 0;\n\t var beforeListeners = [];\n\t var listeners = [];\n\t var allKeys = [];\n\t\n\t var getCurrentIndex = function getCurrentIndex() {\n\t if (pendingLocation && pendingLocation.action === _Actions.POP) return allKeys.indexOf(pendingLocation.key);\n\t\n\t if (currentLocation) return allKeys.indexOf(currentLocation.key);\n\t\n\t return -1;\n\t };\n\t\n\t var updateLocation = function updateLocation(nextLocation) {\n\t var currentIndex = getCurrentIndex();\n\t\n\t currentLocation = nextLocation;\n\t\n\t if (currentLocation.action === _Actions.PUSH) {\n\t allKeys = [].concat(allKeys.slice(0, currentIndex + 1), [currentLocation.key]);\n\t } else if (currentLocation.action === _Actions.REPLACE) {\n\t allKeys[currentIndex] = currentLocation.key;\n\t }\n\t\n\t listeners.forEach(function (listener) {\n\t return listener(currentLocation);\n\t });\n\t };\n\t\n\t var listenBefore = function listenBefore(listener) {\n\t beforeListeners.push(listener);\n\t\n\t return function () {\n\t return beforeListeners = beforeListeners.filter(function (item) {\n\t return item !== listener;\n\t });\n\t };\n\t };\n\t\n\t var listen = function listen(listener) {\n\t listeners.push(listener);\n\t\n\t return function () {\n\t return listeners = listeners.filter(function (item) {\n\t return item !== listener;\n\t });\n\t };\n\t };\n\t\n\t var confirmTransitionTo = function confirmTransitionTo(location, callback) {\n\t (0, _AsyncUtils.loopAsync)(beforeListeners.length, function (index, next, done) {\n\t (0, _runTransitionHook2.default)(beforeListeners[index], location, function (result) {\n\t return result != null ? done(result) : next();\n\t });\n\t }, function (message) {\n\t if (getUserConfirmation && typeof message === 'string') {\n\t getUserConfirmation(message, function (ok) {\n\t return callback(ok !== false);\n\t });\n\t } else {\n\t callback(message !== false);\n\t }\n\t });\n\t };\n\t\n\t var transitionTo = function transitionTo(nextLocation) {\n\t if (currentLocation && (0, _LocationUtils.locationsAreEqual)(currentLocation, nextLocation) || pendingLocation && (0, _LocationUtils.locationsAreEqual)(pendingLocation, nextLocation)) return; // Nothing to do\n\t\n\t pendingLocation = nextLocation;\n\t\n\t confirmTransitionTo(nextLocation, function (ok) {\n\t if (pendingLocation !== nextLocation) return; // Transition was interrupted during confirmation\n\t\n\t pendingLocation = null;\n\t\n\t if (ok) {\n\t // Treat PUSH to same path like REPLACE to be consistent with browsers\n\t if (nextLocation.action === _Actions.PUSH) {\n\t var prevPath = (0, _PathUtils.createPath)(currentLocation);\n\t var nextPath = (0, _PathUtils.createPath)(nextLocation);\n\t\n\t if (nextPath === prevPath && (0, _LocationUtils.statesAreEqual)(currentLocation.state, nextLocation.state)) nextLocation.action = _Actions.REPLACE;\n\t }\n\t\n\t if (nextLocation.action === _Actions.POP) {\n\t updateLocation(nextLocation);\n\t } else if (nextLocation.action === _Actions.PUSH) {\n\t if (pushLocation(nextLocation) !== false) updateLocation(nextLocation);\n\t } else if (nextLocation.action === _Actions.REPLACE) {\n\t if (replaceLocation(nextLocation) !== false) updateLocation(nextLocation);\n\t }\n\t } else if (currentLocation && nextLocation.action === _Actions.POP) {\n\t var prevIndex = allKeys.indexOf(currentLocation.key);\n\t var nextIndex = allKeys.indexOf(nextLocation.key);\n\t\n\t if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL\n\t }\n\t });\n\t };\n\t\n\t var push = function push(input) {\n\t return transitionTo(createLocation(input, _Actions.PUSH));\n\t };\n\t\n\t var replace = function replace(input) {\n\t return transitionTo(createLocation(input, _Actions.REPLACE));\n\t };\n\t\n\t var goBack = function goBack() {\n\t return go(-1);\n\t };\n\t\n\t var goForward = function goForward() {\n\t return go(1);\n\t };\n\t\n\t var createKey = function createKey() {\n\t return Math.random().toString(36).substr(2, keyLength || 6);\n\t };\n\t\n\t var createHref = function createHref(location) {\n\t return (0, _PathUtils.createPath)(location);\n\t };\n\t\n\t var createLocation = function createLocation(location, action) {\n\t var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2];\n\t return (0, _LocationUtils.createLocation)(location, action, key);\n\t };\n\t\n\t return {\n\t getCurrentLocation: getCurrentLocation,\n\t listenBefore: listenBefore,\n\t listen: listen,\n\t transitionTo: transitionTo,\n\t push: push,\n\t replace: replace,\n\t go: go,\n\t goBack: goBack,\n\t goForward: goForward,\n\t createKey: createKey,\n\t createPath: _PathUtils.createPath,\n\t createHref: createHref,\n\t createLocation: createLocation\n\t };\n\t};\n\t\n\texports.default = createHistory;\n\n/***/ },\n/* 69 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _warning = __webpack_require__(25);\n\t\n\tvar _warning2 = _interopRequireDefault(_warning);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar runTransitionHook = function runTransitionHook(hook, location, callback) {\n\t var result = hook(location, callback);\n\t\n\t if (hook.length < 2) {\n\t // Assume the hook runs synchronously and automatically\n\t // call the callback with the return value.\n\t callback(result);\n\t } else {\n\t false ? (0, _warning2.default)(result === undefined, 'You should not \"return\" in a transition hook with a callback argument; ' + 'call the callback instead') : void 0;\n\t }\n\t};\n\t\n\texports.default = runTransitionHook;\n\n/***/ },\n/* 70 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar baseGetTag = __webpack_require__(265),\n\t getPrototype = __webpack_require__(267),\n\t isObjectLike = __webpack_require__(272);\n\t\n\t/** `Object#toString` result references. */\n\tvar objectTag = '[object Object]';\n\t\n\t/** Used for built-in method references. */\n\tvar funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\t\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/** Used to infer the `Object` constructor. */\n\tvar objectCtorString = funcToString.call(Object);\n\t\n\t/**\n\t * Checks if `value` is a plain object, that is, an object created by the\n\t * `Object` constructor or one with a `[[Prototype]]` of `null`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.8.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * }\n\t *\n\t * _.isPlainObject(new Foo);\n\t * // => false\n\t *\n\t * _.isPlainObject([1, 2, 3]);\n\t * // => false\n\t *\n\t * _.isPlainObject({ 'x': 0, 'y': 0 });\n\t * // => true\n\t *\n\t * _.isPlainObject(Object.create(null));\n\t * // => true\n\t */\n\tfunction isPlainObject(value) {\n\t if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n\t return false;\n\t }\n\t var proto = getPrototype(value);\n\t if (proto === null) {\n\t return true;\n\t }\n\t var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n\t return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n\t funcToString.call(Ctor) == objectCtorString;\n\t}\n\t\n\tmodule.exports = isPlainObject;\n\n\n/***/ },\n/* 71 */\n/***/ function(module, exports) {\n\n\t// shim for using process in browser\n\tvar process = module.exports = {};\n\t\n\t// cached from whatever global is present so that test runners that stub it\n\t// don't break things. But we need to wrap it in a try catch in case it is\n\t// wrapped in strict mode code which doesn't define any globals. It's inside a\n\t// function because try/catches deoptimize in certain engines.\n\t\n\tvar cachedSetTimeout;\n\tvar cachedClearTimeout;\n\t\n\tfunction defaultSetTimout() {\n\t throw new Error('setTimeout has not been defined');\n\t}\n\tfunction defaultClearTimeout () {\n\t throw new Error('clearTimeout has not been defined');\n\t}\n\t(function () {\n\t try {\n\t if (typeof setTimeout === 'function') {\n\t cachedSetTimeout = setTimeout;\n\t } else {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t } catch (e) {\n\t cachedSetTimeout = defaultSetTimout;\n\t }\n\t try {\n\t if (typeof clearTimeout === 'function') {\n\t cachedClearTimeout = clearTimeout;\n\t } else {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t } catch (e) {\n\t cachedClearTimeout = defaultClearTimeout;\n\t }\n\t} ())\n\tfunction runTimeout(fun) {\n\t if (cachedSetTimeout === setTimeout) {\n\t //normal enviroments in sane situations\n\t return setTimeout(fun, 0);\n\t }\n\t // if setTimeout wasn't available but was latter defined\n\t if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n\t cachedSetTimeout = setTimeout;\n\t return setTimeout(fun, 0);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedSetTimeout(fun, 0);\n\t } catch(e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedSetTimeout.call(null, fun, 0);\n\t } catch(e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n\t return cachedSetTimeout.call(this, fun, 0);\n\t }\n\t }\n\t\n\t\n\t}\n\tfunction runClearTimeout(marker) {\n\t if (cachedClearTimeout === clearTimeout) {\n\t //normal enviroments in sane situations\n\t return clearTimeout(marker);\n\t }\n\t // if clearTimeout wasn't available but was latter defined\n\t if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n\t cachedClearTimeout = clearTimeout;\n\t return clearTimeout(marker);\n\t }\n\t try {\n\t // when when somebody has screwed with setTimeout but no I.E. maddness\n\t return cachedClearTimeout(marker);\n\t } catch (e){\n\t try {\n\t // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n\t return cachedClearTimeout.call(null, marker);\n\t } catch (e){\n\t // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n\t // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n\t return cachedClearTimeout.call(this, marker);\n\t }\n\t }\n\t\n\t\n\t\n\t}\n\tvar queue = [];\n\tvar draining = false;\n\tvar currentQueue;\n\tvar queueIndex = -1;\n\t\n\tfunction cleanUpNextTick() {\n\t if (!draining || !currentQueue) {\n\t return;\n\t }\n\t draining = false;\n\t if (currentQueue.length) {\n\t queue = currentQueue.concat(queue);\n\t } else {\n\t queueIndex = -1;\n\t }\n\t if (queue.length) {\n\t drainQueue();\n\t }\n\t}\n\t\n\tfunction drainQueue() {\n\t if (draining) {\n\t return;\n\t }\n\t var timeout = runTimeout(cleanUpNextTick);\n\t draining = true;\n\t\n\t var len = queue.length;\n\t while(len) {\n\t currentQueue = queue;\n\t queue = [];\n\t while (++queueIndex < len) {\n\t if (currentQueue) {\n\t currentQueue[queueIndex].run();\n\t }\n\t }\n\t queueIndex = -1;\n\t len = queue.length;\n\t }\n\t currentQueue = null;\n\t draining = false;\n\t runClearTimeout(timeout);\n\t}\n\t\n\tprocess.nextTick = function (fun) {\n\t var args = new Array(arguments.length - 1);\n\t if (arguments.length > 1) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\t }\n\t queue.push(new Item(fun, args));\n\t if (queue.length === 1 && !draining) {\n\t runTimeout(drainQueue);\n\t }\n\t};\n\t\n\t// v8 likes predictible objects\n\tfunction Item(fun, array) {\n\t this.fun = fun;\n\t this.array = array;\n\t}\n\tItem.prototype.run = function () {\n\t this.fun.apply(null, this.array);\n\t};\n\tprocess.title = 'browser';\n\tprocess.browser = true;\n\tprocess.env = {};\n\tprocess.argv = [];\n\tprocess.version = ''; // empty string to avoid regexp issues\n\tprocess.versions = {};\n\t\n\tfunction noop() {}\n\t\n\tprocess.on = noop;\n\tprocess.addListener = noop;\n\tprocess.once = noop;\n\tprocess.off = noop;\n\tprocess.removeListener = noop;\n\tprocess.removeAllListeners = noop;\n\tprocess.emit = noop;\n\t\n\tprocess.binding = function (name) {\n\t throw new Error('process.binding is not supported');\n\t};\n\t\n\tprocess.cwd = function () { return '/' };\n\tprocess.chdir = function (dir) {\n\t throw new Error('process.chdir is not supported');\n\t};\n\tprocess.umask = function() { return 0; };\n\n\n/***/ },\n/* 72 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar DOMLazyTree = __webpack_require__(30);\n\tvar Danger = __webpack_require__(280);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactInstrumentation = __webpack_require__(18);\n\t\n\tvar createMicrosoftUnsafeLocalFunction = __webpack_require__(81);\n\tvar setInnerHTML = __webpack_require__(55);\n\tvar setTextContent = __webpack_require__(136);\n\t\n\tfunction getNodeAfter(parentNode, node) {\n\t // Special case for text components, which return [open, close] comments\n\t // from getHostNode.\n\t if (Array.isArray(node)) {\n\t node = node[1];\n\t }\n\t return node ? node.nextSibling : parentNode.firstChild;\n\t}\n\t\n\t/**\n\t * Inserts `childNode` as a child of `parentNode` at the `index`.\n\t *\n\t * @param {DOMElement} parentNode Parent node in which to insert.\n\t * @param {DOMElement} childNode Child node to insert.\n\t * @param {number} index Index at which to insert the child.\n\t * @internal\n\t */\n\tvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n\t // We rely exclusively on `insertBefore(node, null)` instead of also using\n\t // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n\t // we are careful to use `null`.)\n\t parentNode.insertBefore(childNode, referenceNode);\n\t});\n\t\n\tfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n\t DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n\t}\n\t\n\tfunction moveChild(parentNode, childNode, referenceNode) {\n\t if (Array.isArray(childNode)) {\n\t moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n\t } else {\n\t insertChildAt(parentNode, childNode, referenceNode);\n\t }\n\t}\n\t\n\tfunction removeChild(parentNode, childNode) {\n\t if (Array.isArray(childNode)) {\n\t var closingComment = childNode[1];\n\t childNode = childNode[0];\n\t removeDelimitedText(parentNode, childNode, closingComment);\n\t parentNode.removeChild(closingComment);\n\t }\n\t parentNode.removeChild(childNode);\n\t}\n\t\n\tfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n\t var node = openingComment;\n\t while (true) {\n\t var nextNode = node.nextSibling;\n\t insertChildAt(parentNode, node, referenceNode);\n\t if (node === closingComment) {\n\t break;\n\t }\n\t node = nextNode;\n\t }\n\t}\n\t\n\tfunction removeDelimitedText(parentNode, startNode, closingComment) {\n\t while (true) {\n\t var node = startNode.nextSibling;\n\t if (node === closingComment) {\n\t // The closing comment is removed by ReactMultiChild.\n\t break;\n\t } else {\n\t parentNode.removeChild(node);\n\t }\n\t }\n\t}\n\t\n\tfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n\t var parentNode = openingComment.parentNode;\n\t var nodeAfterComment = openingComment.nextSibling;\n\t if (nodeAfterComment === closingComment) {\n\t // There are no text nodes between the opening and closing comments; insert\n\t // a new one if stringText isn't empty.\n\t if (stringText) {\n\t insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n\t }\n\t } else {\n\t if (stringText) {\n\t // Set the text content of the first node after the opening comment, and\n\t // remove all following nodes up until the closing comment.\n\t setTextContent(nodeAfterComment, stringText);\n\t removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n\t } else {\n\t removeDelimitedText(parentNode, openingComment, closingComment);\n\t }\n\t }\n\t\n\t if (false) {\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n\t type: 'replace text',\n\t payload: stringText\n\t });\n\t }\n\t}\n\t\n\tvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\n\tif (false) {\n\t dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n\t Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n\t if (prevInstance._debugID !== 0) {\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: prevInstance._debugID,\n\t type: 'replace with',\n\t payload: markup.toString()\n\t });\n\t } else {\n\t var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n\t if (nextInstance._debugID !== 0) {\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: nextInstance._debugID,\n\t type: 'mount',\n\t payload: markup.toString()\n\t });\n\t }\n\t }\n\t };\n\t}\n\t\n\t/**\n\t * Operations for updating with DOM children.\n\t */\n\tvar DOMChildrenOperations = {\n\t\n\t dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\t\n\t replaceDelimitedText: replaceDelimitedText,\n\t\n\t /**\n\t * Updates a component's children by processing a series of updates. The\n\t * update configurations are each expected to have a `parentNode` property.\n\t *\n\t * @param {array} updates List of update configurations.\n\t * @internal\n\t */\n\t processUpdates: function (parentNode, updates) {\n\t if (false) {\n\t var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n\t }\n\t\n\t for (var k = 0; k < updates.length; k++) {\n\t var update = updates[k];\n\t switch (update.type) {\n\t case 'INSERT_MARKUP':\n\t insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n\t if (false) {\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: parentNodeDebugID,\n\t type: 'insert child',\n\t payload: { toIndex: update.toIndex, content: update.content.toString() }\n\t });\n\t }\n\t break;\n\t case 'MOVE_EXISTING':\n\t moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n\t if (false) {\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: parentNodeDebugID,\n\t type: 'move child',\n\t payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n\t });\n\t }\n\t break;\n\t case 'SET_MARKUP':\n\t setInnerHTML(parentNode, update.content);\n\t if (false) {\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: parentNodeDebugID,\n\t type: 'replace children',\n\t payload: update.content.toString()\n\t });\n\t }\n\t break;\n\t case 'TEXT_CONTENT':\n\t setTextContent(parentNode, update.content);\n\t if (false) {\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: parentNodeDebugID,\n\t type: 'replace text',\n\t payload: update.content.toString()\n\t });\n\t }\n\t break;\n\t case 'REMOVE_NODE':\n\t removeChild(parentNode, update.fromNode);\n\t if (false) {\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: parentNodeDebugID,\n\t type: 'remove child',\n\t payload: { fromIndex: update.fromIndex }\n\t });\n\t }\n\t break;\n\t }\n\t }\n\t }\n\t\n\t};\n\t\n\tmodule.exports = DOMChildrenOperations;\n\n/***/ },\n/* 73 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar DOMNamespaces = {\n\t html: 'http://www.w3.org/1999/xhtml',\n\t mathml: 'http://www.w3.org/1998/Math/MathML',\n\t svg: 'http://www.w3.org/2000/svg'\n\t};\n\t\n\tmodule.exports = DOMNamespaces;\n\n/***/ },\n/* 74 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * Injectable ordering of event plugins.\n\t */\n\tvar eventPluginOrder = null;\n\t\n\t/**\n\t * Injectable mapping from names to event plugin modules.\n\t */\n\tvar namesToPlugins = {};\n\t\n\t/**\n\t * Recomputes the plugin list using the injected plugins and plugin ordering.\n\t *\n\t * @private\n\t */\n\tfunction recomputePluginOrdering() {\n\t if (!eventPluginOrder) {\n\t // Wait until an `eventPluginOrder` is injected.\n\t return;\n\t }\n\t for (var pluginName in namesToPlugins) {\n\t var pluginModule = namesToPlugins[pluginName];\n\t var pluginIndex = eventPluginOrder.indexOf(pluginName);\n\t !(pluginIndex > -1) ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n\t if (EventPluginRegistry.plugins[pluginIndex]) {\n\t continue;\n\t }\n\t !pluginModule.extractEvents ? false ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n\t EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n\t var publishedEvents = pluginModule.eventTypes;\n\t for (var eventName in publishedEvents) {\n\t !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? false ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Publishes an event so that it can be dispatched by the supplied plugin.\n\t *\n\t * @param {object} dispatchConfig Dispatch configuration for the event.\n\t * @param {object} PluginModule Plugin publishing the event.\n\t * @return {boolean} True if the event was successfully published.\n\t * @private\n\t */\n\tfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n\t !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n\t EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\t\n\t var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\t if (phasedRegistrationNames) {\n\t for (var phaseName in phasedRegistrationNames) {\n\t if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n\t var phasedRegistrationName = phasedRegistrationNames[phaseName];\n\t publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n\t }\n\t }\n\t return true;\n\t } else if (dispatchConfig.registrationName) {\n\t publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n\t return true;\n\t }\n\t return false;\n\t}\n\t\n\t/**\n\t * Publishes a registration name that is used to identify dispatched events and\n\t * can be used with `EventPluginHub.putListener` to register listeners.\n\t *\n\t * @param {string} registrationName Registration name to add.\n\t * @param {object} PluginModule Plugin publishing the event.\n\t * @private\n\t */\n\tfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n\t !!EventPluginRegistry.registrationNameModules[registrationName] ? false ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n\t EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n\t EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\t\n\t if (false) {\n\t var lowerCasedName = registrationName.toLowerCase();\n\t EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\t\n\t if (registrationName === 'onDoubleClick') {\n\t EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Registers plugins so that they can extract and dispatch events.\n\t *\n\t * @see {EventPluginHub}\n\t */\n\tvar EventPluginRegistry = {\n\t\n\t /**\n\t * Ordered list of injected plugins.\n\t */\n\t plugins: [],\n\t\n\t /**\n\t * Mapping from event name to dispatch config\n\t */\n\t eventNameDispatchConfigs: {},\n\t\n\t /**\n\t * Mapping from registration name to plugin module\n\t */\n\t registrationNameModules: {},\n\t\n\t /**\n\t * Mapping from registration name to event name\n\t */\n\t registrationNameDependencies: {},\n\t\n\t /**\n\t * Mapping from lowercase registration names to the properly cased version,\n\t * used to warn in the case of missing event handlers. Available\n\t * only in __DEV__.\n\t * @type {Object}\n\t */\n\t possibleRegistrationNames: false ? {} : null,\n\t // Trust the developer to only use possibleRegistrationNames in __DEV__\n\t\n\t /**\n\t * Injects an ordering of plugins (by plugin name). This allows the ordering\n\t * to be decoupled from injection of the actual plugins so that ordering is\n\t * always deterministic regardless of packaging, on-the-fly injection, etc.\n\t *\n\t * @param {array} InjectedEventPluginOrder\n\t * @internal\n\t * @see {EventPluginHub.injection.injectEventPluginOrder}\n\t */\n\t injectEventPluginOrder: function (injectedEventPluginOrder) {\n\t !!eventPluginOrder ? false ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n\t // Clone the ordering so it cannot be dynamically mutated.\n\t eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n\t recomputePluginOrdering();\n\t },\n\t\n\t /**\n\t * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n\t * in the ordering injected by `injectEventPluginOrder`.\n\t *\n\t * Plugins can be injected as part of page initialization or on-the-fly.\n\t *\n\t * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n\t * @internal\n\t * @see {EventPluginHub.injection.injectEventPluginsByName}\n\t */\n\t injectEventPluginsByName: function (injectedNamesToPlugins) {\n\t var isOrderingDirty = false;\n\t for (var pluginName in injectedNamesToPlugins) {\n\t if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n\t continue;\n\t }\n\t var pluginModule = injectedNamesToPlugins[pluginName];\n\t if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n\t !!namesToPlugins[pluginName] ? false ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n\t namesToPlugins[pluginName] = pluginModule;\n\t isOrderingDirty = true;\n\t }\n\t }\n\t if (isOrderingDirty) {\n\t recomputePluginOrdering();\n\t }\n\t },\n\t\n\t /**\n\t * Looks up the plugin for the supplied event.\n\t *\n\t * @param {object} event A synthetic event.\n\t * @return {?object} The plugin that created the supplied event.\n\t * @internal\n\t */\n\t getPluginModuleForEvent: function (event) {\n\t var dispatchConfig = event.dispatchConfig;\n\t if (dispatchConfig.registrationName) {\n\t return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n\t }\n\t if (dispatchConfig.phasedRegistrationNames !== undefined) {\n\t // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n\t // that it is not undefined.\n\t var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\t\n\t for (var phase in phasedRegistrationNames) {\n\t if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n\t continue;\n\t }\n\t var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n\t if (pluginModule) {\n\t return pluginModule;\n\t }\n\t }\n\t }\n\t return null;\n\t },\n\t\n\t /**\n\t * Exposed for unit testing.\n\t * @private\n\t */\n\t _resetEventPlugins: function () {\n\t eventPluginOrder = null;\n\t for (var pluginName in namesToPlugins) {\n\t if (namesToPlugins.hasOwnProperty(pluginName)) {\n\t delete namesToPlugins[pluginName];\n\t }\n\t }\n\t EventPluginRegistry.plugins.length = 0;\n\t\n\t var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n\t for (var eventName in eventNameDispatchConfigs) {\n\t if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n\t delete eventNameDispatchConfigs[eventName];\n\t }\n\t }\n\t\n\t var registrationNameModules = EventPluginRegistry.registrationNameModules;\n\t for (var registrationName in registrationNameModules) {\n\t if (registrationNameModules.hasOwnProperty(registrationName)) {\n\t delete registrationNameModules[registrationName];\n\t }\n\t }\n\t\n\t if (false) {\n\t var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n\t for (var lowerCasedName in possibleRegistrationNames) {\n\t if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n\t delete possibleRegistrationNames[lowerCasedName];\n\t }\n\t }\n\t }\n\t }\n\t\n\t};\n\t\n\tmodule.exports = EventPluginRegistry;\n\n/***/ },\n/* 75 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar ReactErrorUtils = __webpack_require__(79);\n\t\n\tvar invariant = __webpack_require__(3);\n\tvar warning = __webpack_require__(4);\n\t\n\t/**\n\t * Injected dependencies:\n\t */\n\t\n\t/**\n\t * - `ComponentTree`: [required] Module that can convert between React instances\n\t * and actual node references.\n\t */\n\tvar ComponentTree;\n\tvar TreeTraversal;\n\tvar injection = {\n\t injectComponentTree: function (Injected) {\n\t ComponentTree = Injected;\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n\t }\n\t },\n\t injectTreeTraversal: function (Injected) {\n\t TreeTraversal = Injected;\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n\t }\n\t }\n\t};\n\t\n\tfunction isEndish(topLevelType) {\n\t return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n\t}\n\t\n\tfunction isMoveish(topLevelType) {\n\t return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n\t}\n\tfunction isStartish(topLevelType) {\n\t return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n\t}\n\t\n\tvar validateEventDispatches;\n\tif (false) {\n\t validateEventDispatches = function (event) {\n\t var dispatchListeners = event._dispatchListeners;\n\t var dispatchInstances = event._dispatchInstances;\n\t\n\t var listenersIsArr = Array.isArray(dispatchListeners);\n\t var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\t\n\t var instancesIsArr = Array.isArray(dispatchInstances);\n\t var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\t\n\t process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n\t };\n\t}\n\t\n\t/**\n\t * Dispatch the event to the listener.\n\t * @param {SyntheticEvent} event SyntheticEvent to handle\n\t * @param {boolean} simulated If the event is simulated (changes exn behavior)\n\t * @param {function} listener Application-level callback\n\t * @param {*} inst Internal component instance\n\t */\n\tfunction executeDispatch(event, simulated, listener, inst) {\n\t var type = event.type || 'unknown-event';\n\t event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n\t if (simulated) {\n\t ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n\t } else {\n\t ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n\t }\n\t event.currentTarget = null;\n\t}\n\t\n\t/**\n\t * Standard/simple iteration through an event's collected dispatches.\n\t */\n\tfunction executeDispatchesInOrder(event, simulated) {\n\t var dispatchListeners = event._dispatchListeners;\n\t var dispatchInstances = event._dispatchInstances;\n\t if (false) {\n\t validateEventDispatches(event);\n\t }\n\t if (Array.isArray(dispatchListeners)) {\n\t for (var i = 0; i < dispatchListeners.length; i++) {\n\t if (event.isPropagationStopped()) {\n\t break;\n\t }\n\t // Listeners and Instances are two parallel arrays that are always in sync.\n\t executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n\t }\n\t } else if (dispatchListeners) {\n\t executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n\t }\n\t event._dispatchListeners = null;\n\t event._dispatchInstances = null;\n\t}\n\t\n\t/**\n\t * Standard/simple iteration through an event's collected dispatches, but stops\n\t * at the first dispatch execution returning true, and returns that id.\n\t *\n\t * @return {?string} id of the first dispatch execution who's listener returns\n\t * true, or null if no listener returned true.\n\t */\n\tfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n\t var dispatchListeners = event._dispatchListeners;\n\t var dispatchInstances = event._dispatchInstances;\n\t if (false) {\n\t validateEventDispatches(event);\n\t }\n\t if (Array.isArray(dispatchListeners)) {\n\t for (var i = 0; i < dispatchListeners.length; i++) {\n\t if (event.isPropagationStopped()) {\n\t break;\n\t }\n\t // Listeners and Instances are two parallel arrays that are always in sync.\n\t if (dispatchListeners[i](event, dispatchInstances[i])) {\n\t return dispatchInstances[i];\n\t }\n\t }\n\t } else if (dispatchListeners) {\n\t if (dispatchListeners(event, dispatchInstances)) {\n\t return dispatchInstances;\n\t }\n\t }\n\t return null;\n\t}\n\t\n\t/**\n\t * @see executeDispatchesInOrderStopAtTrueImpl\n\t */\n\tfunction executeDispatchesInOrderStopAtTrue(event) {\n\t var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n\t event._dispatchInstances = null;\n\t event._dispatchListeners = null;\n\t return ret;\n\t}\n\t\n\t/**\n\t * Execution of a \"direct\" dispatch - there must be at most one dispatch\n\t * accumulated on the event or it is considered an error. It doesn't really make\n\t * sense for an event with multiple dispatches (bubbled) to keep track of the\n\t * return values at each dispatch execution, but it does tend to make sense when\n\t * dealing with \"direct\" dispatches.\n\t *\n\t * @return {*} The return value of executing the single dispatch.\n\t */\n\tfunction executeDirectDispatch(event) {\n\t if (false) {\n\t validateEventDispatches(event);\n\t }\n\t var dispatchListener = event._dispatchListeners;\n\t var dispatchInstance = event._dispatchInstances;\n\t !!Array.isArray(dispatchListener) ? false ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n\t event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n\t var res = dispatchListener ? dispatchListener(event) : null;\n\t event.currentTarget = null;\n\t event._dispatchListeners = null;\n\t event._dispatchInstances = null;\n\t return res;\n\t}\n\t\n\t/**\n\t * @param {SyntheticEvent} event\n\t * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n\t */\n\tfunction hasDispatches(event) {\n\t return !!event._dispatchListeners;\n\t}\n\t\n\t/**\n\t * General utilities that are useful in creating custom Event Plugins.\n\t */\n\tvar EventPluginUtils = {\n\t isEndish: isEndish,\n\t isMoveish: isMoveish,\n\t isStartish: isStartish,\n\t\n\t executeDirectDispatch: executeDirectDispatch,\n\t executeDispatchesInOrder: executeDispatchesInOrder,\n\t executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n\t hasDispatches: hasDispatches,\n\t\n\t getInstanceFromNode: function (node) {\n\t return ComponentTree.getInstanceFromNode(node);\n\t },\n\t getNodeFromInstance: function (node) {\n\t return ComponentTree.getNodeFromInstance(node);\n\t },\n\t isAncestor: function (a, b) {\n\t return TreeTraversal.isAncestor(a, b);\n\t },\n\t getLowestCommonAncestor: function (a, b) {\n\t return TreeTraversal.getLowestCommonAncestor(a, b);\n\t },\n\t getParentInstance: function (inst) {\n\t return TreeTraversal.getParentInstance(inst);\n\t },\n\t traverseTwoPhase: function (target, fn, arg) {\n\t return TreeTraversal.traverseTwoPhase(target, fn, arg);\n\t },\n\t traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n\t return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n\t },\n\t\n\t injection: injection\n\t};\n\t\n\tmodule.exports = EventPluginUtils;\n\n/***/ },\n/* 76 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Escape and wrap key so it is safe to use as a reactid\n\t *\n\t * @param {string} key to be escaped.\n\t * @return {string} the escaped key.\n\t */\n\t\n\tfunction escape(key) {\n\t var escapeRegex = /[=:]/g;\n\t var escaperLookup = {\n\t '=': '=0',\n\t ':': '=2'\n\t };\n\t var escapedString = ('' + key).replace(escapeRegex, function (match) {\n\t return escaperLookup[match];\n\t });\n\t\n\t return '$' + escapedString;\n\t}\n\t\n\t/**\n\t * Unescape and unwrap key for human-readable display\n\t *\n\t * @param {string} key to unescape.\n\t * @return {string} the unescaped key.\n\t */\n\tfunction unescape(key) {\n\t var unescapeRegex = /(=0|=2)/g;\n\t var unescaperLookup = {\n\t '=0': '=',\n\t '=2': ':'\n\t };\n\t var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\t\n\t return ('' + keySubstring).replace(unescapeRegex, function (match) {\n\t return unescaperLookup[match];\n\t });\n\t}\n\t\n\tvar KeyEscapeUtils = {\n\t escape: escape,\n\t unescape: unescape\n\t};\n\t\n\tmodule.exports = KeyEscapeUtils;\n\n/***/ },\n/* 77 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar React = __webpack_require__(36);\n\tvar ReactPropTypesSecret = __webpack_require__(309);\n\t\n\tvar invariant = __webpack_require__(3);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar hasReadOnlyValue = {\n\t 'button': true,\n\t 'checkbox': true,\n\t 'image': true,\n\t 'hidden': true,\n\t 'radio': true,\n\t 'reset': true,\n\t 'submit': true\n\t};\n\t\n\tfunction _assertSingleLink(inputProps) {\n\t !(inputProps.checkedLink == null || inputProps.valueLink == null) ? false ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n\t}\n\tfunction _assertValueLink(inputProps) {\n\t _assertSingleLink(inputProps);\n\t !(inputProps.value == null && inputProps.onChange == null) ? false ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n\t}\n\t\n\tfunction _assertCheckedLink(inputProps) {\n\t _assertSingleLink(inputProps);\n\t !(inputProps.checked == null && inputProps.onChange == null) ? false ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n\t}\n\t\n\tvar propTypes = {\n\t value: function (props, propName, componentName) {\n\t if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n\t return null;\n\t }\n\t return 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`.');\n\t },\n\t checked: function (props, propName, componentName) {\n\t if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n\t return null;\n\t }\n\t return 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`.');\n\t },\n\t onChange: React.PropTypes.func\n\t};\n\t\n\tvar loggedTypeFailures = {};\n\tfunction getDeclarationErrorAddendum(owner) {\n\t if (owner) {\n\t var name = owner.getName();\n\t if (name) {\n\t return ' Check the render method of `' + name + '`.';\n\t }\n\t }\n\t return '';\n\t}\n\t\n\t/**\n\t * Provide a linked `value` attribute for controlled forms. You should not use\n\t * this outside of the ReactDOM controlled form components.\n\t */\n\tvar LinkedValueUtils = {\n\t checkPropTypes: function (tagName, props, owner) {\n\t for (var propName in propTypes) {\n\t if (propTypes.hasOwnProperty(propName)) {\n\t var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n\t }\n\t if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n\t // Only monitor this failure once because there tends to be a lot of the\n\t // same error.\n\t loggedTypeFailures[error.message] = true;\n\t\n\t var addendum = getDeclarationErrorAddendum(owner);\n\t false ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n\t }\n\t }\n\t },\n\t\n\t /**\n\t * @param {object} inputProps Props for form component\n\t * @return {*} current value of the input either from value prop or link.\n\t */\n\t getValue: function (inputProps) {\n\t if (inputProps.valueLink) {\n\t _assertValueLink(inputProps);\n\t return inputProps.valueLink.value;\n\t }\n\t return inputProps.value;\n\t },\n\t\n\t /**\n\t * @param {object} inputProps Props for form component\n\t * @return {*} current checked status of the input either from checked prop\n\t * or link.\n\t */\n\t getChecked: function (inputProps) {\n\t if (inputProps.checkedLink) {\n\t _assertCheckedLink(inputProps);\n\t return inputProps.checkedLink.value;\n\t }\n\t return inputProps.checked;\n\t },\n\t\n\t /**\n\t * @param {object} inputProps Props for form component\n\t * @param {SyntheticEvent} event change event to handle\n\t */\n\t executeOnChange: function (inputProps, event) {\n\t if (inputProps.valueLink) {\n\t _assertValueLink(inputProps);\n\t return inputProps.valueLink.requestChange(event.target.value);\n\t } else if (inputProps.checkedLink) {\n\t _assertCheckedLink(inputProps);\n\t return inputProps.checkedLink.requestChange(event.target.checked);\n\t } else if (inputProps.onChange) {\n\t return inputProps.onChange.call(undefined, event);\n\t }\n\t }\n\t};\n\t\n\tmodule.exports = LinkedValueUtils;\n\n/***/ },\n/* 78 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\tvar injected = false;\n\t\n\tvar ReactComponentEnvironment = {\n\t\n\t /**\n\t * Optionally injectable hook for swapping out mount images in the middle of\n\t * the tree.\n\t */\n\t replaceNodeWithMarkup: null,\n\t\n\t /**\n\t * Optionally injectable hook for processing a queue of child updates. Will\n\t * later move into MultiChildComponents.\n\t */\n\t processChildrenUpdates: null,\n\t\n\t injection: {\n\t injectEnvironment: function (environment) {\n\t !!injected ? false ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n\t ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n\t ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n\t injected = true;\n\t }\n\t }\n\t\n\t};\n\t\n\tmodule.exports = ReactComponentEnvironment;\n\n/***/ },\n/* 79 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar caughtError = null;\n\t\n\t/**\n\t * Call a function while guarding against errors that happens within it.\n\t *\n\t * @param {String} name of the guard to use for logging or debugging\n\t * @param {Function} func The function to invoke\n\t * @param {*} a First argument\n\t * @param {*} b Second argument\n\t */\n\tfunction invokeGuardedCallback(name, func, a) {\n\t try {\n\t func(a);\n\t } catch (x) {\n\t if (caughtError === null) {\n\t caughtError = x;\n\t }\n\t }\n\t}\n\t\n\tvar ReactErrorUtils = {\n\t invokeGuardedCallback: invokeGuardedCallback,\n\t\n\t /**\n\t * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n\t * handler are sure to be rethrown by rethrowCaughtError.\n\t */\n\t invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\t\n\t /**\n\t * During execution of guarded functions we will capture the first error which\n\t * we will rethrow to be handled by the top level error handler.\n\t */\n\t rethrowCaughtError: function () {\n\t if (caughtError) {\n\t var error = caughtError;\n\t caughtError = null;\n\t throw error;\n\t }\n\t }\n\t};\n\t\n\tif (false) {\n\t /**\n\t * To help development we can get better devtools integration by simulating a\n\t * real browser event.\n\t */\n\t if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n\t var fakeNode = document.createElement('react');\n\t ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n\t var boundFunc = func.bind(null, a);\n\t var evtType = 'react-' + name;\n\t fakeNode.addEventListener(evtType, boundFunc, false);\n\t var evt = document.createEvent('Event');\n\t // $FlowFixMe https://github.com/facebook/flow/issues/2336\n\t evt.initEvent(evtType, false, false);\n\t fakeNode.dispatchEvent(evt);\n\t fakeNode.removeEventListener(evtType, boundFunc, false);\n\t };\n\t }\n\t}\n\t\n\tmodule.exports = ReactErrorUtils;\n\n/***/ },\n/* 80 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar ReactCurrentOwner = __webpack_require__(21);\n\tvar ReactInstanceMap = __webpack_require__(42);\n\tvar ReactInstrumentation = __webpack_require__(18);\n\tvar ReactUpdates = __webpack_require__(19);\n\t\n\tvar invariant = __webpack_require__(3);\n\tvar warning = __webpack_require__(4);\n\t\n\tfunction enqueueUpdate(internalInstance) {\n\t ReactUpdates.enqueueUpdate(internalInstance);\n\t}\n\t\n\tfunction formatUnexpectedArgument(arg) {\n\t var type = typeof arg;\n\t if (type !== 'object') {\n\t return type;\n\t }\n\t var displayName = arg.constructor && arg.constructor.name || type;\n\t var keys = Object.keys(arg);\n\t if (keys.length > 0 && keys.length < 20) {\n\t return displayName + ' (keys: ' + keys.join(', ') + ')';\n\t }\n\t return displayName;\n\t}\n\t\n\tfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n\t var internalInstance = ReactInstanceMap.get(publicInstance);\n\t if (!internalInstance) {\n\t if (false) {\n\t var ctor = publicInstance.constructor;\n\t // Only warn when we have a callerName. Otherwise we should be silent.\n\t // We're probably calling from enqueueCallback. We don't want to warn\n\t // there because we already warned for the corresponding lifecycle method.\n\t process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n\t }\n\t return null;\n\t }\n\t\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + 'within `render` or another component\\'s constructor). Render methods ' + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;\n\t }\n\t\n\t return internalInstance;\n\t}\n\t\n\t/**\n\t * ReactUpdateQueue allows for state updates to be scheduled into a later\n\t * reconciliation step.\n\t */\n\tvar ReactUpdateQueue = {\n\t\n\t /**\n\t * Checks whether or not this composite component is mounted.\n\t * @param {ReactClass} publicInstance The instance we want to test.\n\t * @return {boolean} True if mounted, false otherwise.\n\t * @protected\n\t * @final\n\t */\n\t isMounted: function (publicInstance) {\n\t if (false) {\n\t var owner = ReactCurrentOwner.current;\n\t if (owner !== null) {\n\t process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n\t owner._warnedAboutRefsInRender = true;\n\t }\n\t }\n\t var internalInstance = ReactInstanceMap.get(publicInstance);\n\t if (internalInstance) {\n\t // During componentWillMount and render this will still be null but after\n\t // that will always render to something. At least for now. So we can use\n\t // this hack.\n\t return !!internalInstance._renderedComponent;\n\t } else {\n\t return false;\n\t }\n\t },\n\t\n\t /**\n\t * Enqueue a callback that will be executed after all the pending updates\n\t * have processed.\n\t *\n\t * @param {ReactClass} publicInstance The instance to use as `this` context.\n\t * @param {?function} callback Called after state is updated.\n\t * @param {string} callerName Name of the calling function in the public API.\n\t * @internal\n\t */\n\t enqueueCallback: function (publicInstance, callback, callerName) {\n\t ReactUpdateQueue.validateCallback(callback, callerName);\n\t var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\t\n\t // Previously we would throw an error if we didn't have an internal\n\t // instance. Since we want to make it a no-op instead, we mirror the same\n\t // behavior we have in other enqueue* methods.\n\t // We also need to ignore callbacks in componentWillMount. See\n\t // enqueueUpdates.\n\t if (!internalInstance) {\n\t return null;\n\t }\n\t\n\t if (internalInstance._pendingCallbacks) {\n\t internalInstance._pendingCallbacks.push(callback);\n\t } else {\n\t internalInstance._pendingCallbacks = [callback];\n\t }\n\t // TODO: The callback here is ignored when setState is called from\n\t // componentWillMount. Either fix it or disallow doing so completely in\n\t // favor of getInitialState. Alternatively, we can disallow\n\t // componentWillMount during server-side rendering.\n\t enqueueUpdate(internalInstance);\n\t },\n\t\n\t enqueueCallbackInternal: function (internalInstance, callback) {\n\t if (internalInstance._pendingCallbacks) {\n\t internalInstance._pendingCallbacks.push(callback);\n\t } else {\n\t internalInstance._pendingCallbacks = [callback];\n\t }\n\t enqueueUpdate(internalInstance);\n\t },\n\t\n\t /**\n\t * Forces an update. This should only be invoked when it is known with\n\t * certainty that we are **not** in a DOM transaction.\n\t *\n\t * You may want to call this when you know that some deeper aspect of the\n\t * component's state has changed but `setState` was not called.\n\t *\n\t * This will not invoke `shouldComponentUpdate`, but it will invoke\n\t * `componentWillUpdate` and `componentDidUpdate`.\n\t *\n\t * @param {ReactClass} publicInstance The instance that should rerender.\n\t * @internal\n\t */\n\t enqueueForceUpdate: function (publicInstance) {\n\t var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\t\n\t if (!internalInstance) {\n\t return;\n\t }\n\t\n\t internalInstance._pendingForceUpdate = true;\n\t\n\t enqueueUpdate(internalInstance);\n\t },\n\t\n\t /**\n\t * Replaces all of the state. Always use this or `setState` to mutate state.\n\t * You should treat `this.state` as immutable.\n\t *\n\t * There is no guarantee that `this.state` will be immediately updated, so\n\t * accessing `this.state` after calling this method may return the old value.\n\t *\n\t * @param {ReactClass} publicInstance The instance that should rerender.\n\t * @param {object} completeState Next state.\n\t * @internal\n\t */\n\t enqueueReplaceState: function (publicInstance, completeState) {\n\t var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\t\n\t if (!internalInstance) {\n\t return;\n\t }\n\t\n\t internalInstance._pendingStateQueue = [completeState];\n\t internalInstance._pendingReplaceState = true;\n\t\n\t enqueueUpdate(internalInstance);\n\t },\n\t\n\t /**\n\t * Sets a subset of the state. This only exists because _pendingState is\n\t * internal. This provides a merging strategy that is not available to deep\n\t * properties which is confusing. TODO: Expose pendingState or don't use it\n\t * during the merge.\n\t *\n\t * @param {ReactClass} publicInstance The instance that should rerender.\n\t * @param {object} partialState Next partial state to be merged with state.\n\t * @internal\n\t */\n\t enqueueSetState: function (publicInstance, partialState) {\n\t if (false) {\n\t ReactInstrumentation.debugTool.onSetState();\n\t process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n\t }\n\t\n\t var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\t\n\t if (!internalInstance) {\n\t return;\n\t }\n\t\n\t var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n\t queue.push(partialState);\n\t\n\t enqueueUpdate(internalInstance);\n\t },\n\t\n\t enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n\t internalInstance._pendingElement = nextElement;\n\t // TODO: introduce _pendingContext instead of setting it directly.\n\t internalInstance._context = nextContext;\n\t enqueueUpdate(internalInstance);\n\t },\n\t\n\t validateCallback: function (callback, callerName) {\n\t !(!callback || typeof callback === 'function') ? false ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n\t }\n\t\n\t};\n\t\n\tmodule.exports = ReactUpdateQueue;\n\n/***/ },\n/* 81 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t/* globals MSApp */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Create a function which has 'unsafe' privileges (required by windows8 apps)\n\t */\n\t\n\tvar createMicrosoftUnsafeLocalFunction = function (func) {\n\t if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n\t return function (arg0, arg1, arg2, arg3) {\n\t MSApp.execUnsafeLocalFunction(function () {\n\t return func(arg0, arg1, arg2, arg3);\n\t });\n\t };\n\t } else {\n\t return func;\n\t }\n\t};\n\t\n\tmodule.exports = createMicrosoftUnsafeLocalFunction;\n\n/***/ },\n/* 82 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * `charCode` represents the actual \"character code\" and is safe to use with\n\t * `String.fromCharCode`. As such, only keys that correspond to printable\n\t * characters produce a valid `charCode`, the only exception to this is Enter.\n\t * The Tab-key is considered non-printable and does not have a `charCode`,\n\t * presumably because it does not produce a tab-character in browsers.\n\t *\n\t * @param {object} nativeEvent Native browser event.\n\t * @return {number} Normalized `charCode` property.\n\t */\n\t\n\tfunction getEventCharCode(nativeEvent) {\n\t var charCode;\n\t var keyCode = nativeEvent.keyCode;\n\t\n\t if ('charCode' in nativeEvent) {\n\t charCode = nativeEvent.charCode;\n\t\n\t // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n\t if (charCode === 0 && keyCode === 13) {\n\t charCode = 13;\n\t }\n\t } else {\n\t // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n\t charCode = keyCode;\n\t }\n\t\n\t // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n\t // Must not discard the (non-)printable Enter-key.\n\t if (charCode >= 32 || charCode === 13) {\n\t return charCode;\n\t }\n\t\n\t return 0;\n\t}\n\t\n\tmodule.exports = getEventCharCode;\n\n/***/ },\n/* 83 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Translation from modifier key to the associated property in the event.\n\t * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n\t */\n\t\n\tvar modifierKeyToProp = {\n\t 'Alt': 'altKey',\n\t 'Control': 'ctrlKey',\n\t 'Meta': 'metaKey',\n\t 'Shift': 'shiftKey'\n\t};\n\t\n\t// IE8 does not implement getModifierState so we simply map it to the only\n\t// modifier keys exposed by the event itself, does not support Lock-keys.\n\t// Currently, all major browsers except Chrome seems to support Lock-keys.\n\tfunction modifierStateGetter(keyArg) {\n\t var syntheticEvent = this;\n\t var nativeEvent = syntheticEvent.nativeEvent;\n\t if (nativeEvent.getModifierState) {\n\t return nativeEvent.getModifierState(keyArg);\n\t }\n\t var keyProp = modifierKeyToProp[keyArg];\n\t return keyProp ? !!nativeEvent[keyProp] : false;\n\t}\n\t\n\tfunction getEventModifierState(nativeEvent) {\n\t return modifierStateGetter;\n\t}\n\t\n\tmodule.exports = getEventModifierState;\n\n/***/ },\n/* 84 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Gets the target node from a native browser event by accounting for\n\t * inconsistencies in browser DOM APIs.\n\t *\n\t * @param {object} nativeEvent Native browser event.\n\t * @return {DOMEventTarget} Target node.\n\t */\n\t\n\tfunction getEventTarget(nativeEvent) {\n\t var target = nativeEvent.target || nativeEvent.srcElement || window;\n\t\n\t // Normalize SVG element events #4963\n\t if (target.correspondingUseElement) {\n\t target = target.correspondingUseElement;\n\t }\n\t\n\t // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n\t // @see http://www.quirksmode.org/js/events_properties.html\n\t return target.nodeType === 3 ? target.parentNode : target;\n\t}\n\t\n\tmodule.exports = getEventTarget;\n\n/***/ },\n/* 85 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\t\n\tvar useHasFeature;\n\tif (ExecutionEnvironment.canUseDOM) {\n\t useHasFeature = document.implementation && document.implementation.hasFeature &&\n\t // always returns true in newer browsers as per the standard.\n\t // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n\t document.implementation.hasFeature('', '') !== true;\n\t}\n\t\n\t/**\n\t * Checks if an event is supported in the current execution environment.\n\t *\n\t * NOTE: This will not work correctly for non-generic events such as `change`,\n\t * `reset`, `load`, `error`, and `select`.\n\t *\n\t * Borrows from Modernizr.\n\t *\n\t * @param {string} eventNameSuffix Event name, e.g. \"click\".\n\t * @param {?boolean} capture Check if the capture phase is supported.\n\t * @return {boolean} True if the event is supported.\n\t * @internal\n\t * @license Modernizr 3.0.0pre (Custom Build) | MIT\n\t */\n\tfunction isEventSupported(eventNameSuffix, capture) {\n\t if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n\t return false;\n\t }\n\t\n\t var eventName = 'on' + eventNameSuffix;\n\t var isSupported = eventName in document;\n\t\n\t if (!isSupported) {\n\t var element = document.createElement('div');\n\t element.setAttribute(eventName, 'return;');\n\t isSupported = typeof element[eventName] === 'function';\n\t }\n\t\n\t if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n\t // This is the only way to test support for the `wheel` event in IE9+.\n\t isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n\t }\n\t\n\t return isSupported;\n\t}\n\t\n\tmodule.exports = isEventSupported;\n\n/***/ },\n/* 86 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Given a `prevElement` and `nextElement`, determines if the existing\n\t * instance should be updated as opposed to being destroyed or replaced by a new\n\t * instance. Both arguments are elements. This ensures that this logic can\n\t * operate on stateless trees without any backing instance.\n\t *\n\t * @param {?object} prevElement\n\t * @param {?object} nextElement\n\t * @return {boolean} True if the existing instance should be updated.\n\t * @protected\n\t */\n\t\n\tfunction shouldUpdateReactComponent(prevElement, nextElement) {\n\t var prevEmpty = prevElement === null || prevElement === false;\n\t var nextEmpty = nextElement === null || nextElement === false;\n\t if (prevEmpty || nextEmpty) {\n\t return prevEmpty === nextEmpty;\n\t }\n\t\n\t var prevType = typeof prevElement;\n\t var nextType = typeof nextElement;\n\t if (prevType === 'string' || prevType === 'number') {\n\t return nextType === 'string' || nextType === 'number';\n\t } else {\n\t return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n\t }\n\t}\n\t\n\tmodule.exports = shouldUpdateReactComponent;\n\n/***/ },\n/* 87 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar emptyFunction = __webpack_require__(16);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar validateDOMNesting = emptyFunction;\n\t\n\tif (false) {\n\t // This validation code was written based on the HTML5 parsing spec:\n\t // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n\t //\n\t // Note: this does not catch all invalid nesting, nor does it try to (as it's\n\t // not clear what practical benefit doing so provides); instead, we warn only\n\t // for cases where the parser will give a parse tree differing from what React\n\t // intended. For example,
is invalid but we don't warn\n\t // because it still parses correctly; we do warn for other cases like nested\n\t //

tags where the beginning of the second element implicitly closes the\n\t // first, causing a confusing mess.\n\t\n\t // https://html.spec.whatwg.org/multipage/syntax.html#special\n\t var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];\n\t\n\t // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n\t var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\t\n\t // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n\t // TODO: Distinguish by namespace here -- for , including it here\n\t // errs on the side of fewer warnings\n\t 'foreignObject', 'desc', 'title'];\n\t\n\t // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n\t var buttonScopeTags = inScopeTags.concat(['button']);\n\t\n\t // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n\t var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\t\n\t var emptyAncestorInfo = {\n\t current: null,\n\t\n\t formTag: null,\n\t aTagInScope: null,\n\t buttonTagInScope: null,\n\t nobrTagInScope: null,\n\t pTagInButtonScope: null,\n\t\n\t listItemTagAutoclosing: null,\n\t dlItemTagAutoclosing: null\n\t };\n\t\n\t var updatedAncestorInfo = function (oldInfo, tag, instance) {\n\t var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n\t var info = { tag: tag, instance: instance };\n\t\n\t if (inScopeTags.indexOf(tag) !== -1) {\n\t ancestorInfo.aTagInScope = null;\n\t ancestorInfo.buttonTagInScope = null;\n\t ancestorInfo.nobrTagInScope = null;\n\t }\n\t if (buttonScopeTags.indexOf(tag) !== -1) {\n\t ancestorInfo.pTagInButtonScope = null;\n\t }\n\t\n\t // See rules for 'li', 'dd', 'dt' start tags in\n\t // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n\t if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n\t ancestorInfo.listItemTagAutoclosing = null;\n\t ancestorInfo.dlItemTagAutoclosing = null;\n\t }\n\t\n\t ancestorInfo.current = info;\n\t\n\t if (tag === 'form') {\n\t ancestorInfo.formTag = info;\n\t }\n\t if (tag === 'a') {\n\t ancestorInfo.aTagInScope = info;\n\t }\n\t if (tag === 'button') {\n\t ancestorInfo.buttonTagInScope = info;\n\t }\n\t if (tag === 'nobr') {\n\t ancestorInfo.nobrTagInScope = info;\n\t }\n\t if (tag === 'p') {\n\t ancestorInfo.pTagInButtonScope = info;\n\t }\n\t if (tag === 'li') {\n\t ancestorInfo.listItemTagAutoclosing = info;\n\t }\n\t if (tag === 'dd' || tag === 'dt') {\n\t ancestorInfo.dlItemTagAutoclosing = info;\n\t }\n\t\n\t return ancestorInfo;\n\t };\n\t\n\t /**\n\t * Returns whether\n\t */\n\t var isTagValidWithParent = function (tag, parentTag) {\n\t // First, let's check if we're in an unusual parsing mode...\n\t switch (parentTag) {\n\t // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n\t case 'select':\n\t return tag === 'option' || tag === 'optgroup' || tag === '#text';\n\t case 'optgroup':\n\t return tag === 'option' || tag === '#text';\n\t // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n\t // but\n\t case 'option':\n\t return tag === '#text';\n\t\n\t // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n\t // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n\t // No special behavior since these rules fall back to \"in body\" mode for\n\t // all except special table nodes which cause bad parsing behavior anyway.\n\t\n\t // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n\t case 'tr':\n\t return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n\t\n\t // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n\t case 'tbody':\n\t case 'thead':\n\t case 'tfoot':\n\t return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n\t\n\t // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n\t case 'colgroup':\n\t return tag === 'col' || tag === 'template';\n\t\n\t // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n\t case 'table':\n\t return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n\t\n\t // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n\t case 'head':\n\t return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n\t\n\t // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n\t case 'html':\n\t return tag === 'head' || tag === 'body';\n\t case '#document':\n\t return tag === 'html';\n\t }\n\t\n\t // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n\t // where the parsing rules cause implicit opens or closes to be added.\n\t // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n\t switch (tag) {\n\t case 'h1':\n\t case 'h2':\n\t case 'h3':\n\t case 'h4':\n\t case 'h5':\n\t case 'h6':\n\t return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\t\n\t case 'rp':\n\t case 'rt':\n\t return impliedEndTags.indexOf(parentTag) === -1;\n\t\n\t case 'body':\n\t case 'caption':\n\t case 'col':\n\t case 'colgroup':\n\t case 'frame':\n\t case 'head':\n\t case 'html':\n\t case 'tbody':\n\t case 'td':\n\t case 'tfoot':\n\t case 'th':\n\t case 'thead':\n\t case 'tr':\n\t // These tags are only valid with a few parents that have special child\n\t // parsing rules -- if we're down here, then none of those matched and\n\t // so we allow it only if we don't know what the parent is, as all other\n\t // cases are invalid.\n\t return parentTag == null;\n\t }\n\t\n\t return true;\n\t };\n\t\n\t /**\n\t * Returns whether\n\t */\n\t var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n\t switch (tag) {\n\t case 'address':\n\t case 'article':\n\t case 'aside':\n\t case 'blockquote':\n\t case 'center':\n\t case 'details':\n\t case 'dialog':\n\t case 'dir':\n\t case 'div':\n\t case 'dl':\n\t case 'fieldset':\n\t case 'figcaption':\n\t case 'figure':\n\t case 'footer':\n\t case 'header':\n\t case 'hgroup':\n\t case 'main':\n\t case 'menu':\n\t case 'nav':\n\t case 'ol':\n\t case 'p':\n\t case 'section':\n\t case 'summary':\n\t case 'ul':\n\t\n\t case 'pre':\n\t case 'listing':\n\t\n\t case 'table':\n\t\n\t case 'hr':\n\t\n\t case 'xmp':\n\t\n\t case 'h1':\n\t case 'h2':\n\t case 'h3':\n\t case 'h4':\n\t case 'h5':\n\t case 'h6':\n\t return ancestorInfo.pTagInButtonScope;\n\t\n\t case 'form':\n\t return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\t\n\t case 'li':\n\t return ancestorInfo.listItemTagAutoclosing;\n\t\n\t case 'dd':\n\t case 'dt':\n\t return ancestorInfo.dlItemTagAutoclosing;\n\t\n\t case 'button':\n\t return ancestorInfo.buttonTagInScope;\n\t\n\t case 'a':\n\t // Spec says something about storing a list of markers, but it sounds\n\t // equivalent to this check.\n\t return ancestorInfo.aTagInScope;\n\t\n\t case 'nobr':\n\t return ancestorInfo.nobrTagInScope;\n\t }\n\t\n\t return null;\n\t };\n\t\n\t /**\n\t * Given a ReactCompositeComponent instance, return a list of its recursive\n\t * owners, starting at the root and ending with the instance itself.\n\t */\n\t var findOwnerStack = function (instance) {\n\t if (!instance) {\n\t return [];\n\t }\n\t\n\t var stack = [];\n\t do {\n\t stack.push(instance);\n\t } while (instance = instance._currentElement._owner);\n\t stack.reverse();\n\t return stack;\n\t };\n\t\n\t var didWarn = {};\n\t\n\t validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n\t ancestorInfo = ancestorInfo || emptyAncestorInfo;\n\t var parentInfo = ancestorInfo.current;\n\t var parentTag = parentInfo && parentInfo.tag;\n\t\n\t if (childText != null) {\n\t process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n\t childTag = '#text';\n\t }\n\t\n\t var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n\t var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n\t var problematic = invalidParent || invalidAncestor;\n\t\n\t if (problematic) {\n\t var ancestorTag = problematic.tag;\n\t var ancestorInstance = problematic.instance;\n\t\n\t var childOwner = childInstance && childInstance._currentElement._owner;\n\t var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\t\n\t var childOwners = findOwnerStack(childOwner);\n\t var ancestorOwners = findOwnerStack(ancestorOwner);\n\t\n\t var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n\t var i;\n\t\n\t var deepestCommon = -1;\n\t for (i = 0; i < minStackLen; i++) {\n\t if (childOwners[i] === ancestorOwners[i]) {\n\t deepestCommon = i;\n\t } else {\n\t break;\n\t }\n\t }\n\t\n\t var UNKNOWN = '(unknown)';\n\t var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n\t return inst.getName() || UNKNOWN;\n\t });\n\t var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n\t return inst.getName() || UNKNOWN;\n\t });\n\t var ownerInfo = [].concat(\n\t // If the parent and child instances have a common owner ancestor, start\n\t // with that -- otherwise we just start with the parent's owners.\n\t deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n\t // If we're warning about an invalid (non-parent) ancestry, add '...'\n\t invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\t\n\t var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n\t if (didWarn[warnKey]) {\n\t return;\n\t }\n\t didWarn[warnKey] = true;\n\t\n\t var tagDisplayName = childTag;\n\t var whitespaceInfo = '';\n\t if (childTag === '#text') {\n\t if (/\\S/.test(childText)) {\n\t tagDisplayName = 'Text nodes';\n\t } else {\n\t tagDisplayName = 'Whitespace text nodes';\n\t whitespaceInfo = ' Make sure you don\\'t have any extra whitespace between tags on ' + 'each line of your source code.';\n\t }\n\t } else {\n\t tagDisplayName = '<' + childTag + '>';\n\t }\n\t\n\t if (invalidParent) {\n\t var info = '';\n\t if (ancestorTag === 'table' && childTag === 'tr') {\n\t info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n\t }\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n\t } else {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n\t }\n\t }\n\t };\n\t\n\t validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\t\n\t // For testing\n\t validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n\t ancestorInfo = ancestorInfo || emptyAncestorInfo;\n\t var parentInfo = ancestorInfo.current;\n\t var parentTag = parentInfo && parentInfo.tag;\n\t return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n\t };\n\t}\n\t\n\tmodule.exports = validateDOMNesting;\n\n/***/ },\n/* 88 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t accent: _react.PropTypes.bool,\n\t className: _react.PropTypes.string,\n\t colored: _react.PropTypes.bool,\n\t component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.func]),\n\t href: _react.PropTypes.string,\n\t primary: _react.PropTypes.bool,\n\t raised: _react.PropTypes.bool,\n\t ripple: _react.PropTypes.bool\n\t};\n\t\n\t// eslint-disable-next-line react/prefer-stateless-function\n\t\n\tvar Button = function (_React$Component) {\n\t _inherits(Button, _React$Component);\n\t\n\t function Button() {\n\t _classCallCheck(this, Button);\n\t\n\t return _possibleConstructorReturn(this, (Button.__proto__ || Object.getPrototypeOf(Button)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Button, [{\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t accent = _props.accent,\n\t className = _props.className,\n\t colored = _props.colored,\n\t primary = _props.primary,\n\t raised = _props.raised,\n\t ripple = _props.ripple,\n\t component = _props.component,\n\t href = _props.href,\n\t children = _props.children,\n\t otherProps = _objectWithoutProperties(_props, ['accent', 'className', 'colored', 'primary', 'raised', 'ripple', 'component', 'href', 'children']);\n\t\n\t var buttonClasses = (0, _classnames2.default)('mdl-button mdl-js-button', {\n\t 'mdl-js-ripple-effect': ripple,\n\t 'mdl-button--raised': raised,\n\t 'mdl-button--colored': colored,\n\t 'mdl-button--primary': primary,\n\t 'mdl-button--accent': accent\n\t }, className);\n\t\n\t return _react2.default.createElement(component || (href ? 'a' : 'button'), _extends({\n\t className: buttonClasses,\n\t href: href\n\t }, otherProps), children);\n\t }\n\t }]);\n\t\n\t return Button;\n\t}(_react2.default.Component);\n\t\n\tButton.propTypes = propTypes;\n\t\n\texports.default = (0, _mdlUpgrade2.default)(Button);\n\n/***/ },\n/* 89 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _basicClassCreator = __webpack_require__(33);\n\t\n\tvar _basicClassCreator2 = _interopRequireDefault(_basicClassCreator);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = (0, _basicClassCreator2.default)('Spacer', 'mdl-layout-spacer');\n\n/***/ },\n/* 90 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t activeTab: _react.PropTypes.number,\n\t className: _react.PropTypes.string,\n\t cssPrefix: _react.PropTypes.string.isRequired,\n\t onChange: _react.PropTypes.func\n\t};\n\t\n\tvar defaultProps = {\n\t activeTab: 0\n\t};\n\t\n\tvar TabBar = function (_React$Component) {\n\t _inherits(TabBar, _React$Component);\n\t\n\t function TabBar(props) {\n\t _classCallCheck(this, TabBar);\n\t\n\t var _this = _possibleConstructorReturn(this, (TabBar.__proto__ || Object.getPrototypeOf(TabBar)).call(this, props));\n\t\n\t _this.handleClickTab = _this.handleClickTab.bind(_this);\n\t return _this;\n\t }\n\t\n\t _createClass(TabBar, [{\n\t key: 'handleClickTab',\n\t value: function handleClickTab(tabId) {\n\t if (this.props.onChange) {\n\t this.props.onChange(tabId);\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props,\n\t activeTab = _props.activeTab,\n\t className = _props.className,\n\t cssPrefix = _props.cssPrefix,\n\t children = _props.children,\n\t otherProps = _objectWithoutProperties(_props, ['activeTab', 'className', 'cssPrefix', 'children']);\n\t\n\t var classes = (0, _classnames2.default)(_defineProperty({}, cssPrefix + '__tab-bar', true), className);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ className: classes }, otherProps),\n\t _react2.default.Children.map(children, function (child, tabId) {\n\t return _react2.default.cloneElement(child, {\n\t cssPrefix: cssPrefix,\n\t tabId: tabId,\n\t active: tabId === activeTab,\n\t onTabClick: _this2.handleClickTab\n\t });\n\t })\n\t );\n\t }\n\t }]);\n\t\n\t return TabBar;\n\t}(_react2.default.Component);\n\t\n\tTabBar.propTypes = propTypes;\n\tTabBar.defaultProps = defaultProps;\n\t\n\texports.default = TabBar;\n\n/***/ },\n/* 91 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _reactDom = __webpack_require__(13);\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar MDLComponent = function (_Component) {\n\t _inherits(MDLComponent, _Component);\n\t\n\t function MDLComponent() {\n\t _classCallCheck(this, MDLComponent);\n\t\n\t return _possibleConstructorReturn(this, (MDLComponent.__proto__ || Object.getPrototypeOf(MDLComponent)).apply(this, arguments));\n\t }\n\t\n\t _createClass(MDLComponent, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t if (this.props.recursive) {\n\t window.componentHandler.upgradeElements((0, _reactDom.findDOMNode)(this));\n\t } else {\n\t window.componentHandler.upgradeElement((0, _reactDom.findDOMNode)(this));\n\t }\n\t }\n\t }, {\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t window.componentHandler.downgradeElements((0, _reactDom.findDOMNode)(this));\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t return _react.Children.only(this.props.children);\n\t }\n\t }]);\n\t\n\t return MDLComponent;\n\t}(_react.Component);\n\t\n\texports.default = MDLComponent;\n\t\n\t\n\tMDLComponent.propTypes = {\n\t recursive: _react.PropTypes.bool\n\t};\n\n/***/ },\n/* 92 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\texports.loopAsync = loopAsync;\n\texports.mapAsync = mapAsync;\n\tfunction loopAsync(turns, work, callback) {\n\t var currentTurn = 0,\n\t isDone = false;\n\t var sync = false,\n\t hasNext = false,\n\t doneArgs = void 0;\n\t\n\t function done() {\n\t isDone = true;\n\t if (sync) {\n\t // Iterate instead of recursing if possible.\n\t doneArgs = [].concat(Array.prototype.slice.call(arguments));\n\t return;\n\t }\n\t\n\t callback.apply(this, arguments);\n\t }\n\t\n\t function next() {\n\t if (isDone) {\n\t return;\n\t }\n\t\n\t hasNext = true;\n\t if (sync) {\n\t // Iterate instead of recursing if possible.\n\t return;\n\t }\n\t\n\t sync = true;\n\t\n\t while (!isDone && currentTurn < turns && hasNext) {\n\t hasNext = false;\n\t work.call(this, currentTurn++, next, done);\n\t }\n\t\n\t sync = false;\n\t\n\t if (isDone) {\n\t // This means the loop finished synchronously.\n\t callback.apply(this, doneArgs);\n\t return;\n\t }\n\t\n\t if (currentTurn >= turns && hasNext) {\n\t isDone = true;\n\t callback();\n\t }\n\t }\n\t\n\t next();\n\t}\n\t\n\tfunction mapAsync(array, work, callback) {\n\t var length = array.length;\n\t var values = [];\n\t\n\t if (length === 0) return callback(null, values);\n\t\n\t var isDone = false,\n\t doneCount = 0;\n\t\n\t function done(index, error, value) {\n\t if (isDone) return;\n\t\n\t if (error) {\n\t isDone = true;\n\t callback(error);\n\t } else {\n\t values[index] = value;\n\t\n\t isDone = ++doneCount === length;\n\t\n\t if (isDone) callback(null, values);\n\t }\n\t }\n\t\n\t array.forEach(function (item, index) {\n\t work(item, index, function (error, value) {\n\t done(index, error, value);\n\t });\n\t });\n\t}\n\n/***/ },\n/* 93 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.ContextProvider = ContextProvider;\n\texports.ContextSubscriber = ContextSubscriber;\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\t// Works around issues with context updates failing to propagate.\n\t// Caveat: the context value is expected to never change its identity.\n\t// https://github.com/facebook/react/issues/2517\n\t// https://github.com/reactjs/react-router/issues/470\n\t\n\tvar contextProviderShape = _react.PropTypes.shape({\n\t subscribe: _react.PropTypes.func.isRequired,\n\t eventIndex: _react.PropTypes.number.isRequired\n\t});\n\t\n\tfunction makeContextName(name) {\n\t return '@@contextSubscriber/' + name;\n\t}\n\t\n\tfunction ContextProvider(name) {\n\t var _childContextTypes, _ref2;\n\t\n\t var contextName = makeContextName(name);\n\t var listenersKey = contextName + '/listeners';\n\t var eventIndexKey = contextName + '/eventIndex';\n\t var subscribeKey = contextName + '/subscribe';\n\t\n\t return _ref2 = {\n\t childContextTypes: (_childContextTypes = {}, _childContextTypes[contextName] = contextProviderShape.isRequired, _childContextTypes),\n\t\n\t getChildContext: function getChildContext() {\n\t var _ref;\n\t\n\t return _ref = {}, _ref[contextName] = {\n\t eventIndex: this[eventIndexKey],\n\t subscribe: this[subscribeKey]\n\t }, _ref;\n\t },\n\t componentWillMount: function componentWillMount() {\n\t this[listenersKey] = [];\n\t this[eventIndexKey] = 0;\n\t },\n\t componentWillReceiveProps: function componentWillReceiveProps() {\n\t this[eventIndexKey]++;\n\t },\n\t componentDidUpdate: function componentDidUpdate() {\n\t var _this = this;\n\t\n\t this[listenersKey].forEach(function (listener) {\n\t return listener(_this[eventIndexKey]);\n\t });\n\t }\n\t }, _ref2[subscribeKey] = function (listener) {\n\t var _this2 = this;\n\t\n\t // No need to immediately call listener here.\n\t this[listenersKey].push(listener);\n\t\n\t return function () {\n\t _this2[listenersKey] = _this2[listenersKey].filter(function (item) {\n\t return item !== listener;\n\t });\n\t };\n\t }, _ref2;\n\t}\n\t\n\tfunction ContextSubscriber(name) {\n\t var _contextTypes, _ref4;\n\t\n\t var contextName = makeContextName(name);\n\t var lastRenderedEventIndexKey = contextName + '/lastRenderedEventIndex';\n\t var handleContextUpdateKey = contextName + '/handleContextUpdate';\n\t var unsubscribeKey = contextName + '/unsubscribe';\n\t\n\t return _ref4 = {\n\t contextTypes: (_contextTypes = {}, _contextTypes[contextName] = contextProviderShape, _contextTypes),\n\t\n\t getInitialState: function getInitialState() {\n\t var _ref3;\n\t\n\t if (!this.context[contextName]) {\n\t return {};\n\t }\n\t\n\t return _ref3 = {}, _ref3[lastRenderedEventIndexKey] = this.context[contextName].eventIndex, _ref3;\n\t },\n\t componentDidMount: function componentDidMount() {\n\t if (!this.context[contextName]) {\n\t return;\n\t }\n\t\n\t this[unsubscribeKey] = this.context[contextName].subscribe(this[handleContextUpdateKey]);\n\t },\n\t componentWillReceiveProps: function componentWillReceiveProps() {\n\t var _setState;\n\t\n\t if (!this.context[contextName]) {\n\t return;\n\t }\n\t\n\t this.setState((_setState = {}, _setState[lastRenderedEventIndexKey] = this.context[contextName].eventIndex, _setState));\n\t },\n\t componentWillUnmount: function componentWillUnmount() {\n\t if (!this[unsubscribeKey]) {\n\t return;\n\t }\n\t\n\t this[unsubscribeKey]();\n\t this[unsubscribeKey] = null;\n\t }\n\t }, _ref4[handleContextUpdateKey] = function (eventIndex) {\n\t if (eventIndex !== this.state[lastRenderedEventIndexKey]) {\n\t var _setState2;\n\t\n\t this.setState((_setState2 = {}, _setState2[lastRenderedEventIndexKey] = eventIndex, _setState2));\n\t }\n\t }, _ref4;\n\t}\n\n/***/ },\n/* 94 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.locationShape = exports.routerShape = undefined;\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar func = _react.PropTypes.func,\n\t object = _react.PropTypes.object,\n\t shape = _react.PropTypes.shape,\n\t string = _react.PropTypes.string;\n\tvar routerShape = exports.routerShape = shape({\n\t push: func.isRequired,\n\t replace: func.isRequired,\n\t go: func.isRequired,\n\t goBack: func.isRequired,\n\t goForward: func.isRequired,\n\t setRouteLeaveHook: func.isRequired,\n\t isActive: func.isRequired\n\t});\n\t\n\tvar locationShape = exports.locationShape = shape({\n\t pathname: string.isRequired,\n\t search: string.isRequired,\n\t state: object,\n\t action: string.isRequired,\n\t key: string\n\t});\n\n/***/ },\n/* 95 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _getRouteParams = __webpack_require__(405);\n\t\n\tvar _getRouteParams2 = _interopRequireDefault(_getRouteParams);\n\t\n\tvar _ContextUtils = __webpack_require__(93);\n\t\n\tvar _RouteUtils = __webpack_require__(24);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _React$PropTypes = _react2.default.PropTypes,\n\t array = _React$PropTypes.array,\n\t func = _React$PropTypes.func,\n\t object = _React$PropTypes.object;\n\t\n\t/**\n\t * A <RouterContext> renders the component tree for a given router state\n\t * and sets the history object and the current location in context.\n\t */\n\t\n\tvar RouterContext = _react2.default.createClass({\n\t displayName: 'RouterContext',\n\t\n\t\n\t mixins: [(0, _ContextUtils.ContextProvider)('router')],\n\t\n\t propTypes: {\n\t router: object.isRequired,\n\t location: object.isRequired,\n\t routes: array.isRequired,\n\t params: object.isRequired,\n\t components: array.isRequired,\n\t createElement: func.isRequired\n\t },\n\t\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t createElement: _react2.default.createElement\n\t };\n\t },\n\t\n\t\n\t childContextTypes: {\n\t router: object.isRequired\n\t },\n\t\n\t getChildContext: function getChildContext() {\n\t return {\n\t router: this.props.router\n\t };\n\t },\n\t createElement: function createElement(component, props) {\n\t return component == null ? null : this.props.createElement(component, props);\n\t },\n\t render: function render() {\n\t var _this = this;\n\t\n\t var _props = this.props,\n\t location = _props.location,\n\t routes = _props.routes,\n\t params = _props.params,\n\t components = _props.components,\n\t router = _props.router;\n\t\n\t var element = null;\n\t\n\t if (components) {\n\t element = components.reduceRight(function (element, components, index) {\n\t if (components == null) return element; // Don't create new children; use the grandchildren.\n\t\n\t var route = routes[index];\n\t var routeParams = (0, _getRouteParams2.default)(route, params);\n\t var props = {\n\t location: location,\n\t params: params,\n\t route: route,\n\t router: router,\n\t routeParams: routeParams,\n\t routes: routes\n\t };\n\t\n\t if ((0, _RouteUtils.isReactChildren)(element)) {\n\t props.children = element;\n\t } else if (element) {\n\t for (var prop in element) {\n\t if (Object.prototype.hasOwnProperty.call(element, prop)) props[prop] = element[prop];\n\t }\n\t }\n\t\n\t if ((typeof components === 'undefined' ? 'undefined' : _typeof(components)) === 'object') {\n\t var elements = {};\n\t\n\t for (var key in components) {\n\t if (Object.prototype.hasOwnProperty.call(components, key)) {\n\t // Pass through the key as a prop to createElement to allow\n\t // custom createElement functions to know which named component\n\t // they're rendering, for e.g. matching up to fetched data.\n\t elements[key] = _this.createElement(components[key], _extends({\n\t key: key }, props));\n\t }\n\t }\n\t\n\t return elements;\n\t }\n\t\n\t return _this.createElement(components, props);\n\t }, element);\n\t }\n\t\n\t !(element === null || element === false || _react2.default.isValidElement(element)) ? false ? (0, _invariant2.default)(false, 'The root route must render a single element') : (0, _invariant2.default)(false) : void 0;\n\t\n\t return element;\n\t }\n\t});\n\t\n\texports.default = RouterContext;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 96 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(38);\n\t\n\tvar ReactNoopUpdateQueue = __webpack_require__(97);\n\t\n\tvar canDefineProperty = __webpack_require__(159);\n\tvar emptyObject = __webpack_require__(39);\n\tvar invariant = __webpack_require__(3);\n\tvar warning = __webpack_require__(4);\n\t\n\t/**\n\t * Base class helpers for the updating state of a component.\n\t */\n\tfunction ReactComponent(props, context, updater) {\n\t this.props = props;\n\t this.context = context;\n\t this.refs = emptyObject;\n\t // We initialize the default updater but the real one gets injected by the\n\t // renderer.\n\t this.updater = updater || ReactNoopUpdateQueue;\n\t}\n\t\n\tReactComponent.prototype.isReactComponent = {};\n\t\n\t/**\n\t * Sets a subset of the state. Always use this to mutate\n\t * state. You should treat `this.state` as immutable.\n\t *\n\t * There is no guarantee that `this.state` will be immediately updated, so\n\t * accessing `this.state` after calling this method may return the old value.\n\t *\n\t * There is no guarantee that calls to `setState` will run synchronously,\n\t * as they may eventually be batched together. You can provide an optional\n\t * callback that will be executed when the call to setState is actually\n\t * completed.\n\t *\n\t * When a function is provided to setState, it will be called at some point in\n\t * the future (not synchronously). It will be called with the up to date\n\t * component arguments (state, props, context). These values can be different\n\t * from this.* because your function may be called after receiveProps but before\n\t * shouldComponentUpdate, and this new state, props, and context will not yet be\n\t * assigned to this.\n\t *\n\t * @param {object|function} partialState Next partial state or function to\n\t * produce next partial state to be merged with current state.\n\t * @param {?function} callback Called after state is updated.\n\t * @final\n\t * @protected\n\t */\n\tReactComponent.prototype.setState = function (partialState, callback) {\n\t !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? false ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n\t this.updater.enqueueSetState(this, partialState);\n\t if (callback) {\n\t this.updater.enqueueCallback(this, callback, 'setState');\n\t }\n\t};\n\t\n\t/**\n\t * Forces an update. This should only be invoked when it is known with\n\t * certainty that we are **not** in a DOM transaction.\n\t *\n\t * You may want to call this when you know that some deeper aspect of the\n\t * component's state has changed but `setState` was not called.\n\t *\n\t * This will not invoke `shouldComponentUpdate`, but it will invoke\n\t * `componentWillUpdate` and `componentDidUpdate`.\n\t *\n\t * @param {?function} callback Called after update is complete.\n\t * @final\n\t * @protected\n\t */\n\tReactComponent.prototype.forceUpdate = function (callback) {\n\t this.updater.enqueueForceUpdate(this);\n\t if (callback) {\n\t this.updater.enqueueCallback(this, callback, 'forceUpdate');\n\t }\n\t};\n\t\n\t/**\n\t * Deprecated APIs. These APIs used to exist on classic React classes but since\n\t * we would like to deprecate them, we're not going to move them over to this\n\t * modern base class. Instead, we define a getter that warns if it's accessed.\n\t */\n\tif (false) {\n\t var deprecatedAPIs = {\n\t isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n\t replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n\t };\n\t var defineDeprecationWarning = function (methodName, info) {\n\t if (canDefineProperty) {\n\t Object.defineProperty(ReactComponent.prototype, methodName, {\n\t get: function () {\n\t process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;\n\t return undefined;\n\t }\n\t });\n\t }\n\t };\n\t for (var fnName in deprecatedAPIs) {\n\t if (deprecatedAPIs.hasOwnProperty(fnName)) {\n\t defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n\t }\n\t }\n\t}\n\t\n\tmodule.exports = ReactComponent;\n\n/***/ },\n/* 97 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar warning = __webpack_require__(4);\n\t\n\tfunction warnNoop(publicInstance, callerName) {\n\t if (false) {\n\t var constructor = publicInstance.constructor;\n\t process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n\t }\n\t}\n\t\n\t/**\n\t * This is the abstract API for an update queue.\n\t */\n\tvar ReactNoopUpdateQueue = {\n\t\n\t /**\n\t * Checks whether or not this composite component is mounted.\n\t * @param {ReactClass} publicInstance The instance we want to test.\n\t * @return {boolean} True if mounted, false otherwise.\n\t * @protected\n\t * @final\n\t */\n\t isMounted: function (publicInstance) {\n\t return false;\n\t },\n\t\n\t /**\n\t * Enqueue a callback that will be executed after all the pending updates\n\t * have processed.\n\t *\n\t * @param {ReactClass} publicInstance The instance to use as `this` context.\n\t * @param {?function} callback Called after state is updated.\n\t * @internal\n\t */\n\t enqueueCallback: function (publicInstance, callback) {},\n\t\n\t /**\n\t * Forces an update. This should only be invoked when it is known with\n\t * certainty that we are **not** in a DOM transaction.\n\t *\n\t * You may want to call this when you know that some deeper aspect of the\n\t * component's state has changed but `setState` was not called.\n\t *\n\t * This will not invoke `shouldComponentUpdate`, but it will invoke\n\t * `componentWillUpdate` and `componentDidUpdate`.\n\t *\n\t * @param {ReactClass} publicInstance The instance that should rerender.\n\t * @internal\n\t */\n\t enqueueForceUpdate: function (publicInstance) {\n\t warnNoop(publicInstance, 'forceUpdate');\n\t },\n\t\n\t /**\n\t * Replaces all of the state. Always use this or `setState` to mutate state.\n\t * You should treat `this.state` as immutable.\n\t *\n\t * There is no guarantee that `this.state` will be immediately updated, so\n\t * accessing `this.state` after calling this method may return the old value.\n\t *\n\t * @param {ReactClass} publicInstance The instance that should rerender.\n\t * @param {object} completeState Next state.\n\t * @internal\n\t */\n\t enqueueReplaceState: function (publicInstance, completeState) {\n\t warnNoop(publicInstance, 'replaceState');\n\t },\n\t\n\t /**\n\t * Sets a subset of the state. This only exists because _pendingState is\n\t * internal. This provides a merging strategy that is not available to deep\n\t * properties which is confusing. TODO: Expose pendingState or don't use it\n\t * during the merge.\n\t *\n\t * @param {ReactClass} publicInstance The instance that should rerender.\n\t * @param {object} partialState Next partial state to be merged with state.\n\t * @internal\n\t */\n\t enqueueSetState: function (publicInstance, partialState) {\n\t warnNoop(publicInstance, 'setState');\n\t }\n\t};\n\t\n\tmodule.exports = ReactNoopUpdateQueue;\n\n/***/ },\n/* 98 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.compose = exports.applyMiddleware = exports.bindActionCreators = exports.combineReducers = exports.createStore = undefined;\n\t\n\tvar _createStore = __webpack_require__(162);\n\t\n\tvar _createStore2 = _interopRequireDefault(_createStore);\n\t\n\tvar _combineReducers = __webpack_require__(425);\n\t\n\tvar _combineReducers2 = _interopRequireDefault(_combineReducers);\n\t\n\tvar _bindActionCreators = __webpack_require__(424);\n\t\n\tvar _bindActionCreators2 = _interopRequireDefault(_bindActionCreators);\n\t\n\tvar _applyMiddleware = __webpack_require__(423);\n\t\n\tvar _applyMiddleware2 = _interopRequireDefault(_applyMiddleware);\n\t\n\tvar _compose = __webpack_require__(161);\n\t\n\tvar _compose2 = _interopRequireDefault(_compose);\n\t\n\tvar _warning = __webpack_require__(163);\n\t\n\tvar _warning2 = _interopRequireDefault(_warning);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\t/*\n\t* This is a dummy function to check if the function name has been altered by minification.\n\t* If the function has been minified and NODE_ENV !== 'production', warn the user.\n\t*/\n\tfunction isCrushed() {}\n\t\n\tif (false) {\n\t (0, _warning2['default'])('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n\t}\n\t\n\texports.createStore = _createStore2['default'];\n\texports.combineReducers = _combineReducers2['default'];\n\texports.bindActionCreators = _bindActionCreators2['default'];\n\texports.applyMiddleware = _applyMiddleware2['default'];\n\texports.compose = _compose2['default'];\n\n/***/ },\n/* 99 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _strategiesSectionContainer = __webpack_require__(180);\n\t\n\tvar _strategiesSectionContainer2 = _interopRequireDefault(_strategiesSectionContainer);\n\t\n\tvar _common = __webpack_require__(15);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar trim = function trim(value) {\n\t if (value && value.trim) {\n\t return value.trim();\n\t } else {\n\t return value;\n\t }\n\t};\n\t\n\tvar AddFeatureToggleComponent = function (_Component) {\n\t _inherits(AddFeatureToggleComponent, _Component);\n\t\n\t function AddFeatureToggleComponent() {\n\t _classCallCheck(this, AddFeatureToggleComponent);\n\t\n\t return _possibleConstructorReturn(this, (AddFeatureToggleComponent.__proto__ || Object.getPrototypeOf(AddFeatureToggleComponent)).apply(this, arguments));\n\t }\n\t\n\t _createClass(AddFeatureToggleComponent, [{\n\t key: 'componentWillMount',\n\t value: function componentWillMount() {\n\t // TODO unwind this stuff\n\t if (this.props.initCallRequired === true) {\n\t this.props.init(this.props.input);\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t input = _props.input,\n\t setValue = _props.setValue,\n\t validateName = _props.validateName,\n\t addStrategy = _props.addStrategy,\n\t removeStrategy = _props.removeStrategy,\n\t updateStrategy = _props.updateStrategy,\n\t onSubmit = _props.onSubmit,\n\t onCancel = _props.onCancel,\n\t _props$editmode = _props.editmode,\n\t editmode = _props$editmode === undefined ? false : _props$editmode,\n\t title = _props.title;\n\t var name = input.name,\n\t nameError = input.nameError,\n\t description = input.description,\n\t enabled = input.enabled;\n\t\n\t var configuredStrategies = input.strategies || [];\n\t\n\t return _react2.default.createElement(\n\t 'form',\n\t { onSubmit: onSubmit(input) },\n\t title && _react2.default.createElement(_common.HeaderTitle, { title: title }),\n\t _react2.default.createElement(\n\t 'section',\n\t null,\n\t _react2.default.createElement(_reactMdl.Textfield, {\n\t floatingLabel: true,\n\t label: 'Name',\n\t name: 'name',\n\t disabled: editmode,\n\t required: true,\n\t value: name,\n\t error: nameError,\n\t onBlur: function onBlur(v) {\n\t return validateName(v.target.value);\n\t },\n\t onChange: function onChange(v) {\n\t return setValue('name', trim(v.target.value));\n\t } }),\n\t _react2.default.createElement('br', null),\n\t _react2.default.createElement(_reactMdl.Textfield, {\n\t floatingLabel: true,\n\t style: { width: '100%' },\n\t rows: 1,\n\t label: 'Description',\n\t required: true,\n\t value: description,\n\t onChange: function onChange(v) {\n\t return setValue('description', v.target.value);\n\t } }),\n\t _react2.default.createElement('br', null),\n\t _react2.default.createElement(\n\t _reactMdl.Switch,\n\t {\n\t checked: enabled,\n\t onChange: function onChange() {\n\t setValue('enabled', !enabled);\n\t } },\n\t 'Enabled'\n\t ),\n\t _react2.default.createElement('hr', null)\n\t ),\n\t _react2.default.createElement(_strategiesSectionContainer2.default, {\n\t configuredStrategies: configuredStrategies,\n\t addStrategy: addStrategy,\n\t updateStrategy: updateStrategy,\n\t removeStrategy: removeStrategy }),\n\t _react2.default.createElement('br', null),\n\t _react2.default.createElement(_common.FormButtons, {\n\t submitText: editmode ? 'Update' : 'Create',\n\t onCancel: onCancel\n\t })\n\t );\n\t }\n\t }]);\n\t\n\t return AddFeatureToggleComponent;\n\t}(_react.Component);\n\t\n\t;\n\t\n\tAddFeatureToggleComponent.propTypes = {\n\t input: _react.PropTypes.object,\n\t setValue: _react.PropTypes.func.isRequired,\n\t addStrategy: _react.PropTypes.func.isRequired,\n\t removeStrategy: _react.PropTypes.func.isRequired,\n\t updateStrategy: _react.PropTypes.func.isRequired,\n\t onSubmit: _react.PropTypes.func.isRequired,\n\t onCancel: _react.PropTypes.func.isRequired,\n\t validateName: _react.PropTypes.func.isRequired,\n\t editmode: _react.PropTypes.bool\n\t};\n\t\n\texports.default = AddFeatureToggleComponent;\n\n/***/ },\n/* 100 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _progressStyles = __webpack_require__(244);\n\t\n\tvar _progressStyles2 = _interopRequireDefault(_progressStyles);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Progress = function (_Component) {\n\t _inherits(Progress, _Component);\n\t\n\t function Progress(props) {\n\t _classCallCheck(this, Progress);\n\t\n\t var _this = _possibleConstructorReturn(this, (Progress.__proto__ || Object.getPrototypeOf(Progress)).call(this, props));\n\t\n\t _this.state = {\n\t percentage: props.initialAnimation ? 0 : props.percentage,\n\t percentageText: props.initialAnimation ? 0 : props.percentage\n\t };\n\t return _this;\n\t }\n\t\n\t _createClass(Progress, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t var _this2 = this;\n\t\n\t if (this.props.initialAnimation) {\n\t this.initialTimeout = setTimeout(function () {\n\t _this2.rafTimerInit = window.requestAnimationFrame(function () {\n\t _this2.setState({\n\t percentage: _this2.props.percentage\n\t });\n\t });\n\t }, 0);\n\t }\n\t }\n\t }, {\n\t key: 'componentWillReceiveProps',\n\t value: function componentWillReceiveProps(_ref) {\n\t var percentage = _ref.percentage;\n\t\n\t if (this.state.percentage !== percentage) {\n\t var nextState = { percentage: percentage };\n\t if (this.props.animatePercentageText) {\n\t this.animateTo(percentage, this.getTarget(percentage));\n\t } else {\n\t nextState.percentageText = percentage;\n\t }\n\t this.setState(nextState);\n\t }\n\t }\n\t }, {\n\t key: 'getTarget',\n\t value: function getTarget(target) {\n\t var start = this.state.percentageText;\n\t var TOTAL_ANIMATION_TIME = 5000;\n\t var diff = start > target ? -(start - target) : target - start;\n\t var perCycle = TOTAL_ANIMATION_TIME / diff;\n\t var cyclesCounter = Math.round(Math.abs(TOTAL_ANIMATION_TIME / perCycle));\n\t var perCycleTime = Math.round(Math.abs(perCycle));\n\t\n\t return {\n\t start: start,\n\t target: target,\n\t cyclesCounter: cyclesCounter,\n\t perCycleTime: perCycleTime,\n\t increment: diff / cyclesCounter\n\t };\n\t }\n\t }, {\n\t key: 'animateTo',\n\t value: function animateTo(percentage, targetState) {\n\t var _this3 = this;\n\t\n\t cancelAnimationFrame(this.rafCounterTimer);\n\t clearTimeout(this.nextTimer);\n\t\n\t var current = this.state.percentageText;\n\t\n\t targetState.cyclesCounter--;\n\t if (targetState.cyclesCounter <= 0) {\n\t this.setState({ percentageText: targetState.target });\n\t return;\n\t }\n\t\n\t var next = Math.round(current + targetState.increment);\n\t this.rafCounterTimer = requestAnimationFrame(function () {\n\t _this3.setState({ percentageText: next });\n\t _this3.nextTimer = setTimeout(function () {\n\t _this3.animateTo(next, targetState);\n\t }, targetState.perCycleTime);\n\t });\n\t }\n\t }, {\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t clearTimeout(this.initialTimeout);\n\t clearTimeout(this.nextTimer);\n\t window.cancelAnimationFrame(this.rafTimerInit);\n\t window.cancelAnimationFrame(this.rafCounterTimer);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var strokeWidth = this.props.strokeWidth;\n\t\n\t var radius = 50 - strokeWidth / 2;\n\t var pathDescription = '\\n M 50,50 m 0,-' + radius + '\\n a ' + radius + ',' + radius + ' 0 1 1 0,' + 2 * radius + '\\n a ' + radius + ',' + radius + ' 0 1 1 0,-' + 2 * radius + '\\n ';\n\t\n\t var diameter = Math.PI * 2 * radius;\n\t var progressStyle = {\n\t strokeDasharray: diameter + 'px ' + diameter + 'px',\n\t strokeDashoffset: (100 - this.state.percentage) / 100 * diameter + 'px'\n\t };\n\t\n\t return _react2.default.createElement(\n\t 'svg',\n\t { viewBox: '0 0 100 100' },\n\t _react2.default.createElement('path', {\n\t className: _progressStyles2.default.trail,\n\t d: pathDescription,\n\t strokeWidth: strokeWidth,\n\t fillOpacity: 0\n\t }),\n\t _react2.default.createElement('path', {\n\t className: _progressStyles2.default.path,\n\t d: pathDescription,\n\t strokeWidth: strokeWidth,\n\t fillOpacity: 0,\n\t style: progressStyle\n\t }),\n\t _react2.default.createElement(\n\t 'text',\n\t {\n\t className: _progressStyles2.default.text,\n\t x: 50,\n\t y: 50\n\t },\n\t this.state.percentageText,\n\t '%'\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return Progress;\n\t}(_react.Component);\n\t\n\tProgress.propTypes = {\n\t percentage: _react.PropTypes.number.isRequired,\n\t strokeWidth: _react.PropTypes.number,\n\t initialAnimation: _react.PropTypes.bool,\n\t animatePercentageText: _react.PropTypes.bool,\n\t textForPercentage: _react.PropTypes.func\n\t};\n\t\n\tProgress.defaultProps = {\n\t strokeWidth: 8,\n\t animatePercentageText: false,\n\t initialAnimation: false\n\t};\n\t\n\texports.default = Progress;\n\n/***/ },\n/* 101 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _historyListComponent = __webpack_require__(195);\n\t\n\tvar _historyListComponent2 = _interopRequireDefault(_historyListComponent);\n\t\n\tvar _actions = __webpack_require__(61);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar mapStateToProps = function mapStateToProps(state) {\n\t var settings = state.settings.toJS().history || {};\n\t\n\t return {\n\t settings: settings\n\t };\n\t};\n\t\n\tvar HistoryListContainer = (0, _reactRedux.connect)(mapStateToProps, {\n\t updateSetting: (0, _actions.updateSettingForGroup)('history')\n\t})(_historyListComponent2.default);\n\t\n\texports.default = HistoryListContainer;\n\n/***/ },\n/* 102 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _historyListToggleComponent = __webpack_require__(196);\n\t\n\tvar _historyListToggleComponent2 = _interopRequireDefault(_historyListToggleComponent);\n\t\n\tvar _historyActions = __webpack_require__(60);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction getHistoryFromToggle(state, toggleName) {\n\t if (!toggleName) {\n\t return [];\n\t }\n\t\n\t if (state.history.hasIn(['toggles', toggleName])) {\n\t return state.history.getIn(['toggles', toggleName]).toArray();\n\t }\n\t\n\t return [];\n\t}\n\t\n\tvar mapStateToProps = function mapStateToProps(state, props) {\n\t return {\n\t history: getHistoryFromToggle(state, props.toggleName)\n\t };\n\t};\n\t\n\tvar HistoryListToggleContainer = (0, _reactRedux.connect)(mapStateToProps, {\n\t fetchHistoryForToggle: _historyActions.fetchHistoryForToggle\n\t})(_historyListToggleComponent2.default);\n\t\n\texports.default = HistoryListToggleContainer;\n\n/***/ },\n/* 103 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _common = __webpack_require__(15);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar trim = function trim(value) {\n\t if (value && value.trim) {\n\t return value.trim();\n\t } else {\n\t return value;\n\t }\n\t};\n\t\n\tfunction gerArrayWithEntries(num) {\n\t return Array.from(Array(num));\n\t}\n\t\n\tvar Parameter = function Parameter(_ref) {\n\t var set = _ref.set,\n\t _ref$input = _ref.input,\n\t input = _ref$input === undefined ? {} : _ref$input,\n\t index = _ref.index;\n\t return _react2.default.createElement(\n\t 'div',\n\t { style: { background: '#f1f1f1', padding: '16px 20px', marginBottom: '20px' } },\n\t _react2.default.createElement(_reactMdl.Textfield, {\n\t style: { width: '50%' },\n\t floatingLabel: true,\n\t label: 'Parameter name ' + (index + 1),\n\t onChange: function onChange(_ref2) {\n\t var target = _ref2.target;\n\t return set({ name: target.value }, true);\n\t },\n\t value: input.name }),\n\t _react2.default.createElement(\n\t 'div',\n\t { style: { position: 'relative', display: 'inline-block' } },\n\t _react2.default.createElement(\n\t 'span',\n\t { className: 'mdl-outline', id: index + '-type-menu', style: {\n\t borderRadius: '2px',\n\t cursor: 'pointer',\n\t boxShadow: '0 2px 2px 0 rgba(0,0,0,.04),0 3px 1px -2px rgba(0,0,0,.1),0 1px 5px 0 rgba(0,0,0,.12)',\n\t marginLeft: '10px',\n\t border: '1px solid #f1f1f1',\n\t backgroundColor: 'white',\n\t padding: '10px 2px 10px 20px'\n\t } },\n\t input.type || 'string',\n\t _react2.default.createElement(_reactMdl.IconButton, { name: 'arrow_drop_down', onClick: function onClick(evt) {\n\t return evt.preventDefault();\n\t } })\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Menu,\n\t { target: index + '-type-menu', align: 'right' },\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { onClick: function onClick() {\n\t return set({ type: 'string' });\n\t } },\n\t 'string'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { onClick: function onClick() {\n\t return set({ type: 'percentage' });\n\t } },\n\t 'percentage'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { onClick: function onClick() {\n\t return set({ type: 'list' });\n\t } },\n\t 'list'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { onClick: function onClick() {\n\t return set({ type: 'number' });\n\t } },\n\t 'number'\n\t )\n\t )\n\t ),\n\t _react2.default.createElement(_reactMdl.Textfield, {\n\t floatingLabel: true,\n\t style: { width: '100%' },\n\t rows: 2,\n\t label: 'Parameter name ' + (index + 1) + ' description',\n\t onChange: function onChange(_ref3) {\n\t var target = _ref3.target;\n\t return set({ description: target.value });\n\t },\n\t value: input.description\n\t }),\n\t _react2.default.createElement(_reactMdl.Checkbox, {\n\t label: 'Required',\n\t checked: !!input.required,\n\t onChange: function onChange() {\n\t return set({ required: !input.required });\n\t },\n\t ripple: true,\n\t defaultChecked: true\n\t })\n\t );\n\t};\n\t\n\tvar EditHeader = function EditHeader() {\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t 'h4',\n\t null,\n\t 'Edit strategy'\n\t ),\n\t _react2.default.createElement(\n\t 'p',\n\t { style: { background: '#ffb7b7', padding: '16px 20px' } },\n\t 'Be carefull! Changing a strategy definition might also require changes to the implementation in the clients.'\n\t )\n\t );\n\t};\n\t\n\tvar CreateHeader = function CreateHeader() {\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t 'h4',\n\t null,\n\t 'Create a new Strategy definition'\n\t )\n\t );\n\t};\n\t\n\tvar Parameters = function Parameters(_ref4) {\n\t var _ref4$input = _ref4.input,\n\t input = _ref4$input === undefined ? [] : _ref4$input,\n\t _ref4$count = _ref4.count,\n\t count = _ref4$count === undefined ? 0 : _ref4$count,\n\t updateInList = _ref4.updateInList;\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t gerArrayWithEntries(count).map(function (v, i) {\n\t return _react2.default.createElement(Parameter, {\n\t key: i,\n\t set: function set(v) {\n\t return updateInList('parameters', i, v, true);\n\t },\n\t index: i,\n\t input: input[i]\n\t });\n\t })\n\t );\n\t};\n\t\n\tvar AddStrategy = function (_Component) {\n\t _inherits(AddStrategy, _Component);\n\t\n\t function AddStrategy() {\n\t _classCallCheck(this, AddStrategy);\n\t\n\t return _possibleConstructorReturn(this, (AddStrategy.__proto__ || Object.getPrototypeOf(AddStrategy)).apply(this, arguments));\n\t }\n\t\n\t _createClass(AddStrategy, [{\n\t key: 'componentWillMount',\n\t value: function componentWillMount() {\n\t // TODO unwind this stuff\n\t if (this.props.initCallRequired === true) {\n\t this.props.init(this.props.input);\n\t if (this.props.input.parameters) {\n\t this.props.setValue('_params', this.props.input.parameters.length);\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t input = _props.input,\n\t setValue = _props.setValue,\n\t updateInList = _props.updateInList,\n\t incValue = _props.incValue,\n\t onCancel = _props.onCancel,\n\t _props$editmode = _props.editmode,\n\t editmode = _props$editmode === undefined ? false : _props$editmode,\n\t onSubmit = _props.onSubmit;\n\t\n\t\n\t return _react2.default.createElement(\n\t 'form',\n\t { onSubmit: onSubmit(input) },\n\t editmode ? _react2.default.createElement(EditHeader, null) : _react2.default.createElement(CreateHeader, null),\n\t _react2.default.createElement(_reactMdl.Textfield, { label: 'Strategy name',\n\t floatingLabel: true,\n\t name: 'name',\n\t required: true,\n\t disabled: editmode,\n\t pattern: '^[0-9a-zA-Z\\\\.\\\\-]+$',\n\t onChange: function onChange(_ref5) {\n\t var target = _ref5.target;\n\t return setValue('name', trim(target.value));\n\t },\n\t value: input.name\n\t }),\n\t _react2.default.createElement('br', null),\n\t _react2.default.createElement(_reactMdl.Textfield, {\n\t floatingLabel: true,\n\t style: { width: '100%' },\n\t rows: 1,\n\t label: 'Description',\n\t name: 'description',\n\t onChange: function onChange(_ref6) {\n\t var target = _ref6.target;\n\t return setValue('description', target.value);\n\t },\n\t value: input.description\n\t }),\n\t _react2.default.createElement(Parameters, { input: input.parameters, count: input._params, updateInList: updateInList }),\n\t _react2.default.createElement(_reactMdl.IconButton, { raised: true, name: 'add', title: 'Add parameter', onClick: function onClick(e) {\n\t e.preventDefault();\n\t incValue('_params');\n\t } }),\n\t ' \\xA0Add parameter',\n\t _react2.default.createElement('br', null),\n\t _react2.default.createElement('hr', null),\n\t _react2.default.createElement(_common.FormButtons, {\n\t submitText: editmode ? 'Update' : 'Create',\n\t onCancel: onCancel\n\t })\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t input: _react.PropTypes.object,\n\t setValue: _react.PropTypes.func,\n\t updateInList: _react.PropTypes.func,\n\t incValue: _react.PropTypes.func,\n\t clear: _react.PropTypes.func,\n\t onCancel: _react.PropTypes.func,\n\t onSubmit: _react.PropTypes.func,\n\t editmode: _react.PropTypes.bool,\n\t initCallRequired: _react.PropTypes.bool,\n\t init: _react.PropTypes.func\n\t };\n\t }\n\t }]);\n\t\n\t return AddStrategy;\n\t}(_react.Component);\n\t\n\texports.default = AddStrategy;\n\n/***/ },\n/* 104 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _helper = __webpack_require__(26);\n\t\n\tvar URI = '/api/client/applications';\n\t\n\tfunction fetchAll() {\n\t return fetch(URI, { headers: _helper.headers }).then(_helper.throwIfNotSuccess).then(function (response) {\n\t return response.json();\n\t });\n\t}\n\t\n\tfunction fetchApplication(appName) {\n\t return fetch(URI + '/' + appName, { headers: _helper.headers }).then(_helper.throwIfNotSuccess).then(function (response) {\n\t return response.json();\n\t });\n\t}\n\t\n\tfunction fetchApplicationsWithStrategyName(strategyName) {\n\t return fetch(URI + '?strategyName=' + strategyName, { headers: _helper.headers }).then(_helper.throwIfNotSuccess).then(function (response) {\n\t return response.json();\n\t });\n\t}\n\t\n\tfunction storeApplicationMetaData(appName, key, value) {\n\t var data = {};\n\t data[key] = value;\n\t return fetch(URI + '/' + appName, {\n\t method: 'POST',\n\t headers: _helper.headers,\n\t body: JSON.stringify(data),\n\t credentials: 'include'\n\t }).then(_helper.throwIfNotSuccess);\n\t}\n\t\n\tmodule.exports = {\n\t fetchApplication: fetchApplication,\n\t fetchAll: fetchAll,\n\t fetchApplicationsWithStrategyName: fetchApplicationsWithStrategyName,\n\t storeApplicationMetaData: storeApplicationMetaData\n\t};\n\n/***/ },\n/* 105 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.ERROR_RECEIVE_ARCHIVE = exports.RECEIVE_ARCHIVE = exports.REVIVE_TOGGLE = undefined;\n\texports.revive = revive;\n\texports.fetchArchive = fetchArchive;\n\t\n\tvar _archiveApi = __webpack_require__(208);\n\t\n\tvar _archiveApi2 = _interopRequireDefault(_archiveApi);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar REVIVE_TOGGLE = exports.REVIVE_TOGGLE = 'REVIVE_TOGGLE';\n\tvar RECEIVE_ARCHIVE = exports.RECEIVE_ARCHIVE = 'RECEIVE_ARCHIVE';\n\tvar ERROR_RECEIVE_ARCHIVE = exports.ERROR_RECEIVE_ARCHIVE = 'ERROR_RECEIVE_ARCHIVE';\n\t\n\tvar receiveArchive = function receiveArchive(json) {\n\t return {\n\t type: RECEIVE_ARCHIVE,\n\t value: json.features\n\t };\n\t};\n\t\n\tvar reviveToggle = function reviveToggle(archiveFeatureToggle) {\n\t return {\n\t type: REVIVE_TOGGLE,\n\t value: archiveFeatureToggle\n\t };\n\t};\n\t\n\tvar errorReceiveArchive = function errorReceiveArchive(statusCode) {\n\t return {\n\t type: ERROR_RECEIVE_ARCHIVE,\n\t statusCode: statusCode\n\t };\n\t};\n\t\n\tfunction revive(featureToggle) {\n\t return function (dispatch) {\n\t return _archiveApi2.default.revive(featureToggle).then(function () {\n\t return dispatch(reviveToggle(featureToggle));\n\t }).catch(function (error) {\n\t return dispatch(errorReceiveArchive(error));\n\t });\n\t };\n\t}\n\t\n\tfunction fetchArchive() {\n\t return function (dispatch) {\n\t return _archiveApi2.default.fetchAll().then(function (json) {\n\t return dispatch(receiveArchive(json));\n\t }).catch(function (error) {\n\t return dispatch(errorReceiveArchive(error));\n\t });\n\t };\n\t}\n\n/***/ },\n/* 106 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar MUTE_ERRORS = exports.MUTE_ERRORS = 'MUTE_ERRORS';\n\tvar MUTE_ERROR = exports.MUTE_ERROR = 'MUTE_ERROR';\n\t\n\tvar muteErrors = exports.muteErrors = function muteErrors() {\n\t return { type: MUTE_ERRORS };\n\t};\n\t\n\tvar muteError = exports.muteError = function muteError(error) {\n\t return { type: MUTE_ERROR, error: error };\n\t};\n\n/***/ },\n/* 107 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar actions = exports.actions = {\n\t SET_VALUE: 'SET_VALUE',\n\t INCREMENT_VALUE: 'INCREMENT_VALUE',\n\t LIST_PUSH: 'LIST_PUSH',\n\t LIST_POP: 'LIST_POP',\n\t LIST_UP: 'LIST_UP',\n\t CLEAR: 'CLEAR',\n\t INIT: 'INIT'\n\t};\n\t\n\tvar createInit = exports.createInit = function createInit(_ref) {\n\t var id = _ref.id,\n\t value = _ref.value;\n\t return { type: actions.INIT, id: id, value: value };\n\t};\n\tvar createInc = exports.createInc = function createInc(_ref2) {\n\t var id = _ref2.id,\n\t key = _ref2.key;\n\t return { type: actions.INCREMENT_VALUE, id: id, key: key };\n\t};\n\tvar createSet = exports.createSet = function createSet(_ref3) {\n\t var id = _ref3.id,\n\t key = _ref3.key,\n\t value = _ref3.value;\n\t return { type: actions.SET_VALUE, id: id, key: key, value: value };\n\t};\n\tvar createPush = exports.createPush = function createPush(_ref4) {\n\t var id = _ref4.id,\n\t key = _ref4.key,\n\t value = _ref4.value;\n\t return { type: actions.LIST_PUSH, id: id, key: key, value: value };\n\t};\n\tvar createPop = exports.createPop = function createPop(_ref5) {\n\t var id = _ref5.id,\n\t key = _ref5.key,\n\t index = _ref5.index;\n\t return { type: actions.LIST_POP, id: id, key: key, index: index };\n\t};\n\tvar createUp = exports.createUp = function createUp(_ref6) {\n\t var id = _ref6.id,\n\t key = _ref6.key,\n\t index = _ref6.index,\n\t newValue = _ref6.newValue,\n\t merge = _ref6.merge;\n\t return { type: actions.LIST_UP, id: id, key: key, index: index, newValue: newValue, merge: merge };\n\t};\n\tvar createClear = exports.createClear = function createClear(_ref7) {\n\t var id = _ref7.id;\n\t return { type: actions.CLEAR, id: id };\n\t};\n\t\n\texports.default = actions;\n\n/***/ },\n/* 108 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\tmodule.exports = {\"action\":\"feature__action___3x5M_\",\"yes\":\"feature__yes___hSOLA\",\"no\":\"feature__no___2MSTG\",\"link\":\"feature__link___17O3D\",\"iconList\":\"feature__iconList___hHnHM\",\"iconListItem\":\"feature__iconListItem___2v4ND\",\"iconListItemChip\":\"feature__iconListItemChip___3BVh2\",\"topList\":\"feature__topList___lzJpE\",\"topListItem0\":\"feature__topListItem0___3my85\",\"topListItem\":\"feature__topListItem___2FEEF\",\"topListItem2\":\"feature__topListItem2___fjd8v\",\"hideLt960\":\"feature__hideLt960___3-OB2\"};\n\n/***/ },\n/* 109 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t *\n\t * @typechecks\n\t */\n\t\n\tvar emptyFunction = __webpack_require__(16);\n\t\n\t/**\n\t * Upstream version of event listener. Does not take into account specific\n\t * nature of platform.\n\t */\n\tvar EventListener = {\n\t /**\n\t * Listen to DOM events during the bubble phase.\n\t *\n\t * @param {DOMEventTarget} target DOM element to register listener on.\n\t * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n\t * @param {function} callback Callback function.\n\t * @return {object} Object with a `remove` method.\n\t */\n\t listen: function listen(target, eventType, callback) {\n\t if (target.addEventListener) {\n\t target.addEventListener(eventType, callback, false);\n\t return {\n\t remove: function remove() {\n\t target.removeEventListener(eventType, callback, false);\n\t }\n\t };\n\t } else if (target.attachEvent) {\n\t target.attachEvent('on' + eventType, callback);\n\t return {\n\t remove: function remove() {\n\t target.detachEvent('on' + eventType, callback);\n\t }\n\t };\n\t }\n\t },\n\t\n\t /**\n\t * Listen to DOM events during the capture phase.\n\t *\n\t * @param {DOMEventTarget} target DOM element to register listener on.\n\t * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n\t * @param {function} callback Callback function.\n\t * @return {object} Object with a `remove` method.\n\t */\n\t capture: function capture(target, eventType, callback) {\n\t if (target.addEventListener) {\n\t target.addEventListener(eventType, callback, true);\n\t return {\n\t remove: function remove() {\n\t target.removeEventListener(eventType, callback, true);\n\t }\n\t };\n\t } else {\n\t if (false) {\n\t console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n\t }\n\t return {\n\t remove: emptyFunction\n\t };\n\t }\n\t },\n\t\n\t registerDefault: function registerDefault() {}\n\t};\n\t\n\tmodule.exports = EventListener;\n\n/***/ },\n/* 110 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * @param {DOMElement} node input/textarea to focus\n\t */\n\t\n\tfunction focusNode(node) {\n\t // IE8 can throw \"Can't move focus to the control because it is invisible,\n\t // not enabled, or of a type that does not accept the focus.\" for all kinds of\n\t // reasons that are too expensive and fragile to test.\n\t try {\n\t node.focus();\n\t } catch (e) {}\n\t}\n\t\n\tmodule.exports = focusNode;\n\n/***/ },\n/* 111 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks\n\t */\n\t\n\t/* eslint-disable fb-www/typeof-undefined */\n\t\n\t/**\n\t * Same as document.activeElement but wraps in a try-catch block. In IE it is\n\t * not safe to call document.activeElement if there is nothing focused.\n\t *\n\t * The activeElement will be null only if the document or document body is not\n\t * yet defined.\n\t */\n\tfunction getActiveElement() /*?DOMElement*/{\n\t if (typeof document === 'undefined') {\n\t return null;\n\t }\n\t try {\n\t return document.activeElement || document.body;\n\t } catch (e) {\n\t return document.body;\n\t }\n\t}\n\t\n\tmodule.exports = getActiveElement;\n\n/***/ },\n/* 112 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.readState = exports.saveState = undefined;\n\t\n\tvar _warning = __webpack_require__(25);\n\t\n\tvar _warning2 = _interopRequireDefault(_warning);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar QuotaExceededErrors = {\n\t QuotaExceededError: true,\n\t QUOTA_EXCEEDED_ERR: true\n\t};\n\t\n\tvar SecurityErrors = {\n\t SecurityError: true\n\t};\n\t\n\tvar KeyPrefix = '@@History/';\n\t\n\tvar createKey = function createKey(key) {\n\t return KeyPrefix + key;\n\t};\n\t\n\tvar saveState = exports.saveState = function saveState(key, state) {\n\t if (!window.sessionStorage) {\n\t // Session storage is not available or hidden.\n\t // sessionStorage is undefined in Internet Explorer when served via file protocol.\n\t false ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available') : void 0;\n\t\n\t return;\n\t }\n\t\n\t try {\n\t if (state == null) {\n\t window.sessionStorage.removeItem(createKey(key));\n\t } else {\n\t window.sessionStorage.setItem(createKey(key), JSON.stringify(state));\n\t }\n\t } catch (error) {\n\t if (SecurityErrors[error.name]) {\n\t // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n\t // attempt to access window.sessionStorage.\n\t false ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available due to security settings') : void 0;\n\t\n\t return;\n\t }\n\t\n\t if (QuotaExceededErrors[error.name] && window.sessionStorage.length === 0) {\n\t // Safari \"private mode\" throws QuotaExceededError.\n\t false ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : void 0;\n\t\n\t return;\n\t }\n\t\n\t throw error;\n\t }\n\t};\n\t\n\tvar readState = exports.readState = function readState(key) {\n\t var json = void 0;\n\t try {\n\t json = window.sessionStorage.getItem(createKey(key));\n\t } catch (error) {\n\t if (SecurityErrors[error.name]) {\n\t // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n\t // attempt to access window.sessionStorage.\n\t false ? (0, _warning2.default)(false, '[history] Unable to read state; sessionStorage is not available due to security settings') : void 0;\n\t\n\t return undefined;\n\t }\n\t }\n\t\n\t if (json) {\n\t try {\n\t return JSON.parse(json);\n\t } catch (error) {\n\t // Ignore invalid JSON.\n\t }\n\t }\n\t\n\t return undefined;\n\t};\n\n/***/ },\n/* 113 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _runTransitionHook = __webpack_require__(69);\n\t\n\tvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\t\n\tvar _PathUtils = __webpack_require__(23);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar useBasename = function useBasename(createHistory) {\n\t return function () {\n\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t\n\t var history = createHistory(options);\n\t var basename = options.basename;\n\t\n\t\n\t var addBasename = function addBasename(location) {\n\t if (!location) return location;\n\t\n\t if (basename && location.basename == null) {\n\t if (location.pathname.indexOf(basename) === 0) {\n\t location.pathname = location.pathname.substring(basename.length);\n\t location.basename = basename;\n\t\n\t if (location.pathname === '') location.pathname = '/';\n\t } else {\n\t location.basename = '';\n\t }\n\t }\n\t\n\t return location;\n\t };\n\t\n\t var prependBasename = function prependBasename(location) {\n\t if (!basename) return location;\n\t\n\t var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location;\n\t var pname = object.pathname;\n\t var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/';\n\t var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname;\n\t var pathname = normalizedBasename + normalizedPathname;\n\t\n\t return _extends({}, object, {\n\t pathname: pathname\n\t });\n\t };\n\t\n\t // Override all read methods with basename-aware versions.\n\t var getCurrentLocation = function getCurrentLocation() {\n\t return addBasename(history.getCurrentLocation());\n\t };\n\t\n\t var listenBefore = function listenBefore(hook) {\n\t return history.listenBefore(function (location, callback) {\n\t return (0, _runTransitionHook2.default)(hook, addBasename(location), callback);\n\t });\n\t };\n\t\n\t var listen = function listen(listener) {\n\t return history.listen(function (location) {\n\t return listener(addBasename(location));\n\t });\n\t };\n\t\n\t // Override all write methods with basename-aware versions.\n\t var push = function push(location) {\n\t return history.push(prependBasename(location));\n\t };\n\t\n\t var replace = function replace(location) {\n\t return history.replace(prependBasename(location));\n\t };\n\t\n\t var createPath = function createPath(location) {\n\t return history.createPath(prependBasename(location));\n\t };\n\t\n\t var createHref = function createHref(location) {\n\t return history.createHref(prependBasename(location));\n\t };\n\t\n\t var createLocation = function createLocation(location) {\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t return addBasename(history.createLocation.apply(history, [prependBasename(location)].concat(args)));\n\t };\n\t\n\t return _extends({}, history, {\n\t getCurrentLocation: getCurrentLocation,\n\t listenBefore: listenBefore,\n\t listen: listen,\n\t push: push,\n\t replace: replace,\n\t createPath: createPath,\n\t createHref: createHref,\n\t createLocation: createLocation\n\t });\n\t };\n\t};\n\t\n\texports.default = useBasename;\n\n/***/ },\n/* 114 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _queryString = __webpack_require__(274);\n\t\n\tvar _runTransitionHook = __webpack_require__(69);\n\t\n\tvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\t\n\tvar _LocationUtils = __webpack_require__(29);\n\t\n\tvar _PathUtils = __webpack_require__(23);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar defaultStringifyQuery = function defaultStringifyQuery(query) {\n\t return (0, _queryString.stringify)(query).replace(/%20/g, '+');\n\t};\n\t\n\tvar defaultParseQueryString = _queryString.parse;\n\t\n\t/**\n\t * Returns a new createHistory function that may be used to create\n\t * history objects that know how to handle URL queries.\n\t */\n\tvar useQueries = function useQueries(createHistory) {\n\t return function () {\n\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t\n\t var history = createHistory(options);\n\t var stringifyQuery = options.stringifyQuery;\n\t var parseQueryString = options.parseQueryString;\n\t\n\t\n\t if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery;\n\t\n\t if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString;\n\t\n\t var decodeQuery = function decodeQuery(location) {\n\t if (!location) return location;\n\t\n\t if (location.query == null) location.query = parseQueryString(location.search.substring(1));\n\t\n\t return location;\n\t };\n\t\n\t var encodeQuery = function encodeQuery(location, query) {\n\t if (query == null) return location;\n\t\n\t var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location;\n\t var queryString = stringifyQuery(query);\n\t var search = queryString ? '?' + queryString : '';\n\t\n\t return _extends({}, object, {\n\t search: search\n\t });\n\t };\n\t\n\t // Override all read methods with query-aware versions.\n\t var getCurrentLocation = function getCurrentLocation() {\n\t return decodeQuery(history.getCurrentLocation());\n\t };\n\t\n\t var listenBefore = function listenBefore(hook) {\n\t return history.listenBefore(function (location, callback) {\n\t return (0, _runTransitionHook2.default)(hook, decodeQuery(location), callback);\n\t });\n\t };\n\t\n\t var listen = function listen(listener) {\n\t return history.listen(function (location) {\n\t return listener(decodeQuery(location));\n\t });\n\t };\n\t\n\t // Override all write methods with query-aware versions.\n\t var push = function push(location) {\n\t return history.push(encodeQuery(location, location.query));\n\t };\n\t\n\t var replace = function replace(location) {\n\t return history.replace(encodeQuery(location, location.query));\n\t };\n\t\n\t var createPath = function createPath(location) {\n\t return history.createPath(encodeQuery(location, location.query));\n\t };\n\t\n\t var createHref = function createHref(location) {\n\t return history.createHref(encodeQuery(location, location.query));\n\t };\n\t\n\t var createLocation = function createLocation(location) {\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t var newLocation = history.createLocation.apply(history, [encodeQuery(location, location.query)].concat(args));\n\t\n\t if (location.query) newLocation.query = (0, _LocationUtils.createQuery)(location.query);\n\t\n\t return decodeQuery(newLocation);\n\t };\n\t\n\t return _extends({}, history, {\n\t getCurrentLocation: getCurrentLocation,\n\t listenBefore: listenBefore,\n\t listen: listen,\n\t push: push,\n\t replace: replace,\n\t createPath: createPath,\n\t createHref: createHref,\n\t createLocation: createLocation\n\t });\n\t };\n\t};\n\t\n\texports.default = useQueries;\n\n/***/ },\n/* 115 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2015, Yahoo! Inc.\n\t * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n\t */\n\t'use strict';\n\t\n\tvar REACT_STATICS = {\n\t childContextTypes: true,\n\t contextTypes: true,\n\t defaultProps: true,\n\t displayName: true,\n\t getDefaultProps: true,\n\t mixins: true,\n\t propTypes: true,\n\t type: true\n\t};\n\t\n\tvar KNOWN_STATICS = {\n\t name: true,\n\t length: true,\n\t prototype: true,\n\t caller: true,\n\t arguments: true,\n\t arity: true\n\t};\n\t\n\tvar isGetOwnPropertySymbolsAvailable = typeof Object.getOwnPropertySymbols === 'function';\n\t\n\tmodule.exports = function hoistNonReactStatics(targetComponent, sourceComponent, customStatics) {\n\t if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n\t var keys = Object.getOwnPropertyNames(sourceComponent);\n\t\n\t /* istanbul ignore else */\n\t if (isGetOwnPropertySymbolsAvailable) {\n\t keys = keys.concat(Object.getOwnPropertySymbols(sourceComponent));\n\t }\n\t\n\t for (var i = 0; i < keys.length; ++i) {\n\t if (!REACT_STATICS[keys[i]] && !KNOWN_STATICS[keys[i]] && (!customStatics || !customStatics[keys[i]])) {\n\t try {\n\t targetComponent[keys[i]] = sourceComponent[keys[i]];\n\t } catch (error) {\n\t\n\t }\n\t }\n\t }\n\t }\n\t\n\t return targetComponent;\n\t};\n\n\n/***/ },\n/* 116 */\n/***/ function(module, exports) {\n\n\t/**\n\t * lodash (Custom Build) <https://lodash.com/>\n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n\t * Released under MIT license <https://lodash.com/license>\n\t * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\t\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\t\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]';\n\t\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\t\n\t/**\n\t * A faster alternative to `Function#apply`, this function invokes `func`\n\t * with the `this` binding of `thisArg` and the arguments of `args`.\n\t *\n\t * @private\n\t * @param {Function} func The function to invoke.\n\t * @param {*} thisArg The `this` binding of `func`.\n\t * @param {Array} args The arguments to invoke `func` with.\n\t * @returns {*} Returns the result of `func`.\n\t */\n\tfunction apply(func, thisArg, args) {\n\t switch (args.length) {\n\t case 0: return func.call(thisArg);\n\t case 1: return func.call(thisArg, args[0]);\n\t case 2: return func.call(thisArg, args[0], args[1]);\n\t case 3: return func.call(thisArg, args[0], args[1], args[2]);\n\t }\n\t return func.apply(thisArg, args);\n\t}\n\t\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\t\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\t\n\t/** Built-in value references. */\n\tvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\t\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeKeys = overArg(Object.keys, Object),\n\t nativeMax = Math.max;\n\t\n\t/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\n\tvar nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\t\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t // Safari 9 makes `arguments.length` enumerable in strict mode.\n\t var result = (isArray(value) || isArguments(value))\n\t ? baseTimes(value.length, String)\n\t : [];\n\t\n\t var length = result.length,\n\t skipIndexes = !!length;\n\t\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * Assigns `value` to `key` of `object` if the existing value is not equivalent\n\t * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * for equality comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to modify.\n\t * @param {string} key The key of the property to assign.\n\t * @param {*} value The value to assign.\n\t */\n\tfunction assignValue(object, key, value) {\n\t var objValue = object[key];\n\t if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n\t (value === undefined && !(key in object))) {\n\t object[key] = value;\n\t }\n\t}\n\t\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n\t *\n\t * @private\n\t * @param {Function} func The function to apply a rest parameter to.\n\t * @param {number} [start=func.length-1] The start position of the rest parameter.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction baseRest(func, start) {\n\t start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n\t return function() {\n\t var args = arguments,\n\t index = -1,\n\t length = nativeMax(args.length - start, 0),\n\t array = Array(length);\n\t\n\t while (++index < length) {\n\t array[index] = args[start + index];\n\t }\n\t index = -1;\n\t var otherArgs = Array(start + 1);\n\t while (++index < start) {\n\t otherArgs[index] = args[index];\n\t }\n\t otherArgs[start] = array;\n\t return apply(func, this, otherArgs);\n\t };\n\t}\n\t\n\t/**\n\t * Copies properties of `source` to `object`.\n\t *\n\t * @private\n\t * @param {Object} source The object to copy properties from.\n\t * @param {Array} props The property identifiers to copy.\n\t * @param {Object} [object={}] The object to copy properties to.\n\t * @param {Function} [customizer] The function to customize copied values.\n\t * @returns {Object} Returns `object`.\n\t */\n\tfunction copyObject(source, props, object, customizer) {\n\t object || (object = {});\n\t\n\t var index = -1,\n\t length = props.length;\n\t\n\t while (++index < length) {\n\t var key = props[index];\n\t\n\t var newValue = customizer\n\t ? customizer(object[key], source[key], key, object, source)\n\t : undefined;\n\t\n\t assignValue(object, key, newValue === undefined ? source[key] : newValue);\n\t }\n\t return object;\n\t}\n\t\n\t/**\n\t * Creates a function like `_.assign`.\n\t *\n\t * @private\n\t * @param {Function} assigner The function to assign values.\n\t * @returns {Function} Returns the new assigner function.\n\t */\n\tfunction createAssigner(assigner) {\n\t return baseRest(function(object, sources) {\n\t var index = -1,\n\t length = sources.length,\n\t customizer = length > 1 ? sources[length - 1] : undefined,\n\t guard = length > 2 ? sources[2] : undefined;\n\t\n\t customizer = (assigner.length > 3 && typeof customizer == 'function')\n\t ? (length--, customizer)\n\t : undefined;\n\t\n\t if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n\t customizer = length < 3 ? undefined : customizer;\n\t length = 1;\n\t }\n\t object = Object(object);\n\t while (++index < length) {\n\t var source = sources[index];\n\t if (source) {\n\t assigner(object, source, index, customizer);\n\t }\n\t }\n\t return object;\n\t });\n\t}\n\t\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\t\n\t/**\n\t * Checks if the given arguments are from an iteratee call.\n\t *\n\t * @private\n\t * @param {*} value The potential iteratee value argument.\n\t * @param {*} index The potential iteratee index or key argument.\n\t * @param {*} object The potential iteratee object argument.\n\t * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n\t * else `false`.\n\t */\n\tfunction isIterateeCall(value, index, object) {\n\t if (!isObject(object)) {\n\t return false;\n\t }\n\t var type = typeof index;\n\t if (type == 'number'\n\t ? (isArrayLike(object) && isIndex(index, object.length))\n\t : (type == 'string' && index in object)\n\t ) {\n\t return eq(object[index], value);\n\t }\n\t return false;\n\t}\n\t\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\t\n\t return value === proto;\n\t}\n\t\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\t\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\t\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\t\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8-9 which returns 'object' for typed array and other constructors.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\t\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\t\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\t\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\t\n\t/**\n\t * Assigns own enumerable string keyed properties of source objects to the\n\t * destination object. Source objects are applied from left to right.\n\t * Subsequent sources overwrite property assignments of previous sources.\n\t *\n\t * **Note:** This method mutates `object` and is loosely based on\n\t * [`Object.assign`](https://mdn.io/Object/assign).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.10.0\n\t * @category Object\n\t * @param {Object} object The destination object.\n\t * @param {...Object} [sources] The source objects.\n\t * @returns {Object} Returns `object`.\n\t * @see _.assignIn\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * }\n\t *\n\t * function Bar() {\n\t * this.c = 3;\n\t * }\n\t *\n\t * Foo.prototype.b = 2;\n\t * Bar.prototype.d = 4;\n\t *\n\t * _.assign({ 'a': 0 }, new Foo, new Bar);\n\t * // => { 'a': 1, 'c': 3 }\n\t */\n\tvar assign = createAssigner(function(object, source) {\n\t if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {\n\t copyObject(source, keys(source), object);\n\t return;\n\t }\n\t for (var key in source) {\n\t if (hasOwnProperty.call(source, key)) {\n\t assignValue(object, key, source[key]);\n\t }\n\t }\n\t});\n\t\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\t\n\tmodule.exports = assign;\n\n\n/***/ },\n/* 117 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar root = __webpack_require__(271);\n\t\n\t/** Built-in value references. */\n\tvar Symbol = root.Symbol;\n\t\n\tmodule.exports = Symbol;\n\n\n/***/ },\n/* 118 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * CSS properties which accept numbers but are not in units of \"px\".\n\t */\n\t\n\tvar isUnitlessNumber = {\n\t animationIterationCount: true,\n\t borderImageOutset: true,\n\t borderImageSlice: true,\n\t borderImageWidth: true,\n\t boxFlex: true,\n\t boxFlexGroup: true,\n\t boxOrdinalGroup: true,\n\t columnCount: true,\n\t flex: true,\n\t flexGrow: true,\n\t flexPositive: true,\n\t flexShrink: true,\n\t flexNegative: true,\n\t flexOrder: true,\n\t gridRow: true,\n\t gridColumn: true,\n\t fontWeight: true,\n\t lineClamp: true,\n\t lineHeight: true,\n\t opacity: true,\n\t order: true,\n\t orphans: true,\n\t tabSize: true,\n\t widows: true,\n\t zIndex: true,\n\t zoom: true,\n\t\n\t // SVG-related properties\n\t fillOpacity: true,\n\t floodOpacity: true,\n\t stopOpacity: true,\n\t strokeDasharray: true,\n\t strokeDashoffset: true,\n\t strokeMiterlimit: true,\n\t strokeOpacity: true,\n\t strokeWidth: true\n\t};\n\t\n\t/**\n\t * @param {string} prefix vendor-specific prefix, eg: Webkit\n\t * @param {string} key style name, eg: transitionDuration\n\t * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n\t * WebkitTransitionDuration\n\t */\n\tfunction prefixKey(prefix, key) {\n\t return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n\t}\n\t\n\t/**\n\t * Support style names that may come passed in prefixed by adding permutations\n\t * of vendor prefixes.\n\t */\n\tvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\t\n\t// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n\t// infinite loop, because it iterates over the newly added props too.\n\tObject.keys(isUnitlessNumber).forEach(function (prop) {\n\t prefixes.forEach(function (prefix) {\n\t isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n\t });\n\t});\n\t\n\t/**\n\t * Most style properties can be unset by doing .style[prop] = '' but IE8\n\t * doesn't like doing that with shorthand properties so for the properties that\n\t * IE8 breaks on, which are listed here, we instead unset each of the\n\t * individual properties. See http://bugs.jquery.com/ticket/12385.\n\t * The 4-value 'clock' properties like margin, padding, border-width seem to\n\t * behave without any problems. Curiously, list-style works too without any\n\t * special prodding.\n\t */\n\tvar shorthandPropertyExpansions = {\n\t background: {\n\t backgroundAttachment: true,\n\t backgroundColor: true,\n\t backgroundImage: true,\n\t backgroundPositionX: true,\n\t backgroundPositionY: true,\n\t backgroundRepeat: true\n\t },\n\t backgroundPosition: {\n\t backgroundPositionX: true,\n\t backgroundPositionY: true\n\t },\n\t border: {\n\t borderWidth: true,\n\t borderStyle: true,\n\t borderColor: true\n\t },\n\t borderBottom: {\n\t borderBottomWidth: true,\n\t borderBottomStyle: true,\n\t borderBottomColor: true\n\t },\n\t borderLeft: {\n\t borderLeftWidth: true,\n\t borderLeftStyle: true,\n\t borderLeftColor: true\n\t },\n\t borderRight: {\n\t borderRightWidth: true,\n\t borderRightStyle: true,\n\t borderRightColor: true\n\t },\n\t borderTop: {\n\t borderTopWidth: true,\n\t borderTopStyle: true,\n\t borderTopColor: true\n\t },\n\t font: {\n\t fontStyle: true,\n\t fontVariant: true,\n\t fontWeight: true,\n\t fontSize: true,\n\t lineHeight: true,\n\t fontFamily: true\n\t },\n\t outline: {\n\t outlineWidth: true,\n\t outlineStyle: true,\n\t outlineColor: true\n\t }\n\t};\n\t\n\tvar CSSProperty = {\n\t isUnitlessNumber: isUnitlessNumber,\n\t shorthandPropertyExpansions: shorthandPropertyExpansions\n\t};\n\t\n\tmodule.exports = CSSProperty;\n\n/***/ },\n/* 119 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar PooledClass = __webpack_require__(28);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * A specialized pseudo-event module to help keep track of components waiting to\n\t * be notified when their DOM representations are available for use.\n\t *\n\t * This implements `PooledClass`, so you should never need to instantiate this.\n\t * Instead, use `CallbackQueue.getPooled()`.\n\t *\n\t * @class ReactMountReady\n\t * @implements PooledClass\n\t * @internal\n\t */\n\t\n\tvar CallbackQueue = function () {\n\t function CallbackQueue(arg) {\n\t _classCallCheck(this, CallbackQueue);\n\t\n\t this._callbacks = null;\n\t this._contexts = null;\n\t this._arg = arg;\n\t }\n\t\n\t /**\n\t * Enqueues a callback to be invoked when `notifyAll` is invoked.\n\t *\n\t * @param {function} callback Invoked when `notifyAll` is invoked.\n\t * @param {?object} context Context to call `callback` with.\n\t * @internal\n\t */\n\t\n\t\n\t CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n\t this._callbacks = this._callbacks || [];\n\t this._callbacks.push(callback);\n\t this._contexts = this._contexts || [];\n\t this._contexts.push(context);\n\t };\n\t\n\t /**\n\t * Invokes all enqueued callbacks and clears the queue. This is invoked after\n\t * the DOM representation of a component has been created or updated.\n\t *\n\t * @internal\n\t */\n\t\n\t\n\t CallbackQueue.prototype.notifyAll = function notifyAll() {\n\t var callbacks = this._callbacks;\n\t var contexts = this._contexts;\n\t var arg = this._arg;\n\t if (callbacks && contexts) {\n\t !(callbacks.length === contexts.length) ? false ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n\t this._callbacks = null;\n\t this._contexts = null;\n\t for (var i = 0; i < callbacks.length; i++) {\n\t callbacks[i].call(contexts[i], arg);\n\t }\n\t callbacks.length = 0;\n\t contexts.length = 0;\n\t }\n\t };\n\t\n\t CallbackQueue.prototype.checkpoint = function checkpoint() {\n\t return this._callbacks ? this._callbacks.length : 0;\n\t };\n\t\n\t CallbackQueue.prototype.rollback = function rollback(len) {\n\t if (this._callbacks && this._contexts) {\n\t this._callbacks.length = len;\n\t this._contexts.length = len;\n\t }\n\t };\n\t\n\t /**\n\t * Resets the internal queue.\n\t *\n\t * @internal\n\t */\n\t\n\t\n\t CallbackQueue.prototype.reset = function reset() {\n\t this._callbacks = null;\n\t this._contexts = null;\n\t };\n\t\n\t /**\n\t * `PooledClass` looks for this.\n\t */\n\t\n\t\n\t CallbackQueue.prototype.destructor = function destructor() {\n\t this.reset();\n\t };\n\t\n\t return CallbackQueue;\n\t}();\n\t\n\tmodule.exports = PooledClass.addPoolingTo(CallbackQueue);\n\n/***/ },\n/* 120 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar DOMProperty = __webpack_require__(31);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactInstrumentation = __webpack_require__(18);\n\t\n\tvar quoteAttributeValueForBrowser = __webpack_require__(337);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\n\tvar illegalAttributeNameCache = {};\n\tvar validatedAttributeNameCache = {};\n\t\n\tfunction isAttributeNameSafe(attributeName) {\n\t if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n\t return true;\n\t }\n\t if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n\t return false;\n\t }\n\t if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n\t validatedAttributeNameCache[attributeName] = true;\n\t return true;\n\t }\n\t illegalAttributeNameCache[attributeName] = true;\n\t false ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n\t return false;\n\t}\n\t\n\tfunction shouldIgnoreValue(propertyInfo, value) {\n\t return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n\t}\n\t\n\t/**\n\t * Operations for dealing with DOM properties.\n\t */\n\tvar DOMPropertyOperations = {\n\t\n\t /**\n\t * Creates markup for the ID property.\n\t *\n\t * @param {string} id Unescaped ID.\n\t * @return {string} Markup string.\n\t */\n\t createMarkupForID: function (id) {\n\t return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n\t },\n\t\n\t setAttributeForID: function (node, id) {\n\t node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n\t },\n\t\n\t createMarkupForRoot: function () {\n\t return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n\t },\n\t\n\t setAttributeForRoot: function (node) {\n\t node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n\t },\n\t\n\t /**\n\t * Creates markup for a property.\n\t *\n\t * @param {string} name\n\t * @param {*} value\n\t * @return {?string} Markup string, or null if the property was invalid.\n\t */\n\t createMarkupForProperty: function (name, value) {\n\t var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n\t if (propertyInfo) {\n\t if (shouldIgnoreValue(propertyInfo, value)) {\n\t return '';\n\t }\n\t var attributeName = propertyInfo.attributeName;\n\t if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n\t return attributeName + '=\"\"';\n\t }\n\t return attributeName + '=' + quoteAttributeValueForBrowser(value);\n\t } else if (DOMProperty.isCustomAttribute(name)) {\n\t if (value == null) {\n\t return '';\n\t }\n\t return name + '=' + quoteAttributeValueForBrowser(value);\n\t }\n\t return null;\n\t },\n\t\n\t /**\n\t * Creates markup for a custom property.\n\t *\n\t * @param {string} name\n\t * @param {*} value\n\t * @return {string} Markup string, or empty string if the property was invalid.\n\t */\n\t createMarkupForCustomAttribute: function (name, value) {\n\t if (!isAttributeNameSafe(name) || value == null) {\n\t return '';\n\t }\n\t return name + '=' + quoteAttributeValueForBrowser(value);\n\t },\n\t\n\t /**\n\t * Sets the value for a property on a node.\n\t *\n\t * @param {DOMElement} node\n\t * @param {string} name\n\t * @param {*} value\n\t */\n\t setValueForProperty: function (node, name, value) {\n\t var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n\t if (propertyInfo) {\n\t var mutationMethod = propertyInfo.mutationMethod;\n\t if (mutationMethod) {\n\t mutationMethod(node, value);\n\t } else if (shouldIgnoreValue(propertyInfo, value)) {\n\t this.deleteValueForProperty(node, name);\n\t return;\n\t } else if (propertyInfo.mustUseProperty) {\n\t // Contrary to `setAttribute`, object properties are properly\n\t // `toString`ed by IE8/9.\n\t node[propertyInfo.propertyName] = value;\n\t } else {\n\t var attributeName = propertyInfo.attributeName;\n\t var namespace = propertyInfo.attributeNamespace;\n\t // `setAttribute` with objects becomes only `[object]` in IE8/9,\n\t // ('' + value) makes it output the correct toString()-value.\n\t if (namespace) {\n\t node.setAttributeNS(namespace, attributeName, '' + value);\n\t } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n\t node.setAttribute(attributeName, '');\n\t } else {\n\t node.setAttribute(attributeName, '' + value);\n\t }\n\t }\n\t } else if (DOMProperty.isCustomAttribute(name)) {\n\t DOMPropertyOperations.setValueForAttribute(node, name, value);\n\t return;\n\t }\n\t\n\t if (false) {\n\t var payload = {};\n\t payload[name] = value;\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n\t type: 'update attribute',\n\t payload: payload\n\t });\n\t }\n\t },\n\t\n\t setValueForAttribute: function (node, name, value) {\n\t if (!isAttributeNameSafe(name)) {\n\t return;\n\t }\n\t if (value == null) {\n\t node.removeAttribute(name);\n\t } else {\n\t node.setAttribute(name, '' + value);\n\t }\n\t\n\t if (false) {\n\t var payload = {};\n\t payload[name] = value;\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n\t type: 'update attribute',\n\t payload: payload\n\t });\n\t }\n\t },\n\t\n\t /**\n\t * Deletes an attributes from a node.\n\t *\n\t * @param {DOMElement} node\n\t * @param {string} name\n\t */\n\t deleteValueForAttribute: function (node, name) {\n\t node.removeAttribute(name);\n\t if (false) {\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n\t type: 'remove attribute',\n\t payload: name\n\t });\n\t }\n\t },\n\t\n\t /**\n\t * Deletes the value for a property on a node.\n\t *\n\t * @param {DOMElement} node\n\t * @param {string} name\n\t */\n\t deleteValueForProperty: function (node, name) {\n\t var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n\t if (propertyInfo) {\n\t var mutationMethod = propertyInfo.mutationMethod;\n\t if (mutationMethod) {\n\t mutationMethod(node, undefined);\n\t } else if (propertyInfo.mustUseProperty) {\n\t var propName = propertyInfo.propertyName;\n\t if (propertyInfo.hasBooleanValue) {\n\t node[propName] = false;\n\t } else {\n\t node[propName] = '';\n\t }\n\t } else {\n\t node.removeAttribute(propertyInfo.attributeName);\n\t }\n\t } else if (DOMProperty.isCustomAttribute(name)) {\n\t node.removeAttribute(name);\n\t }\n\t\n\t if (false) {\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n\t type: 'remove attribute',\n\t payload: name\n\t });\n\t }\n\t }\n\t\n\t};\n\t\n\tmodule.exports = DOMPropertyOperations;\n\n/***/ },\n/* 121 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactDOMComponentFlags = {\n\t hasCachedChildNodes: 1 << 0\n\t};\n\t\n\tmodule.exports = ReactDOMComponentFlags;\n\n/***/ },\n/* 122 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar LinkedValueUtils = __webpack_require__(77);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactUpdates = __webpack_require__(19);\n\t\n\tvar warning = __webpack_require__(4);\n\t\n\tvar didWarnValueLink = false;\n\tvar didWarnValueDefaultValue = false;\n\t\n\tfunction updateOptionsIfPendingUpdateAndMounted() {\n\t if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n\t this._wrapperState.pendingUpdate = false;\n\t\n\t var props = this._currentElement.props;\n\t var value = LinkedValueUtils.getValue(props);\n\t\n\t if (value != null) {\n\t updateOptions(this, Boolean(props.multiple), value);\n\t }\n\t }\n\t}\n\t\n\tfunction getDeclarationErrorAddendum(owner) {\n\t if (owner) {\n\t var name = owner.getName();\n\t if (name) {\n\t return ' Check the render method of `' + name + '`.';\n\t }\n\t }\n\t return '';\n\t}\n\t\n\tvar valuePropNames = ['value', 'defaultValue'];\n\t\n\t/**\n\t * Validation function for `value` and `defaultValue`.\n\t * @private\n\t */\n\tfunction checkSelectPropTypes(inst, props) {\n\t var owner = inst._currentElement._owner;\n\t LinkedValueUtils.checkPropTypes('select', props, owner);\n\t\n\t if (props.valueLink !== undefined && !didWarnValueLink) {\n\t false ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n\t didWarnValueLink = true;\n\t }\n\t\n\t for (var i = 0; i < valuePropNames.length; i++) {\n\t var propName = valuePropNames[i];\n\t if (props[propName] == null) {\n\t continue;\n\t }\n\t var isArray = Array.isArray(props[propName]);\n\t if (props.multiple && !isArray) {\n\t false ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n\t } else if (!props.multiple && isArray) {\n\t false ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * @param {ReactDOMComponent} inst\n\t * @param {boolean} multiple\n\t * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n\t * @private\n\t */\n\tfunction updateOptions(inst, multiple, propValue) {\n\t var selectedValue, i;\n\t var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\t\n\t if (multiple) {\n\t selectedValue = {};\n\t for (i = 0; i < propValue.length; i++) {\n\t selectedValue['' + propValue[i]] = true;\n\t }\n\t for (i = 0; i < options.length; i++) {\n\t var selected = selectedValue.hasOwnProperty(options[i].value);\n\t if (options[i].selected !== selected) {\n\t options[i].selected = selected;\n\t }\n\t }\n\t } else {\n\t // Do not set `select.value` as exact behavior isn't consistent across all\n\t // browsers for all cases.\n\t selectedValue = '' + propValue;\n\t for (i = 0; i < options.length; i++) {\n\t if (options[i].value === selectedValue) {\n\t options[i].selected = true;\n\t return;\n\t }\n\t }\n\t if (options.length) {\n\t options[0].selected = true;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Implements a <select> host component that allows optionally setting the\n\t * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n\t * stringable. If `multiple` is true, the prop must be an array of stringables.\n\t *\n\t * If `value` is not supplied (or null/undefined), user actions that change the\n\t * selected option will trigger updates to the rendered options.\n\t *\n\t * If it is supplied (and not null/undefined), the rendered options will not\n\t * update in response to user actions. Instead, the `value` prop must change in\n\t * order for the rendered options to update.\n\t *\n\t * If `defaultValue` is provided, any options with the supplied values will be\n\t * selected.\n\t */\n\tvar ReactDOMSelect = {\n\t getHostProps: function (inst, props) {\n\t return _assign({}, props, {\n\t onChange: inst._wrapperState.onChange,\n\t value: undefined\n\t });\n\t },\n\t\n\t mountWrapper: function (inst, props) {\n\t if (false) {\n\t checkSelectPropTypes(inst, props);\n\t }\n\t\n\t var value = LinkedValueUtils.getValue(props);\n\t inst._wrapperState = {\n\t pendingUpdate: false,\n\t initialValue: value != null ? value : props.defaultValue,\n\t listeners: null,\n\t onChange: _handleChange.bind(inst),\n\t wasMultiple: Boolean(props.multiple)\n\t };\n\t\n\t if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n\t false ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n\t didWarnValueDefaultValue = true;\n\t }\n\t },\n\t\n\t getSelectValueContext: function (inst) {\n\t // ReactDOMOption looks at this initial value so the initial generated\n\t // markup has correct `selected` attributes\n\t return inst._wrapperState.initialValue;\n\t },\n\t\n\t postUpdateWrapper: function (inst) {\n\t var props = inst._currentElement.props;\n\t\n\t // After the initial mount, we control selected-ness manually so don't pass\n\t // this value down\n\t inst._wrapperState.initialValue = undefined;\n\t\n\t var wasMultiple = inst._wrapperState.wasMultiple;\n\t inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\t\n\t var value = LinkedValueUtils.getValue(props);\n\t if (value != null) {\n\t inst._wrapperState.pendingUpdate = false;\n\t updateOptions(inst, Boolean(props.multiple), value);\n\t } else if (wasMultiple !== Boolean(props.multiple)) {\n\t // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n\t if (props.defaultValue != null) {\n\t updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n\t } else {\n\t // Revert the select back to its default unselected state.\n\t updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n\t }\n\t }\n\t }\n\t};\n\t\n\tfunction _handleChange(event) {\n\t var props = this._currentElement.props;\n\t var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\t\n\t if (this._rootNodeID) {\n\t this._wrapperState.pendingUpdate = true;\n\t }\n\t ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n\t return returnValue;\n\t}\n\t\n\tmodule.exports = ReactDOMSelect;\n\n/***/ },\n/* 123 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2014-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar emptyComponentFactory;\n\t\n\tvar ReactEmptyComponentInjection = {\n\t injectEmptyComponentFactory: function (factory) {\n\t emptyComponentFactory = factory;\n\t }\n\t};\n\t\n\tvar ReactEmptyComponent = {\n\t create: function (instantiate) {\n\t return emptyComponentFactory(instantiate);\n\t }\n\t};\n\t\n\tReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\t\n\tmodule.exports = ReactEmptyComponent;\n\n/***/ },\n/* 124 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactFeatureFlags = {\n\t // When true, call console.time() before and .timeEnd() after each top-level\n\t // render (both initial renders and updates). Useful when looking at prod-mode\n\t // timeline profiles in Chrome, for example.\n\t logTopLevelRenders: false\n\t};\n\t\n\tmodule.exports = ReactFeatureFlags;\n\n/***/ },\n/* 125 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5),\n\t _assign = __webpack_require__(6);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\tvar genericComponentClass = null;\n\t// This registry keeps track of wrapper classes around host tags.\n\tvar tagToComponentClass = {};\n\tvar textComponentClass = null;\n\t\n\tvar ReactHostComponentInjection = {\n\t // This accepts a class that receives the tag string. This is a catch all\n\t // that can render any kind of tag.\n\t injectGenericComponentClass: function (componentClass) {\n\t genericComponentClass = componentClass;\n\t },\n\t // This accepts a text component class that takes the text string to be\n\t // rendered as props.\n\t injectTextComponentClass: function (componentClass) {\n\t textComponentClass = componentClass;\n\t },\n\t // This accepts a keyed object with classes as values. Each key represents a\n\t // tag. That particular tag will use this class instead of the generic one.\n\t injectComponentClasses: function (componentClasses) {\n\t _assign(tagToComponentClass, componentClasses);\n\t }\n\t};\n\t\n\t/**\n\t * Get a host internal component class for a specific tag.\n\t *\n\t * @param {ReactElement} element The element to create.\n\t * @return {function} The internal class constructor function.\n\t */\n\tfunction createInternalComponent(element) {\n\t !genericComponentClass ? false ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n\t return new genericComponentClass(element);\n\t}\n\t\n\t/**\n\t * @param {ReactText} text\n\t * @return {ReactComponent}\n\t */\n\tfunction createInstanceForText(text) {\n\t return new textComponentClass(text);\n\t}\n\t\n\t/**\n\t * @param {ReactComponent} component\n\t * @return {boolean}\n\t */\n\tfunction isTextComponent(component) {\n\t return component instanceof textComponentClass;\n\t}\n\t\n\tvar ReactHostComponent = {\n\t createInternalComponent: createInternalComponent,\n\t createInstanceForText: createInstanceForText,\n\t isTextComponent: isTextComponent,\n\t injection: ReactHostComponentInjection\n\t};\n\t\n\tmodule.exports = ReactHostComponent;\n\n/***/ },\n/* 126 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactDOMSelection = __webpack_require__(296);\n\t\n\tvar containsNode = __webpack_require__(248);\n\tvar focusNode = __webpack_require__(110);\n\tvar getActiveElement = __webpack_require__(111);\n\t\n\tfunction isInDocument(node) {\n\t return containsNode(document.documentElement, node);\n\t}\n\t\n\t/**\n\t * @ReactInputSelection: React input selection module. Based on Selection.js,\n\t * but modified to be suitable for react and has a couple of bug fixes (doesn't\n\t * assume buttons have range selections allowed).\n\t * Input selection module for React.\n\t */\n\tvar ReactInputSelection = {\n\t\n\t hasSelectionCapabilities: function (elem) {\n\t var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\t return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n\t },\n\t\n\t getSelectionInformation: function () {\n\t var focusedElem = getActiveElement();\n\t return {\n\t focusedElem: focusedElem,\n\t selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n\t };\n\t },\n\t\n\t /**\n\t * @restoreSelection: If any selection information was potentially lost,\n\t * restore it. This is useful when performing operations that could remove dom\n\t * nodes and place them back in, resulting in focus being lost.\n\t */\n\t restoreSelection: function (priorSelectionInformation) {\n\t var curFocusedElem = getActiveElement();\n\t var priorFocusedElem = priorSelectionInformation.focusedElem;\n\t var priorSelectionRange = priorSelectionInformation.selectionRange;\n\t if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n\t if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n\t ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n\t }\n\t focusNode(priorFocusedElem);\n\t }\n\t },\n\t\n\t /**\n\t * @getSelection: Gets the selection bounds of a focused textarea, input or\n\t * contentEditable node.\n\t * -@input: Look up selection bounds of this input\n\t * -@return {start: selectionStart, end: selectionEnd}\n\t */\n\t getSelection: function (input) {\n\t var selection;\n\t\n\t if ('selectionStart' in input) {\n\t // Modern browser with input or textarea.\n\t selection = {\n\t start: input.selectionStart,\n\t end: input.selectionEnd\n\t };\n\t } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n\t // IE8 input.\n\t var range = document.selection.createRange();\n\t // There can only be one selection per document in IE, so it must\n\t // be in our element.\n\t if (range.parentElement() === input) {\n\t selection = {\n\t start: -range.moveStart('character', -input.value.length),\n\t end: -range.moveEnd('character', -input.value.length)\n\t };\n\t }\n\t } else {\n\t // Content editable or old IE textarea.\n\t selection = ReactDOMSelection.getOffsets(input);\n\t }\n\t\n\t return selection || { start: 0, end: 0 };\n\t },\n\t\n\t /**\n\t * @setSelection: Sets the selection bounds of a textarea or input and focuses\n\t * the input.\n\t * -@input Set selection bounds of this input or textarea\n\t * -@offsets Object of same form that is returned from get*\n\t */\n\t setSelection: function (input, offsets) {\n\t var start = offsets.start;\n\t var end = offsets.end;\n\t if (end === undefined) {\n\t end = start;\n\t }\n\t\n\t if ('selectionStart' in input) {\n\t input.selectionStart = start;\n\t input.selectionEnd = Math.min(end, input.value.length);\n\t } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n\t var range = input.createTextRange();\n\t range.collapse(true);\n\t range.moveStart('character', start);\n\t range.moveEnd('character', end - start);\n\t range.select();\n\t } else {\n\t ReactDOMSelection.setOffsets(input, offsets);\n\t }\n\t }\n\t};\n\t\n\tmodule.exports = ReactInputSelection;\n\n/***/ },\n/* 127 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar DOMLazyTree = __webpack_require__(30);\n\tvar DOMProperty = __webpack_require__(31);\n\tvar React = __webpack_require__(36);\n\tvar ReactBrowserEventEmitter = __webpack_require__(51);\n\tvar ReactCurrentOwner = __webpack_require__(21);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactDOMContainerInfo = __webpack_require__(290);\n\tvar ReactDOMFeatureFlags = __webpack_require__(292);\n\tvar ReactFeatureFlags = __webpack_require__(124);\n\tvar ReactInstanceMap = __webpack_require__(42);\n\tvar ReactInstrumentation = __webpack_require__(18);\n\tvar ReactMarkupChecksum = __webpack_require__(306);\n\tvar ReactReconciler = __webpack_require__(32);\n\tvar ReactUpdateQueue = __webpack_require__(80);\n\tvar ReactUpdates = __webpack_require__(19);\n\t\n\tvar emptyObject = __webpack_require__(39);\n\tvar instantiateReactComponent = __webpack_require__(134);\n\tvar invariant = __webpack_require__(3);\n\tvar setInnerHTML = __webpack_require__(55);\n\tvar shouldUpdateReactComponent = __webpack_require__(86);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\n\tvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\t\n\tvar ELEMENT_NODE_TYPE = 1;\n\tvar DOC_NODE_TYPE = 9;\n\tvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\t\n\tvar instancesByReactRootID = {};\n\t\n\t/**\n\t * Finds the index of the first character\n\t * that's not common between the two given strings.\n\t *\n\t * @return {number} the index of the character where the strings diverge\n\t */\n\tfunction firstDifferenceIndex(string1, string2) {\n\t var minLen = Math.min(string1.length, string2.length);\n\t for (var i = 0; i < minLen; i++) {\n\t if (string1.charAt(i) !== string2.charAt(i)) {\n\t return i;\n\t }\n\t }\n\t return string1.length === string2.length ? -1 : minLen;\n\t}\n\t\n\t/**\n\t * @param {DOMElement|DOMDocument} container DOM element that may contain\n\t * a React component\n\t * @return {?*} DOM element that may have the reactRoot ID, or null.\n\t */\n\tfunction getReactRootElementInContainer(container) {\n\t if (!container) {\n\t return null;\n\t }\n\t\n\t if (container.nodeType === DOC_NODE_TYPE) {\n\t return container.documentElement;\n\t } else {\n\t return container.firstChild;\n\t }\n\t}\n\t\n\tfunction internalGetID(node) {\n\t // If node is something like a window, document, or text node, none of\n\t // which support attributes or a .getAttribute method, gracefully return\n\t // the empty string, as if the attribute were missing.\n\t return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n\t}\n\t\n\t/**\n\t * Mounts this component and inserts it into the DOM.\n\t *\n\t * @param {ReactComponent} componentInstance The instance to mount.\n\t * @param {DOMElement} container DOM element to mount into.\n\t * @param {ReactReconcileTransaction} transaction\n\t * @param {boolean} shouldReuseMarkup If true, do not insert markup\n\t */\n\tfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n\t var markerName;\n\t if (ReactFeatureFlags.logTopLevelRenders) {\n\t var wrappedElement = wrapperInstance._currentElement.props.child;\n\t var type = wrappedElement.type;\n\t markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n\t console.time(markerName);\n\t }\n\t\n\t var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n\t );\n\t\n\t if (markerName) {\n\t console.timeEnd(markerName);\n\t }\n\t\n\t wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n\t ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n\t}\n\t\n\t/**\n\t * Batched mount.\n\t *\n\t * @param {ReactComponent} componentInstance The instance to mount.\n\t * @param {DOMElement} container DOM element to mount into.\n\t * @param {boolean} shouldReuseMarkup If true, do not insert markup\n\t */\n\tfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n\t var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n\t /* useCreateElement */\n\t !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n\t transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n\t ReactUpdates.ReactReconcileTransaction.release(transaction);\n\t}\n\t\n\t/**\n\t * Unmounts a component and removes it from the DOM.\n\t *\n\t * @param {ReactComponent} instance React component instance.\n\t * @param {DOMElement} container DOM element to unmount from.\n\t * @final\n\t * @internal\n\t * @see {ReactMount.unmountComponentAtNode}\n\t */\n\tfunction unmountComponentFromNode(instance, container, safely) {\n\t if (false) {\n\t ReactInstrumentation.debugTool.onBeginFlush();\n\t }\n\t ReactReconciler.unmountComponent(instance, safely);\n\t if (false) {\n\t ReactInstrumentation.debugTool.onEndFlush();\n\t }\n\t\n\t if (container.nodeType === DOC_NODE_TYPE) {\n\t container = container.documentElement;\n\t }\n\t\n\t // http://jsperf.com/emptying-a-node\n\t while (container.lastChild) {\n\t container.removeChild(container.lastChild);\n\t }\n\t}\n\t\n\t/**\n\t * True if the supplied DOM node has a direct React-rendered child that is\n\t * not a React root element. Useful for warning in `render`,\n\t * `unmountComponentAtNode`, etc.\n\t *\n\t * @param {?DOMElement} node The candidate DOM node.\n\t * @return {boolean} True if the DOM element contains a direct child that was\n\t * rendered by React but is not a root element.\n\t * @internal\n\t */\n\tfunction hasNonRootReactChild(container) {\n\t var rootEl = getReactRootElementInContainer(container);\n\t if (rootEl) {\n\t var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n\t return !!(inst && inst._hostParent);\n\t }\n\t}\n\t\n\t/**\n\t * True if the supplied DOM node is a React DOM element and\n\t * it has been rendered by another copy of React.\n\t *\n\t * @param {?DOMElement} node The candidate DOM node.\n\t * @return {boolean} True if the DOM has been rendered by another copy of React\n\t * @internal\n\t */\n\tfunction nodeIsRenderedByOtherInstance(container) {\n\t var rootEl = getReactRootElementInContainer(container);\n\t return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n\t}\n\t\n\t/**\n\t * True if the supplied DOM node is a valid node element.\n\t *\n\t * @param {?DOMElement} node The candidate DOM node.\n\t * @return {boolean} True if the DOM is a valid DOM node.\n\t * @internal\n\t */\n\tfunction isValidContainer(node) {\n\t return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n\t}\n\t\n\t/**\n\t * True if the supplied DOM node is a valid React node element.\n\t *\n\t * @param {?DOMElement} node The candidate DOM node.\n\t * @return {boolean} True if the DOM is a valid React DOM node.\n\t * @internal\n\t */\n\tfunction isReactNode(node) {\n\t return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n\t}\n\t\n\tfunction getHostRootInstanceInContainer(container) {\n\t var rootEl = getReactRootElementInContainer(container);\n\t var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n\t return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n\t}\n\t\n\tfunction getTopLevelWrapperInContainer(container) {\n\t var root = getHostRootInstanceInContainer(container);\n\t return root ? root._hostContainerInfo._topLevelWrapper : null;\n\t}\n\t\n\t/**\n\t * Temporary (?) hack so that we can store all top-level pending updates on\n\t * composites instead of having to worry about different types of components\n\t * here.\n\t */\n\tvar topLevelRootCounter = 1;\n\tvar TopLevelWrapper = function () {\n\t this.rootID = topLevelRootCounter++;\n\t};\n\tTopLevelWrapper.prototype.isReactComponent = {};\n\tif (false) {\n\t TopLevelWrapper.displayName = 'TopLevelWrapper';\n\t}\n\tTopLevelWrapper.prototype.render = function () {\n\t return this.props.child;\n\t};\n\tTopLevelWrapper.isReactTopLevelWrapper = true;\n\t\n\t/**\n\t * Mounting is the process of initializing a React component by creating its\n\t * representative DOM elements and inserting them into a supplied `container`.\n\t * Any prior content inside `container` is destroyed in the process.\n\t *\n\t * ReactMount.render(\n\t * component,\n\t * document.getElementById('container')\n\t * );\n\t *\n\t * <div id=\"container\"> <-- Supplied `container`.\n\t * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n\t * // ... component.\n\t * </div>\n\t * </div>\n\t *\n\t * Inside of `container`, the first element rendered is the \"reactRoot\".\n\t */\n\tvar ReactMount = {\n\t\n\t TopLevelWrapper: TopLevelWrapper,\n\t\n\t /**\n\t * Used by devtools. The keys are not important.\n\t */\n\t _instancesByReactRootID: instancesByReactRootID,\n\t\n\t /**\n\t * This is a hook provided to support rendering React components while\n\t * ensuring that the apparent scroll position of its `container` does not\n\t * change.\n\t *\n\t * @param {DOMElement} container The `container` being rendered into.\n\t * @param {function} renderCallback This must be called once to do the render.\n\t */\n\t scrollMonitor: function (container, renderCallback) {\n\t renderCallback();\n\t },\n\t\n\t /**\n\t * Take a component that's already mounted into the DOM and replace its props\n\t * @param {ReactComponent} prevComponent component instance already in the DOM\n\t * @param {ReactElement} nextElement component instance to render\n\t * @param {DOMElement} container container to render into\n\t * @param {?function} callback function triggered on completion\n\t */\n\t _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n\t ReactMount.scrollMonitor(container, function () {\n\t ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n\t if (callback) {\n\t ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n\t }\n\t });\n\t\n\t return prevComponent;\n\t },\n\t\n\t /**\n\t * Render a new component into the DOM. Hooked by hooks!\n\t *\n\t * @param {ReactElement} nextElement element to render\n\t * @param {DOMElement} container container to render into\n\t * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n\t * @return {ReactComponent} nextComponent\n\t */\n\t _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n\t // Various parts of our code (such as ReactCompositeComponent's\n\t // _renderValidatedComponent) assume that calls to render aren't nested;\n\t // verify that that's the case.\n\t false ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\t\n\t !isValidContainer(container) ? false ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\t\n\t ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n\t var componentInstance = instantiateReactComponent(nextElement, false);\n\t\n\t // The initial render is synchronous but any updates that happen during\n\t // rendering, in componentWillMount or componentDidMount, will be batched\n\t // according to the current batching strategy.\n\t\n\t ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\t\n\t var wrapperID = componentInstance._instance.rootID;\n\t instancesByReactRootID[wrapperID] = componentInstance;\n\t\n\t return componentInstance;\n\t },\n\t\n\t /**\n\t * Renders a React component into the DOM in the supplied `container`.\n\t *\n\t * If the React component was previously rendered into `container`, this will\n\t * perform an update on it and only mutate the DOM as necessary to reflect the\n\t * latest React component.\n\t *\n\t * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n\t * @param {ReactElement} nextElement Component element to render.\n\t * @param {DOMElement} container DOM element to render into.\n\t * @param {?function} callback function triggered on completion\n\t * @return {ReactComponent} Component instance rendered in `container`.\n\t */\n\t renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n\t !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? false ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n\t return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n\t },\n\t\n\t _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n\t ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n\t !React.isValidElement(nextElement) ? false ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' :\n\t // Check if it quacks like an element\n\t nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\t\n\t false ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\t\n\t var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });\n\t\n\t var nextContext;\n\t if (parentComponent) {\n\t var parentInst = ReactInstanceMap.get(parentComponent);\n\t nextContext = parentInst._processChildContext(parentInst._context);\n\t } else {\n\t nextContext = emptyObject;\n\t }\n\t\n\t var prevComponent = getTopLevelWrapperInContainer(container);\n\t\n\t if (prevComponent) {\n\t var prevWrappedElement = prevComponent._currentElement;\n\t var prevElement = prevWrappedElement.props.child;\n\t if (shouldUpdateReactComponent(prevElement, nextElement)) {\n\t var publicInst = prevComponent._renderedComponent.getPublicInstance();\n\t var updatedCallback = callback && function () {\n\t callback.call(publicInst);\n\t };\n\t ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n\t return publicInst;\n\t } else {\n\t ReactMount.unmountComponentAtNode(container);\n\t }\n\t }\n\t\n\t var reactRootElement = getReactRootElementInContainer(container);\n\t var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n\t var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\t\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\t\n\t if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n\t var rootElementSibling = reactRootElement;\n\t while (rootElementSibling) {\n\t if (internalGetID(rootElementSibling)) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n\t break;\n\t }\n\t rootElementSibling = rootElementSibling.nextSibling;\n\t }\n\t }\n\t }\n\t\n\t var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n\t var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n\t if (callback) {\n\t callback.call(component);\n\t }\n\t return component;\n\t },\n\t\n\t /**\n\t * Renders a React component into the DOM in the supplied `container`.\n\t * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n\t *\n\t * If the React component was previously rendered into `container`, this will\n\t * perform an update on it and only mutate the DOM as necessary to reflect the\n\t * latest React component.\n\t *\n\t * @param {ReactElement} nextElement Component element to render.\n\t * @param {DOMElement} container DOM element to render into.\n\t * @param {?function} callback function triggered on completion\n\t * @return {ReactComponent} Component instance rendered in `container`.\n\t */\n\t render: function (nextElement, container, callback) {\n\t return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n\t },\n\t\n\t /**\n\t * Unmounts and destroys the React component rendered in the `container`.\n\t * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n\t *\n\t * @param {DOMElement} container DOM element containing a React component.\n\t * @return {boolean} True if a component was found in and unmounted from\n\t * `container`\n\t */\n\t unmountComponentAtNode: function (container) {\n\t // Various parts of our code (such as ReactCompositeComponent's\n\t // _renderValidatedComponent) assume that calls to render aren't nested;\n\t // verify that that's the case. (Strictly speaking, unmounting won't cause a\n\t // render but we still don't expect to be in a render call here.)\n\t false ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\t\n\t !isValidContainer(container) ? false ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\t\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0;\n\t }\n\t\n\t var prevComponent = getTopLevelWrapperInContainer(container);\n\t if (!prevComponent) {\n\t // Check if the node being unmounted was rendered by React, but isn't a\n\t // root node.\n\t var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\t\n\t // Check if the container itself is a React root node.\n\t var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\t\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n\t }\n\t\n\t return false;\n\t }\n\t delete instancesByReactRootID[prevComponent._instance.rootID];\n\t ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n\t return true;\n\t },\n\t\n\t _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n\t !isValidContainer(container) ? false ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\t\n\t if (shouldReuseMarkup) {\n\t var rootElement = getReactRootElementInContainer(container);\n\t if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n\t ReactDOMComponentTree.precacheNode(instance, rootElement);\n\t return;\n\t } else {\n\t var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\t rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\t\n\t var rootMarkup = rootElement.outerHTML;\n\t rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\t\n\t var normalizedMarkup = markup;\n\t if (false) {\n\t // because rootMarkup is retrieved from the DOM, various normalizations\n\t // will have occurred which will not be present in `markup`. Here,\n\t // insert markup into a <div> or <iframe> depending on the container\n\t // type to perform the same normalizations before comparing.\n\t var normalizer;\n\t if (container.nodeType === ELEMENT_NODE_TYPE) {\n\t normalizer = document.createElement('div');\n\t normalizer.innerHTML = markup;\n\t normalizedMarkup = normalizer.innerHTML;\n\t } else {\n\t normalizer = document.createElement('iframe');\n\t document.body.appendChild(normalizer);\n\t normalizer.contentDocument.write(markup);\n\t normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n\t document.body.removeChild(normalizer);\n\t }\n\t }\n\t\n\t var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n\t var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\t\n\t !(container.nodeType !== DOC_NODE_TYPE) ? false ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\t\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n\t }\n\t }\n\t }\n\t\n\t !(container.nodeType !== DOC_NODE_TYPE) ? false ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\t\n\t if (transaction.useCreateElement) {\n\t while (container.lastChild) {\n\t container.removeChild(container.lastChild);\n\t }\n\t DOMLazyTree.insertTreeBefore(container, markup, null);\n\t } else {\n\t setInnerHTML(container, markup);\n\t ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n\t }\n\t\n\t if (false) {\n\t var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n\t if (hostNode._debugID !== 0) {\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: hostNode._debugID,\n\t type: 'mount',\n\t payload: markup.toString()\n\t });\n\t }\n\t }\n\t }\n\t};\n\t\n\tmodule.exports = ReactMount;\n\n/***/ },\n/* 128 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar React = __webpack_require__(36);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\tvar ReactNodeTypes = {\n\t HOST: 0,\n\t COMPOSITE: 1,\n\t EMPTY: 2,\n\t\n\t getType: function (node) {\n\t if (node === null || node === false) {\n\t return ReactNodeTypes.EMPTY;\n\t } else if (React.isValidElement(node)) {\n\t if (typeof node.type === 'function') {\n\t return ReactNodeTypes.COMPOSITE;\n\t } else {\n\t return ReactNodeTypes.HOST;\n\t }\n\t }\n\t true ? false ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n\t }\n\t};\n\t\n\tmodule.exports = ReactNodeTypes;\n\n/***/ },\n/* 129 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ViewportMetrics = {\n\t\n\t currentScrollLeft: 0,\n\t\n\t currentScrollTop: 0,\n\t\n\t refreshScrollValues: function (scrollPosition) {\n\t ViewportMetrics.currentScrollLeft = scrollPosition.x;\n\t ViewportMetrics.currentScrollTop = scrollPosition.y;\n\t }\n\t\n\t};\n\t\n\tmodule.exports = ViewportMetrics;\n\n/***/ },\n/* 130 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * Accumulates items that must not be null or undefined into the first one. This\n\t * is used to conserve memory by avoiding array allocations, and thus sacrifices\n\t * API cleanness. Since `current` can be null before being passed in and not\n\t * null after this function, make sure to assign it back to `current`:\n\t *\n\t * `a = accumulateInto(a, b);`\n\t *\n\t * This API should be sparingly used. Try `accumulate` for something cleaner.\n\t *\n\t * @return {*|array<*>} An accumulation of items.\n\t */\n\t\n\tfunction accumulateInto(current, next) {\n\t !(next != null) ? false ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\t\n\t if (current == null) {\n\t return next;\n\t }\n\t\n\t // Both are not empty. Warning: Never call x.concat(y) when you are not\n\t // certain that x is an Array (x could be a string with concat method).\n\t if (Array.isArray(current)) {\n\t if (Array.isArray(next)) {\n\t current.push.apply(current, next);\n\t return current;\n\t }\n\t current.push(next);\n\t return current;\n\t }\n\t\n\t if (Array.isArray(next)) {\n\t // A bit too dangerous to mutate `next`.\n\t return [current].concat(next);\n\t }\n\t\n\t return [current, next];\n\t}\n\t\n\tmodule.exports = accumulateInto;\n\n/***/ },\n/* 131 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * @param {array} arr an \"accumulation\" of items which is either an Array or\n\t * a single item. Useful when paired with the `accumulate` module. This is a\n\t * simple utility that allows us to reason about a collection of items, but\n\t * handling the case when there is exactly one item (and we do not need to\n\t * allocate an array).\n\t */\n\t\n\tfunction forEachAccumulated(arr, cb, scope) {\n\t if (Array.isArray(arr)) {\n\t arr.forEach(cb, scope);\n\t } else if (arr) {\n\t cb.call(scope, arr);\n\t }\n\t}\n\t\n\tmodule.exports = forEachAccumulated;\n\n/***/ },\n/* 132 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactNodeTypes = __webpack_require__(128);\n\t\n\tfunction getHostComponentFromComposite(inst) {\n\t var type;\n\t\n\t while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n\t inst = inst._renderedComponent;\n\t }\n\t\n\t if (type === ReactNodeTypes.HOST) {\n\t return inst._renderedComponent;\n\t } else if (type === ReactNodeTypes.EMPTY) {\n\t return null;\n\t }\n\t}\n\t\n\tmodule.exports = getHostComponentFromComposite;\n\n/***/ },\n/* 133 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\t\n\tvar contentKey = null;\n\t\n\t/**\n\t * Gets the key used to access text content on a DOM node.\n\t *\n\t * @return {?string} Key used to access text content.\n\t * @internal\n\t */\n\tfunction getTextContentAccessor() {\n\t if (!contentKey && ExecutionEnvironment.canUseDOM) {\n\t // Prefer textContent to innerText because many browsers support both but\n\t // SVG <text> elements don't support innerText even when <div> does.\n\t contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n\t }\n\t return contentKey;\n\t}\n\t\n\tmodule.exports = getTextContentAccessor;\n\n/***/ },\n/* 134 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5),\n\t _assign = __webpack_require__(6);\n\t\n\tvar ReactCompositeComponent = __webpack_require__(287);\n\tvar ReactEmptyComponent = __webpack_require__(123);\n\tvar ReactHostComponent = __webpack_require__(125);\n\t\n\tvar getNextDebugID = __webpack_require__(334);\n\tvar invariant = __webpack_require__(3);\n\tvar warning = __webpack_require__(4);\n\t\n\t// To avoid a cyclic dependency, we create the final class in this module\n\tvar ReactCompositeComponentWrapper = function (element) {\n\t this.construct(element);\n\t};\n\t_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n\t _instantiateReactComponent: instantiateReactComponent\n\t});\n\t\n\tfunction getDeclarationErrorAddendum(owner) {\n\t if (owner) {\n\t var name = owner.getName();\n\t if (name) {\n\t return ' Check the render method of `' + name + '`.';\n\t }\n\t }\n\t return '';\n\t}\n\t\n\t/**\n\t * Check if the type reference is a known internal type. I.e. not a user\n\t * provided composite type.\n\t *\n\t * @param {function} type\n\t * @return {boolean} Returns true if this is a valid internal type.\n\t */\n\tfunction isInternalComponentType(type) {\n\t return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n\t}\n\t\n\t/**\n\t * Given a ReactNode, create an instance that will actually be mounted.\n\t *\n\t * @param {ReactNode} node\n\t * @param {boolean} shouldHaveDebugID\n\t * @return {object} A new instance of the element's constructor.\n\t * @protected\n\t */\n\tfunction instantiateReactComponent(node, shouldHaveDebugID) {\n\t var instance;\n\t\n\t if (node === null || node === false) {\n\t instance = ReactEmptyComponent.create(instantiateReactComponent);\n\t } else if (typeof node === 'object') {\n\t var element = node;\n\t !(element && (typeof element.type === 'function' || typeof element.type === 'string')) ? false ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', element.type == null ? element.type : typeof element.type, getDeclarationErrorAddendum(element._owner)) : _prodInvariant('130', element.type == null ? element.type : typeof element.type, getDeclarationErrorAddendum(element._owner)) : void 0;\n\t\n\t // Special case string values\n\t if (typeof element.type === 'string') {\n\t instance = ReactHostComponent.createInternalComponent(element);\n\t } else if (isInternalComponentType(element.type)) {\n\t // This is temporarily available for custom components that are not string\n\t // representations. I.e. ART. Once those are updated to use the string\n\t // representation, we can drop this code path.\n\t instance = new element.type(element);\n\t\n\t // We renamed this. Allow the old name for compat. :(\n\t if (!instance.getHostNode) {\n\t instance.getHostNode = instance.getNativeNode;\n\t }\n\t } else {\n\t instance = new ReactCompositeComponentWrapper(element);\n\t }\n\t } else if (typeof node === 'string' || typeof node === 'number') {\n\t instance = ReactHostComponent.createInstanceForText(node);\n\t } else {\n\t true ? false ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;\n\t }\n\t\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n\t }\n\t\n\t // These two fields are used by the DOM and ART diffing algorithms\n\t // respectively. Instead of using expandos on components, we should be\n\t // storing the state needed by the diffing algorithms elsewhere.\n\t instance._mountIndex = 0;\n\t instance._mountImage = null;\n\t\n\t if (false) {\n\t instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n\t }\n\t\n\t // Internal instances should fully constructed at this point, so they should\n\t // not get any new fields added to them at this point.\n\t if (false) {\n\t if (Object.preventExtensions) {\n\t Object.preventExtensions(instance);\n\t }\n\t }\n\t\n\t return instance;\n\t}\n\t\n\tmodule.exports = instantiateReactComponent;\n\n/***/ },\n/* 135 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n\t */\n\t\n\tvar supportedInputTypes = {\n\t 'color': true,\n\t 'date': true,\n\t 'datetime': true,\n\t 'datetime-local': true,\n\t 'email': true,\n\t 'month': true,\n\t 'number': true,\n\t 'password': true,\n\t 'range': true,\n\t 'search': true,\n\t 'tel': true,\n\t 'text': true,\n\t 'time': true,\n\t 'url': true,\n\t 'week': true\n\t};\n\t\n\tfunction isTextInputElement(elem) {\n\t var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\t\n\t if (nodeName === 'input') {\n\t return !!supportedInputTypes[elem.type];\n\t }\n\t\n\t if (nodeName === 'textarea') {\n\t return true;\n\t }\n\t\n\t return false;\n\t}\n\t\n\tmodule.exports = isTextInputElement;\n\n/***/ },\n/* 136 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\tvar escapeTextContentForBrowser = __webpack_require__(54);\n\tvar setInnerHTML = __webpack_require__(55);\n\t\n\t/**\n\t * Set the textContent property of a node, ensuring that whitespace is preserved\n\t * even in IE8. innerText is a poor substitute for textContent and, among many\n\t * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n\t * as it should.\n\t *\n\t * @param {DOMElement} node\n\t * @param {string} text\n\t * @internal\n\t */\n\tvar setTextContent = function (node, text) {\n\t if (text) {\n\t var firstChild = node.firstChild;\n\t\n\t if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n\t firstChild.nodeValue = text;\n\t return;\n\t }\n\t }\n\t node.textContent = text;\n\t};\n\t\n\tif (ExecutionEnvironment.canUseDOM) {\n\t if (!('textContent' in document.documentElement)) {\n\t setTextContent = function (node, text) {\n\t if (node.nodeType === 3) {\n\t node.nodeValue = text;\n\t return;\n\t }\n\t setInnerHTML(node, escapeTextContentForBrowser(text));\n\t };\n\t }\n\t}\n\t\n\tmodule.exports = setTextContent;\n\n/***/ },\n/* 137 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar ReactCurrentOwner = __webpack_require__(21);\n\tvar REACT_ELEMENT_TYPE = __webpack_require__(302);\n\t\n\tvar getIteratorFn = __webpack_require__(333);\n\tvar invariant = __webpack_require__(3);\n\tvar KeyEscapeUtils = __webpack_require__(76);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar SEPARATOR = '.';\n\tvar SUBSEPARATOR = ':';\n\t\n\t/**\n\t * This is inlined from ReactElement since this file is shared between\n\t * isomorphic and renderers. We could extract this to a\n\t *\n\t */\n\t\n\t/**\n\t * TODO: Test that a single child and an array with one item have the same key\n\t * pattern.\n\t */\n\t\n\tvar didWarnAboutMaps = false;\n\t\n\t/**\n\t * Generate a key string that identifies a component within a set.\n\t *\n\t * @param {*} component A component that could contain a manual key.\n\t * @param {number} index Index that is used if a manual key is not provided.\n\t * @return {string}\n\t */\n\tfunction getComponentKey(component, index) {\n\t // Do some typechecking here since we call this blindly. We want to ensure\n\t // that we don't block potential future ES APIs.\n\t if (component && typeof component === 'object' && component.key != null) {\n\t // Explicit key\n\t return KeyEscapeUtils.escape(component.key);\n\t }\n\t // Implicit key determined by the index in the set\n\t return index.toString(36);\n\t}\n\t\n\t/**\n\t * @param {?*} children Children tree container.\n\t * @param {!string} nameSoFar Name of the key path so far.\n\t * @param {!function} callback Callback to invoke with each child found.\n\t * @param {?*} traverseContext Used to pass information throughout the traversal\n\t * process.\n\t * @return {!number} The number of children in this subtree.\n\t */\n\tfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n\t var type = typeof children;\n\t\n\t if (type === 'undefined' || type === 'boolean') {\n\t // All of the above are perceived as null.\n\t children = null;\n\t }\n\t\n\t if (children === null || type === 'string' || type === 'number' ||\n\t // The following is inlined from ReactElement. This means we can optimize\n\t // some checks. React Fiber also inlines this logic for similar purposes.\n\t type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n\t callback(traverseContext, children,\n\t // If it's the only child, treat the name as if it was wrapped in an array\n\t // so that it's consistent if the number of children grows.\n\t nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n\t return 1;\n\t }\n\t\n\t var child;\n\t var nextName;\n\t var subtreeCount = 0; // Count of children found in the current subtree.\n\t var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\t\n\t if (Array.isArray(children)) {\n\t for (var i = 0; i < children.length; i++) {\n\t child = children[i];\n\t nextName = nextNamePrefix + getComponentKey(child, i);\n\t subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n\t }\n\t } else {\n\t var iteratorFn = getIteratorFn(children);\n\t if (iteratorFn) {\n\t var iterator = iteratorFn.call(children);\n\t var step;\n\t if (iteratorFn !== children.entries) {\n\t var ii = 0;\n\t while (!(step = iterator.next()).done) {\n\t child = step.value;\n\t nextName = nextNamePrefix + getComponentKey(child, ii++);\n\t subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n\t }\n\t } else {\n\t if (false) {\n\t var mapsAsChildrenAddendum = '';\n\t if (ReactCurrentOwner.current) {\n\t var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n\t if (mapsAsChildrenOwnerName) {\n\t mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n\t }\n\t }\n\t process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n\t didWarnAboutMaps = true;\n\t }\n\t // Iterator will provide entry [k,v] tuples rather than values.\n\t while (!(step = iterator.next()).done) {\n\t var entry = step.value;\n\t if (entry) {\n\t child = entry[1];\n\t nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n\t subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n\t }\n\t }\n\t }\n\t } else if (type === 'object') {\n\t var addendum = '';\n\t if (false) {\n\t addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n\t if (children._isReactElement) {\n\t addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n\t }\n\t if (ReactCurrentOwner.current) {\n\t var name = ReactCurrentOwner.current.getName();\n\t if (name) {\n\t addendum += ' Check the render method of `' + name + '`.';\n\t }\n\t }\n\t }\n\t var childrenString = String(children);\n\t true ? false ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n\t }\n\t }\n\t\n\t return subtreeCount;\n\t}\n\t\n\t/**\n\t * Traverses children that are typically specified as `props.children`, but\n\t * might also be specified through attributes:\n\t *\n\t * - `traverseAllChildren(this.props.children, ...)`\n\t * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n\t *\n\t * The `traverseContext` is an optional argument that is passed through the\n\t * entire traversal. It can be used to store accumulations or anything else that\n\t * the callback might find relevant.\n\t *\n\t * @param {?*} children Children tree object.\n\t * @param {!function} callback To invoke upon traversing each child.\n\t * @param {?*} traverseContext Context for traversal.\n\t * @return {!number} The number of children in this subtree.\n\t */\n\tfunction traverseAllChildren(children, callback, traverseContext) {\n\t if (children == null) {\n\t return 0;\n\t }\n\t\n\t return traverseAllChildrenImpl(children, '', callback, traverseContext);\n\t}\n\t\n\tmodule.exports = traverseAllChildren;\n\n/***/ },\n/* 138 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(13);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t checked: _react.PropTypes.bool,\n\t className: _react.PropTypes.string,\n\t disabled: _react.PropTypes.bool,\n\t label: _react.PropTypes.string,\n\t onChange: _react.PropTypes.func,\n\t ripple: _react.PropTypes.bool\n\t};\n\t\n\tvar Checkbox = function (_React$Component) {\n\t _inherits(Checkbox, _React$Component);\n\t\n\t function Checkbox() {\n\t _classCallCheck(this, Checkbox);\n\t\n\t return _possibleConstructorReturn(this, (Checkbox.__proto__ || Object.getPrototypeOf(Checkbox)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Checkbox, [{\n\t key: 'componentDidUpdate',\n\t value: function componentDidUpdate(prevProps) {\n\t if (this.props.disabled !== prevProps.disabled) {\n\t var fnName = this.props.disabled ? 'disable' : 'enable';\n\t (0, _reactDom.findDOMNode)(this).MaterialCheckbox[fnName]();\n\t }\n\t if (this.props.checked !== prevProps.checked) {\n\t var _fnName = this.props.checked ? 'check' : 'uncheck';\n\t (0, _reactDom.findDOMNode)(this).MaterialCheckbox[_fnName]();\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t className = _props.className,\n\t label = _props.label,\n\t ripple = _props.ripple,\n\t inputProps = _objectWithoutProperties(_props, ['className', 'label', 'ripple']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-checkbox mdl-js-checkbox', {\n\t 'mdl-js-ripple-effect': ripple\n\t }, className);\n\t\n\t return _react2.default.createElement(\n\t 'label',\n\t { className: classes },\n\t _react2.default.createElement('input', _extends({\n\t type: 'checkbox',\n\t className: 'mdl-checkbox__input'\n\t }, inputProps)),\n\t label && _react2.default.createElement(\n\t 'span',\n\t { className: 'mdl-checkbox__label' },\n\t label\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return Checkbox;\n\t}(_react2.default.Component);\n\t\n\tCheckbox.propTypes = propTypes;\n\t\n\texports.default = (0, _mdlUpgrade2.default)(Checkbox, true);\n\n/***/ },\n/* 139 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _Spacer = __webpack_require__(89);\n\t\n\tvar _Spacer2 = _interopRequireDefault(_Spacer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar HeaderRow = function HeaderRow(props) {\n\t var className = props.className,\n\t title = props.title,\n\t children = props.children,\n\t hideSpacer = props.hideSpacer,\n\t otherProps = _objectWithoutProperties(props, ['className', 'title', 'children', 'hideSpacer']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-layout__header-row', className);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ className: classes }, otherProps),\n\t title && _react2.default.createElement(\n\t 'span',\n\t { className: 'mdl-layout-title' },\n\t title\n\t ),\n\t title && !hideSpacer && _react2.default.createElement(_Spacer2.default, null),\n\t children\n\t );\n\t};\n\tHeaderRow.propTypes = {\n\t className: _react.PropTypes.string,\n\t title: _react.PropTypes.node,\n\t hideSpacer: _react.PropTypes.bool\n\t};\n\t\n\texports.default = HeaderRow;\n\n/***/ },\n/* 140 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _TabBar = __webpack_require__(90);\n\t\n\tvar _TabBar2 = _interopRequireDefault(_TabBar);\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar HeaderTabs = function HeaderTabs(props) {\n\t var className = props.className,\n\t ripple = props.ripple,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'ripple', 'children']);\n\t\n\t var classes = (0, _classnames2.default)({\n\t 'mdl-js-ripple-effect': ripple,\n\t 'mdl-js-ripple-effect--ignore-events': ripple\n\t }, className);\n\t\n\t return _react2.default.createElement(\n\t _TabBar2.default,\n\t _extends({ cssPrefix: 'mdl-layout', className: classes }, otherProps),\n\t children\n\t );\n\t};\n\tHeaderTabs.propTypes = {\n\t activeTab: _react.PropTypes.number,\n\t className: _react.PropTypes.string,\n\t onChange: _react.PropTypes.func,\n\t ripple: _react.PropTypes.bool\n\t};\n\t\n\texports.default = (0, _mdlUpgrade2.default)(HeaderTabs);\n\n/***/ },\n/* 141 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _Icon = __webpack_require__(44);\n\t\n\tvar _Icon2 = _interopRequireDefault(_Icon);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t avatar: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),\n\t children: _react.PropTypes.node,\n\t className: _react.PropTypes.string,\n\t icon: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),\n\t subtitle: _react.PropTypes.node,\n\t useBodyClass: _react.PropTypes.bool\n\t};\n\t\n\tfunction createIcon(type, icon) {\n\t if (typeof icon === 'string') {\n\t return _react2.default.createElement(_Icon2.default, { className: 'mdl-list__item-' + type, name: icon });\n\t }\n\t return _react2.default.cloneElement(icon, { className: 'mdl-list__item-' + type });\n\t}\n\t\n\tvar ListItemContent = function ListItemContent(props) {\n\t var avatar = props.avatar,\n\t children = props.children,\n\t className = props.className,\n\t icon = props.icon,\n\t subtitle = props.subtitle,\n\t useBodyClass = props.useBodyClass,\n\t otherProps = _objectWithoutProperties(props, ['avatar', 'children', 'className', 'icon', 'subtitle', 'useBodyClass']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-list__item-primary-content', className);\n\t var subtitleClassName = useBodyClass ? 'mdl-list__item-text-body' : 'mdl-list__item-sub-title';\n\t\n\t var iconElement = null;\n\t if (icon) {\n\t iconElement = createIcon('icon', icon);\n\t } else if (avatar) {\n\t iconElement = createIcon('avatar', avatar);\n\t }\n\t\n\t return _react2.default.createElement(\n\t 'span',\n\t _extends({ className: classes }, otherProps),\n\t iconElement,\n\t _react2.default.createElement(\n\t 'span',\n\t null,\n\t children\n\t ),\n\t subtitle && _react2.default.createElement(\n\t 'span',\n\t { className: subtitleClassName },\n\t subtitle\n\t )\n\t );\n\t};\n\t\n\tListItemContent.propTypes = propTypes;\n\t\n\texports.default = ListItemContent;\n\n/***/ },\n/* 142 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(13);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t checked: _react.PropTypes.bool,\n\t className: _react.PropTypes.string,\n\t disabled: _react.PropTypes.bool,\n\t name: _react.PropTypes.string,\n\t onChange: _react.PropTypes.func,\n\t ripple: _react.PropTypes.bool,\n\t value: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]).isRequired\n\t};\n\t\n\tvar Radio = function (_React$Component) {\n\t _inherits(Radio, _React$Component);\n\t\n\t function Radio() {\n\t _classCallCheck(this, Radio);\n\t\n\t return _possibleConstructorReturn(this, (Radio.__proto__ || Object.getPrototypeOf(Radio)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Radio, [{\n\t key: 'componentDidUpdate',\n\t value: function componentDidUpdate(prevProps) {\n\t if (this.props.disabled !== prevProps.disabled) {\n\t var fnName = this.props.disabled ? 'disable' : 'enable';\n\t (0, _reactDom.findDOMNode)(this).MaterialRadio[fnName]();\n\t }\n\t if (this.props.checked !== prevProps.checked) {\n\t var _fnName = this.props.checked ? 'check' : 'uncheck';\n\t (0, _reactDom.findDOMNode)(this).MaterialRadio[_fnName]();\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t children = _props.children,\n\t className = _props.className,\n\t name = _props.name,\n\t ripple = _props.ripple,\n\t value = _props.value,\n\t inputProps = _objectWithoutProperties(_props, ['children', 'className', 'name', 'ripple', 'value']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-radio mdl-js-radio', {\n\t 'mdl-js-ripple-effect': ripple\n\t }, className);\n\t\n\t return _react2.default.createElement(\n\t 'label',\n\t { className: classes },\n\t _react2.default.createElement('input', _extends({\n\t type: 'radio',\n\t className: 'mdl-radio__button',\n\t value: value,\n\t name: name\n\t }, inputProps)),\n\t _react2.default.createElement(\n\t 'span',\n\t { className: 'mdl-radio__label' },\n\t children\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return Radio;\n\t}(_react2.default.Component);\n\t\n\tRadio.propTypes = propTypes;\n\t\n\texports.default = (0, _mdlUpgrade2.default)(Radio, true);\n\n/***/ },\n/* 143 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t active: _react.PropTypes.bool,\n\t className: _react.PropTypes.string,\n\t component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.func]),\n\t cssPrefix: _react.PropTypes.string,\n\t onTabClick: _react.PropTypes.func,\n\t style: _react.PropTypes.object,\n\t tabId: _react.PropTypes.number\n\t};\n\t\n\tvar defaultProps = {\n\t style: {}\n\t};\n\t\n\tvar Tab = function Tab(props) {\n\t var _classNames;\n\t\n\t var active = props.active,\n\t className = props.className,\n\t component = props.component,\n\t children = props.children,\n\t cssPrefix = props.cssPrefix,\n\t onTabClick = props.onTabClick,\n\t style = props.style,\n\t tabId = props.tabId,\n\t otherProps = _objectWithoutProperties(props, ['active', 'className', 'component', 'children', 'cssPrefix', 'onTabClick', 'style', 'tabId']);\n\t\n\t var classes = (0, _classnames2.default)((_classNames = {}, _defineProperty(_classNames, cssPrefix + '__tab', true), _defineProperty(_classNames, 'is-active', active), _classNames), className);\n\t\n\t style.cursor = 'pointer';\n\t\n\t return _react2.default.createElement(component || 'a', _extends({\n\t className: classes,\n\t onClick: function onClick() {\n\t return onTabClick(tabId);\n\t },\n\t style: style\n\t }, otherProps), children);\n\t};\n\t\n\tTab.propTypes = propTypes;\n\tTab.defaultProps = defaultProps;\n\t\n\texports.default = Tab;\n\n/***/ },\n/* 144 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _MDLComponent = __webpack_require__(91);\n\t\n\tvar _MDLComponent2 = _interopRequireDefault(_MDLComponent);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar Tooltip = function Tooltip(props) {\n\t var label = props.label,\n\t large = props.large,\n\t children = props.children,\n\t position = props.position,\n\t otherProps = _objectWithoutProperties(props, ['label', 'large', 'children', 'position']);\n\t\n\t var id = Math.random().toString(36).substr(2);\n\t\n\t var newLabel = typeof label === 'string' ? _react2.default.createElement(\n\t 'span',\n\t null,\n\t label\n\t ) : label;\n\t\n\t var element = void 0;\n\t if (typeof children === 'string') {\n\t element = _react2.default.createElement(\n\t 'span',\n\t null,\n\t children\n\t );\n\t } else {\n\t element = _react2.default.Children.only(children);\n\t }\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ style: { display: 'inline-block' } }, otherProps),\n\t _react2.default.cloneElement(element, { id: id }),\n\t _react2.default.createElement(\n\t _MDLComponent2.default,\n\t null,\n\t _react2.default.cloneElement(newLabel, {\n\t htmlFor: id,\n\t className: (0, _classnames2.default)('mdl-tooltip', _defineProperty({\n\t 'mdl-tooltip--large': large\n\t }, 'mdl-tooltip--' + position, typeof position !== 'undefined'))\n\t })\n\t )\n\t );\n\t};\n\t\n\tTooltip.propTypes = {\n\t children: _react.PropTypes.node.isRequired,\n\t label: _react.PropTypes.node.isRequired,\n\t large: _react.PropTypes.bool,\n\t position: _react.PropTypes.oneOf(['left', 'right', 'top', 'bottom'])\n\t};\n\t\n\texports.default = Tooltip;\n\n/***/ },\n/* 145 */\n/***/ function(module, exports) {\n\n\t/*!\n\t * Adapted from jQuery UI core\n\t *\n\t * http://jqueryui.com\n\t *\n\t * Copyright 2014 jQuery Foundation and other contributors\n\t * Released under the MIT license.\n\t * http://jquery.org/license\n\t *\n\t * http://api.jqueryui.com/category/ui-core/\n\t */\n\t\n\tfunction focusable(element, isTabIndexNotNaN) {\n\t var nodeName = element.nodeName.toLowerCase();\n\t return (/input|select|textarea|button|object/.test(nodeName) ?\n\t !element.disabled :\n\t \"a\" === nodeName ?\n\t element.href || isTabIndexNotNaN :\n\t isTabIndexNotNaN) && visible(element);\n\t}\n\t\n\tfunction hidden(el) {\n\t return (el.offsetWidth <= 0 && el.offsetHeight <= 0) ||\n\t el.style.display === 'none';\n\t}\n\t\n\tfunction visible(element) {\n\t while (element) {\n\t if (element === document.body) break;\n\t if (hidden(element)) return false;\n\t element = element.parentNode;\n\t }\n\t return true;\n\t}\n\t\n\tfunction tabbable(element) {\n\t var tabIndex = element.getAttribute('tabindex');\n\t if (tabIndex === null) tabIndex = undefined;\n\t var isTabIndexNaN = isNaN(tabIndex);\n\t return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n\t}\n\t\n\tfunction findTabbableDescendants(element) {\n\t return [].slice.call(element.querySelectorAll('*'), 0).filter(function(el) {\n\t return tabbable(el);\n\t });\n\t}\n\t\n\tmodule.exports = findTabbableDescendants;\n\t\n\n\n/***/ },\n/* 146 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\texports[\"default\"] = _react.PropTypes.shape({\n\t subscribe: _react.PropTypes.func.isRequired,\n\t dispatch: _react.PropTypes.func.isRequired,\n\t getState: _react.PropTypes.func.isRequired\n\t});\n\n/***/ },\n/* 147 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports[\"default\"] = warning;\n\t/**\n\t * Prints a warning in the console if it exists.\n\t *\n\t * @param {String} message The warning message.\n\t * @returns {void}\n\t */\n\tfunction warning(message) {\n\t /* eslint-disable no-console */\n\t if (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t console.error(message);\n\t }\n\t /* eslint-enable no-console */\n\t try {\n\t // This error was thrown as a convenience so that if you enable\n\t // \"break on all exceptions\" in your console,\n\t // it would pause the execution at this line.\n\t throw new Error(message);\n\t /* eslint-disable no-empty */\n\t } catch (e) {}\n\t /* eslint-enable no-empty */\n\t}\n\n/***/ },\n/* 148 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _PropTypes = __webpack_require__(94);\n\t\n\tvar _ContextUtils = __webpack_require__(93);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar _React$PropTypes = _react2.default.PropTypes,\n\t bool = _React$PropTypes.bool,\n\t object = _React$PropTypes.object,\n\t string = _React$PropTypes.string,\n\t func = _React$PropTypes.func,\n\t oneOfType = _React$PropTypes.oneOfType;\n\t\n\t\n\tfunction isLeftClickEvent(event) {\n\t return event.button === 0;\n\t}\n\t\n\tfunction isModifiedEvent(event) {\n\t return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n\t}\n\t\n\t// TODO: De-duplicate against hasAnyProperties in createTransitionManager.\n\tfunction isEmptyObject(object) {\n\t for (var p in object) {\n\t if (Object.prototype.hasOwnProperty.call(object, p)) return false;\n\t }return true;\n\t}\n\t\n\tfunction resolveToLocation(to, router) {\n\t return typeof to === 'function' ? to(router.location) : to;\n\t}\n\t\n\t/**\n\t * A <Link> is used to create an <a> element that links to a route.\n\t * When that route is active, the link gets the value of its\n\t * activeClassName prop.\n\t *\n\t * For example, assuming you have the following route:\n\t *\n\t * <Route path=\"/posts/:postID\" component={Post} />\n\t *\n\t * You could use the following component to link to that route:\n\t *\n\t * <Link to={`/posts/${post.id}`} />\n\t *\n\t * Links may pass along location state and/or query string parameters\n\t * in the state/query props, respectively.\n\t *\n\t * <Link ... query={{ show: true }} state={{ the: 'state' }} />\n\t */\n\tvar Link = _react2.default.createClass({\n\t displayName: 'Link',\n\t\n\t\n\t mixins: [(0, _ContextUtils.ContextSubscriber)('router')],\n\t\n\t contextTypes: {\n\t router: _PropTypes.routerShape\n\t },\n\t\n\t propTypes: {\n\t to: oneOfType([string, object, func]),\n\t query: object,\n\t hash: string,\n\t state: object,\n\t activeStyle: object,\n\t activeClassName: string,\n\t onlyActiveOnIndex: bool.isRequired,\n\t onClick: func,\n\t target: string\n\t },\n\t\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t onlyActiveOnIndex: false,\n\t style: {}\n\t };\n\t },\n\t handleClick: function handleClick(event) {\n\t if (this.props.onClick) this.props.onClick(event);\n\t\n\t if (event.defaultPrevented) return;\n\t\n\t var router = this.context.router;\n\t\n\t !router ? false ? (0, _invariant2.default)(false, '<Link>s rendered outside of a router context cannot navigate.') : (0, _invariant2.default)(false) : void 0;\n\t\n\t if (isModifiedEvent(event) || !isLeftClickEvent(event)) return;\n\t\n\t // If target prop is set (e.g. to \"_blank\"), let browser handle link.\n\t /* istanbul ignore if: untestable with Karma */\n\t if (this.props.target) return;\n\t\n\t event.preventDefault();\n\t\n\t router.push(resolveToLocation(this.props.to, router));\n\t },\n\t render: function render() {\n\t var _props = this.props,\n\t to = _props.to,\n\t activeClassName = _props.activeClassName,\n\t activeStyle = _props.activeStyle,\n\t onlyActiveOnIndex = _props.onlyActiveOnIndex,\n\t props = _objectWithoutProperties(_props, ['to', 'activeClassName', 'activeStyle', 'onlyActiveOnIndex']);\n\t\n\t // Ignore if rendered outside the context of router to simplify unit testing.\n\t\n\t\n\t var router = this.context.router;\n\t\n\t\n\t if (router) {\n\t // If user does not specify a `to` prop, return an empty anchor tag.\n\t if (to == null) {\n\t return _react2.default.createElement('a', props);\n\t }\n\t\n\t var toLocation = resolveToLocation(to, router);\n\t props.href = router.createHref(toLocation);\n\t\n\t if (activeClassName || activeStyle != null && !isEmptyObject(activeStyle)) {\n\t if (router.isActive(toLocation, onlyActiveOnIndex)) {\n\t if (activeClassName) {\n\t if (props.className) {\n\t props.className += ' ' + activeClassName;\n\t } else {\n\t props.className = activeClassName;\n\t }\n\t }\n\t\n\t if (activeStyle) props.style = _extends({}, props.style, activeStyle);\n\t }\n\t }\n\t }\n\t\n\t return _react2.default.createElement('a', _extends({}, props, { onClick: this.handleClick }));\n\t }\n\t});\n\t\n\texports.default = Link;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 149 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.isPromise = isPromise;\n\tfunction isPromise(obj) {\n\t return obj && typeof obj.then === 'function';\n\t}\n\n/***/ },\n/* 150 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _RouteUtils = __webpack_require__(24);\n\t\n\tvar _PatternUtils = __webpack_require__(34);\n\t\n\tvar _InternalPropTypes = __webpack_require__(45);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _React$PropTypes = _react2.default.PropTypes,\n\t string = _React$PropTypes.string,\n\t object = _React$PropTypes.object;\n\t\n\t/**\n\t * A <Redirect> is used to declare another URL path a client should\n\t * be sent to when they request a given URL.\n\t *\n\t * Redirects are placed alongside routes in the route configuration\n\t * and are traversed in the same manner.\n\t */\n\t/* eslint-disable react/require-render-return */\n\t\n\tvar Redirect = _react2.default.createClass({\n\t displayName: 'Redirect',\n\t\n\t\n\t statics: {\n\t createRouteFromReactElement: function createRouteFromReactElement(element) {\n\t var route = (0, _RouteUtils.createRouteFromReactElement)(element);\n\t\n\t if (route.from) route.path = route.from;\n\t\n\t route.onEnter = function (nextState, replace) {\n\t var location = nextState.location,\n\t params = nextState.params;\n\t\n\t\n\t var pathname = void 0;\n\t if (route.to.charAt(0) === '/') {\n\t pathname = (0, _PatternUtils.formatPattern)(route.to, params);\n\t } else if (!route.to) {\n\t pathname = location.pathname;\n\t } else {\n\t var routeIndex = nextState.routes.indexOf(route);\n\t var parentPattern = Redirect.getRoutePattern(nextState.routes, routeIndex - 1);\n\t var pattern = parentPattern.replace(/\\/*$/, '/') + route.to;\n\t pathname = (0, _PatternUtils.formatPattern)(pattern, params);\n\t }\n\t\n\t replace({\n\t pathname: pathname,\n\t query: route.query || location.query,\n\t state: route.state || location.state\n\t });\n\t };\n\t\n\t return route;\n\t },\n\t getRoutePattern: function getRoutePattern(routes, routeIndex) {\n\t var parentPattern = '';\n\t\n\t for (var i = routeIndex; i >= 0; i--) {\n\t var route = routes[i];\n\t var pattern = route.path || '';\n\t\n\t parentPattern = pattern.replace(/\\/*$/, '/') + parentPattern;\n\t\n\t if (pattern.indexOf('/') === 0) break;\n\t }\n\t\n\t return '/' + parentPattern;\n\t }\n\t },\n\t\n\t propTypes: {\n\t path: string,\n\t from: string, // Alias for path\n\t to: string.isRequired,\n\t query: object,\n\t state: object,\n\t onEnter: _InternalPropTypes.falsy,\n\t children: _InternalPropTypes.falsy\n\t },\n\t\n\t /* istanbul ignore next: sanity check */\n\t render: function render() {\n\t true ? false ? (0, _invariant2.default)(false, '<Redirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n\t }\n\t});\n\t\n\texports.default = Redirect;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 151 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\texports.createRouterObject = createRouterObject;\n\texports.assignRouterState = assignRouterState;\n\tfunction createRouterObject(history, transitionManager, state) {\n\t var router = _extends({}, history, {\n\t setRouteLeaveHook: transitionManager.listenBeforeLeavingRoute,\n\t isActive: transitionManager.isActive\n\t });\n\t\n\t return assignRouterState(router, state);\n\t}\n\t\n\tfunction assignRouterState(router, _ref) {\n\t var location = _ref.location,\n\t params = _ref.params,\n\t routes = _ref.routes;\n\t\n\t router.location = location;\n\t router.params = params;\n\t router.routes = routes;\n\t\n\t return router;\n\t}\n\n/***/ },\n/* 152 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.default = createMemoryHistory;\n\t\n\tvar _useQueries = __webpack_require__(114);\n\t\n\tvar _useQueries2 = _interopRequireDefault(_useQueries);\n\t\n\tvar _useBasename = __webpack_require__(113);\n\t\n\tvar _useBasename2 = _interopRequireDefault(_useBasename);\n\t\n\tvar _createMemoryHistory = __webpack_require__(263);\n\t\n\tvar _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction createMemoryHistory(options) {\n\t // signatures and type checking differ between `useQueries` and\n\t // `createMemoryHistory`, have to create `memoryHistory` first because\n\t // `useQueries` doesn't understand the signature\n\t var memoryHistory = (0, _createMemoryHistory2.default)(options);\n\t var createHistory = function createHistory() {\n\t return memoryHistory;\n\t };\n\t var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);\n\t return history;\n\t}\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 153 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\texports.default = function (createHistory) {\n\t var history = void 0;\n\t if (canUseDOM) history = (0, _useRouterHistory2.default)(createHistory)();\n\t return history;\n\t};\n\t\n\tvar _useRouterHistory = __webpack_require__(155);\n\t\n\tvar _useRouterHistory2 = _interopRequireDefault(_useRouterHistory);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 154 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\texports.default = createTransitionManager;\n\t\n\tvar _routerWarning = __webpack_require__(35);\n\t\n\tvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\t\n\tvar _computeChangedRoutes2 = __webpack_require__(403);\n\t\n\tvar _computeChangedRoutes3 = _interopRequireDefault(_computeChangedRoutes2);\n\t\n\tvar _TransitionUtils = __webpack_require__(400);\n\t\n\tvar _isActive2 = __webpack_require__(407);\n\t\n\tvar _isActive3 = _interopRequireDefault(_isActive2);\n\t\n\tvar _getComponents = __webpack_require__(404);\n\t\n\tvar _getComponents2 = _interopRequireDefault(_getComponents);\n\t\n\tvar _matchRoutes = __webpack_require__(409);\n\t\n\tvar _matchRoutes2 = _interopRequireDefault(_matchRoutes);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction hasAnyProperties(object) {\n\t for (var p in object) {\n\t if (Object.prototype.hasOwnProperty.call(object, p)) return true;\n\t }return false;\n\t}\n\t\n\tfunction createTransitionManager(history, routes) {\n\t var state = {};\n\t\n\t // Signature should be (location, indexOnly), but needs to support (path,\n\t // query, indexOnly)\n\t function isActive(location, indexOnly) {\n\t location = history.createLocation(location);\n\t\n\t return (0, _isActive3.default)(location, indexOnly, state.location, state.routes, state.params);\n\t }\n\t\n\t var partialNextState = void 0;\n\t\n\t function match(location, callback) {\n\t if (partialNextState && partialNextState.location === location) {\n\t // Continue from where we left off.\n\t finishMatch(partialNextState, callback);\n\t } else {\n\t (0, _matchRoutes2.default)(routes, location, function (error, nextState) {\n\t if (error) {\n\t callback(error);\n\t } else if (nextState) {\n\t finishMatch(_extends({}, nextState, { location: location }), callback);\n\t } else {\n\t callback();\n\t }\n\t });\n\t }\n\t }\n\t\n\t function finishMatch(nextState, callback) {\n\t var _computeChangedRoutes = (0, _computeChangedRoutes3.default)(state, nextState),\n\t leaveRoutes = _computeChangedRoutes.leaveRoutes,\n\t changeRoutes = _computeChangedRoutes.changeRoutes,\n\t enterRoutes = _computeChangedRoutes.enterRoutes;\n\t\n\t (0, _TransitionUtils.runLeaveHooks)(leaveRoutes, state);\n\t\n\t // Tear down confirmation hooks for left routes\n\t leaveRoutes.filter(function (route) {\n\t return enterRoutes.indexOf(route) === -1;\n\t }).forEach(removeListenBeforeHooksForRoute);\n\t\n\t // change and enter hooks are run in series\n\t (0, _TransitionUtils.runChangeHooks)(changeRoutes, state, nextState, function (error, redirectInfo) {\n\t if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);\n\t\n\t (0, _TransitionUtils.runEnterHooks)(enterRoutes, nextState, finishEnterHooks);\n\t });\n\t\n\t function finishEnterHooks(error, redirectInfo) {\n\t if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);\n\t\n\t // TODO: Fetch components after state is updated.\n\t (0, _getComponents2.default)(nextState, function (error, components) {\n\t if (error) {\n\t callback(error);\n\t } else {\n\t // TODO: Make match a pure function and have some other API\n\t // for \"match and update state\".\n\t callback(null, null, state = _extends({}, nextState, { components: components }));\n\t }\n\t });\n\t }\n\t\n\t function handleErrorOrRedirect(error, redirectInfo) {\n\t if (error) callback(error);else callback(null, redirectInfo);\n\t }\n\t }\n\t\n\t var RouteGuid = 1;\n\t\n\t function getRouteID(route) {\n\t var create = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t return route.__id__ || create && (route.__id__ = RouteGuid++);\n\t }\n\t\n\t var RouteHooks = Object.create(null);\n\t\n\t function getRouteHooksForRoutes(routes) {\n\t return routes.map(function (route) {\n\t return RouteHooks[getRouteID(route)];\n\t }).filter(function (hook) {\n\t return hook;\n\t });\n\t }\n\t\n\t function transitionHook(location, callback) {\n\t (0, _matchRoutes2.default)(routes, location, function (error, nextState) {\n\t if (nextState == null) {\n\t // TODO: We didn't actually match anything, but hang\n\t // onto error/nextState so we don't have to matchRoutes\n\t // again in the listen callback.\n\t callback();\n\t return;\n\t }\n\t\n\t // Cache some state here so we don't have to\n\t // matchRoutes() again in the listen callback.\n\t partialNextState = _extends({}, nextState, { location: location });\n\t\n\t var hooks = getRouteHooksForRoutes((0, _computeChangedRoutes3.default)(state, partialNextState).leaveRoutes);\n\t\n\t var result = void 0;\n\t for (var i = 0, len = hooks.length; result == null && i < len; ++i) {\n\t // Passing the location arg here indicates to\n\t // the user that this is a transition hook.\n\t result = hooks[i](location);\n\t }\n\t\n\t callback(result);\n\t });\n\t }\n\t\n\t /* istanbul ignore next: untestable with Karma */\n\t function beforeUnloadHook() {\n\t // Synchronously check to see if any route hooks want\n\t // to prevent the current window/tab from closing.\n\t if (state.routes) {\n\t var hooks = getRouteHooksForRoutes(state.routes);\n\t\n\t var message = void 0;\n\t for (var i = 0, len = hooks.length; typeof message !== 'string' && i < len; ++i) {\n\t // Passing no args indicates to the user that this is a\n\t // beforeunload hook. We don't know the next location.\n\t message = hooks[i]();\n\t }\n\t\n\t return message;\n\t }\n\t }\n\t\n\t var unlistenBefore = void 0,\n\t unlistenBeforeUnload = void 0;\n\t\n\t function removeListenBeforeHooksForRoute(route) {\n\t var routeID = getRouteID(route);\n\t if (!routeID) {\n\t return;\n\t }\n\t\n\t delete RouteHooks[routeID];\n\t\n\t if (!hasAnyProperties(RouteHooks)) {\n\t // teardown transition & beforeunload hooks\n\t if (unlistenBefore) {\n\t unlistenBefore();\n\t unlistenBefore = null;\n\t }\n\t\n\t if (unlistenBeforeUnload) {\n\t unlistenBeforeUnload();\n\t unlistenBeforeUnload = null;\n\t }\n\t }\n\t }\n\t\n\t /**\n\t * Registers the given hook function to run before leaving the given route.\n\t *\n\t * During a normal transition, the hook function receives the next location\n\t * as its only argument and can return either a prompt message (string) to show the user,\n\t * to make sure they want to leave the page; or `false`, to prevent the transition.\n\t * Any other return value will have no effect.\n\t *\n\t * During the beforeunload event (in browsers) the hook receives no arguments.\n\t * In this case it must return a prompt message to prevent the transition.\n\t *\n\t * Returns a function that may be used to unbind the listener.\n\t */\n\t function listenBeforeLeavingRoute(route, hook) {\n\t var thereWereNoRouteHooks = !hasAnyProperties(RouteHooks);\n\t var routeID = getRouteID(route, true);\n\t\n\t RouteHooks[routeID] = hook;\n\t\n\t if (thereWereNoRouteHooks) {\n\t // setup transition & beforeunload hooks\n\t unlistenBefore = history.listenBefore(transitionHook);\n\t\n\t if (history.listenBeforeUnload) unlistenBeforeUnload = history.listenBeforeUnload(beforeUnloadHook);\n\t }\n\t\n\t return function () {\n\t removeListenBeforeHooksForRoute(route);\n\t };\n\t }\n\t\n\t /**\n\t * This is the API for stateful environments. As the location\n\t * changes, we update state and call the listener. We can also\n\t * gracefully handle errors and redirects.\n\t */\n\t function listen(listener) {\n\t function historyListener(location) {\n\t if (state.location === location) {\n\t listener(null, state);\n\t } else {\n\t match(location, function (error, redirectLocation, nextState) {\n\t if (error) {\n\t listener(error);\n\t } else if (redirectLocation) {\n\t history.replace(redirectLocation);\n\t } else if (nextState) {\n\t listener(null, nextState);\n\t } else {\n\t false ? (0, _routerWarning2.default)(false, 'Location \"%s\" did not match any routes', location.pathname + location.search + location.hash) : void 0;\n\t }\n\t });\n\t }\n\t }\n\t\n\t // TODO: Only use a single history listener. Otherwise we'll end up with\n\t // multiple concurrent calls to match.\n\t\n\t // Set up the history listener first in case the initial match redirects.\n\t var unsubscribe = history.listen(historyListener);\n\t\n\t if (state.location) {\n\t // Picking up on a matchContext.\n\t listener(null, state);\n\t } else {\n\t historyListener(history.getCurrentLocation());\n\t }\n\t\n\t return unsubscribe;\n\t }\n\t\n\t return {\n\t isActive: isActive,\n\t match: match,\n\t listenBeforeLeavingRoute: listenBeforeLeavingRoute,\n\t listen: listen\n\t };\n\t}\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 155 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.default = useRouterHistory;\n\t\n\tvar _useQueries = __webpack_require__(114);\n\t\n\tvar _useQueries2 = _interopRequireDefault(_useQueries);\n\t\n\tvar _useBasename = __webpack_require__(113);\n\t\n\tvar _useBasename2 = _interopRequireDefault(_useBasename);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction useRouterHistory(createHistory) {\n\t return function (options) {\n\t var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);\n\t return history;\n\t };\n\t}\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 156 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2016-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(38);\n\t\n\tvar ReactCurrentOwner = __webpack_require__(21);\n\t\n\tvar invariant = __webpack_require__(3);\n\tvar warning = __webpack_require__(4);\n\t\n\tfunction isNative(fn) {\n\t // Based on isNative() from Lodash\n\t var funcToString = Function.prototype.toString;\n\t var hasOwnProperty = Object.prototype.hasOwnProperty;\n\t var reIsNative = RegExp('^' + funcToString\n\t // Take an example native function source for comparison\n\t .call(hasOwnProperty)\n\t // Strip regex characters so we can use it for regex\n\t .replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n\t // Remove hasOwnProperty from the template to make it generic\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n\t try {\n\t var source = funcToString.call(fn);\n\t return reIsNative.test(source);\n\t } catch (err) {\n\t return false;\n\t }\n\t}\n\t\n\tvar canUseCollections =\n\t// Array.from\n\ttypeof Array.from === 'function' &&\n\t// Map\n\ttypeof Map === 'function' && isNative(Map) &&\n\t// Map.prototype.keys\n\tMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n\t// Set\n\ttypeof Set === 'function' && isNative(Set) &&\n\t// Set.prototype.keys\n\tSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\t\n\tvar setItem;\n\tvar getItem;\n\tvar removeItem;\n\tvar getItemIDs;\n\tvar addRoot;\n\tvar removeRoot;\n\tvar getRootIDs;\n\t\n\tif (canUseCollections) {\n\t var itemMap = new Map();\n\t var rootIDSet = new Set();\n\t\n\t setItem = function (id, item) {\n\t itemMap.set(id, item);\n\t };\n\t getItem = function (id) {\n\t return itemMap.get(id);\n\t };\n\t removeItem = function (id) {\n\t itemMap['delete'](id);\n\t };\n\t getItemIDs = function () {\n\t return Array.from(itemMap.keys());\n\t };\n\t\n\t addRoot = function (id) {\n\t rootIDSet.add(id);\n\t };\n\t removeRoot = function (id) {\n\t rootIDSet['delete'](id);\n\t };\n\t getRootIDs = function () {\n\t return Array.from(rootIDSet.keys());\n\t };\n\t} else {\n\t var itemByKey = {};\n\t var rootByKey = {};\n\t\n\t // Use non-numeric keys to prevent V8 performance issues:\n\t // https://github.com/facebook/react/pull/7232\n\t var getKeyFromID = function (id) {\n\t return '.' + id;\n\t };\n\t var getIDFromKey = function (key) {\n\t return parseInt(key.substr(1), 10);\n\t };\n\t\n\t setItem = function (id, item) {\n\t var key = getKeyFromID(id);\n\t itemByKey[key] = item;\n\t };\n\t getItem = function (id) {\n\t var key = getKeyFromID(id);\n\t return itemByKey[key];\n\t };\n\t removeItem = function (id) {\n\t var key = getKeyFromID(id);\n\t delete itemByKey[key];\n\t };\n\t getItemIDs = function () {\n\t return Object.keys(itemByKey).map(getIDFromKey);\n\t };\n\t\n\t addRoot = function (id) {\n\t var key = getKeyFromID(id);\n\t rootByKey[key] = true;\n\t };\n\t removeRoot = function (id) {\n\t var key = getKeyFromID(id);\n\t delete rootByKey[key];\n\t };\n\t getRootIDs = function () {\n\t return Object.keys(rootByKey).map(getIDFromKey);\n\t };\n\t}\n\t\n\tvar unmountedIDs = [];\n\t\n\tfunction purgeDeep(id) {\n\t var item = getItem(id);\n\t if (item) {\n\t var childIDs = item.childIDs;\n\t\n\t removeItem(id);\n\t childIDs.forEach(purgeDeep);\n\t }\n\t}\n\t\n\tfunction describeComponentFrame(name, source, ownerName) {\n\t return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n\t}\n\t\n\tfunction getDisplayName(element) {\n\t if (element == null) {\n\t return '#empty';\n\t } else if (typeof element === 'string' || typeof element === 'number') {\n\t return '#text';\n\t } else if (typeof element.type === 'string') {\n\t return element.type;\n\t } else {\n\t return element.type.displayName || element.type.name || 'Unknown';\n\t }\n\t}\n\t\n\tfunction describeID(id) {\n\t var name = ReactComponentTreeHook.getDisplayName(id);\n\t var element = ReactComponentTreeHook.getElement(id);\n\t var ownerID = ReactComponentTreeHook.getOwnerID(id);\n\t var ownerName;\n\t if (ownerID) {\n\t ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n\t }\n\t false ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n\t return describeComponentFrame(name, element && element._source, ownerName);\n\t}\n\t\n\tvar ReactComponentTreeHook = {\n\t onSetChildren: function (id, nextChildIDs) {\n\t var item = getItem(id);\n\t !item ? false ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n\t item.childIDs = nextChildIDs;\n\t\n\t for (var i = 0; i < nextChildIDs.length; i++) {\n\t var nextChildID = nextChildIDs[i];\n\t var nextChild = getItem(nextChildID);\n\t !nextChild ? false ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n\t !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? false ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n\t !nextChild.isMounted ? false ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n\t if (nextChild.parentID == null) {\n\t nextChild.parentID = id;\n\t // TODO: This shouldn't be necessary but mounting a new root during in\n\t // componentWillMount currently causes not-yet-mounted components to\n\t // be purged from our tree data so their parent id is missing.\n\t }\n\t !(nextChild.parentID === id) ? false ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n\t }\n\t },\n\t onBeforeMountComponent: function (id, element, parentID) {\n\t var item = {\n\t element: element,\n\t parentID: parentID,\n\t text: null,\n\t childIDs: [],\n\t isMounted: false,\n\t updateCount: 0\n\t };\n\t setItem(id, item);\n\t },\n\t onBeforeUpdateComponent: function (id, element) {\n\t var item = getItem(id);\n\t if (!item || !item.isMounted) {\n\t // We may end up here as a result of setState() in componentWillUnmount().\n\t // In this case, ignore the element.\n\t return;\n\t }\n\t item.element = element;\n\t },\n\t onMountComponent: function (id) {\n\t var item = getItem(id);\n\t !item ? false ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n\t item.isMounted = true;\n\t var isRoot = item.parentID === 0;\n\t if (isRoot) {\n\t addRoot(id);\n\t }\n\t },\n\t onUpdateComponent: function (id) {\n\t var item = getItem(id);\n\t if (!item || !item.isMounted) {\n\t // We may end up here as a result of setState() in componentWillUnmount().\n\t // In this case, ignore the element.\n\t return;\n\t }\n\t item.updateCount++;\n\t },\n\t onUnmountComponent: function (id) {\n\t var item = getItem(id);\n\t if (item) {\n\t // We need to check if it exists.\n\t // `item` might not exist if it is inside an error boundary, and a sibling\n\t // error boundary child threw while mounting. Then this instance never\n\t // got a chance to mount, but it still gets an unmounting event during\n\t // the error boundary cleanup.\n\t item.isMounted = false;\n\t var isRoot = item.parentID === 0;\n\t if (isRoot) {\n\t removeRoot(id);\n\t }\n\t }\n\t unmountedIDs.push(id);\n\t },\n\t purgeUnmountedComponents: function () {\n\t if (ReactComponentTreeHook._preventPurging) {\n\t // Should only be used for testing.\n\t return;\n\t }\n\t\n\t for (var i = 0; i < unmountedIDs.length; i++) {\n\t var id = unmountedIDs[i];\n\t purgeDeep(id);\n\t }\n\t unmountedIDs.length = 0;\n\t },\n\t isMounted: function (id) {\n\t var item = getItem(id);\n\t return item ? item.isMounted : false;\n\t },\n\t getCurrentStackAddendum: function (topElement) {\n\t var info = '';\n\t if (topElement) {\n\t var name = getDisplayName(topElement);\n\t var owner = topElement._owner;\n\t info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n\t }\n\t\n\t var currentOwner = ReactCurrentOwner.current;\n\t var id = currentOwner && currentOwner._debugID;\n\t\n\t info += ReactComponentTreeHook.getStackAddendumByID(id);\n\t return info;\n\t },\n\t getStackAddendumByID: function (id) {\n\t var info = '';\n\t while (id) {\n\t info += describeID(id);\n\t id = ReactComponentTreeHook.getParentID(id);\n\t }\n\t return info;\n\t },\n\t getChildIDs: function (id) {\n\t var item = getItem(id);\n\t return item ? item.childIDs : [];\n\t },\n\t getDisplayName: function (id) {\n\t var element = ReactComponentTreeHook.getElement(id);\n\t if (!element) {\n\t return null;\n\t }\n\t return getDisplayName(element);\n\t },\n\t getElement: function (id) {\n\t var item = getItem(id);\n\t return item ? item.element : null;\n\t },\n\t getOwnerID: function (id) {\n\t var element = ReactComponentTreeHook.getElement(id);\n\t if (!element || !element._owner) {\n\t return null;\n\t }\n\t return element._owner._debugID;\n\t },\n\t getParentID: function (id) {\n\t var item = getItem(id);\n\t return item ? item.parentID : null;\n\t },\n\t getSource: function (id) {\n\t var item = getItem(id);\n\t var element = item ? item.element : null;\n\t var source = element != null ? element._source : null;\n\t return source;\n\t },\n\t getText: function (id) {\n\t var element = ReactComponentTreeHook.getElement(id);\n\t if (typeof element === 'string') {\n\t return element;\n\t } else if (typeof element === 'number') {\n\t return '' + element;\n\t } else {\n\t return null;\n\t }\n\t },\n\t getUpdateCount: function (id) {\n\t var item = getItem(id);\n\t return item ? item.updateCount : 0;\n\t },\n\t\n\t\n\t getRootIDs: getRootIDs,\n\t getRegisteredIDs: getItemIDs\n\t};\n\t\n\tmodule.exports = ReactComponentTreeHook;\n\n/***/ },\n/* 157 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2014-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\t// The Symbol used to tag the ReactElement type. If there is no native Symbol\n\t// nor polyfill, then a plain number is used for performance.\n\t\n\tvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\t\n\tmodule.exports = REACT_ELEMENT_TYPE;\n\n/***/ },\n/* 158 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactPropTypeLocationNames = {};\n\t\n\tif (false) {\n\t ReactPropTypeLocationNames = {\n\t prop: 'prop',\n\t context: 'context',\n\t childContext: 'child context'\n\t };\n\t}\n\t\n\tmodule.exports = ReactPropTypeLocationNames;\n\n/***/ },\n/* 159 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar canDefineProperty = false;\n\tif (false) {\n\t try {\n\t // $FlowFixMe https://github.com/facebook/flow/issues/285\n\t Object.defineProperty({}, 'x', { get: function () {} });\n\t canDefineProperty = true;\n\t } catch (x) {\n\t // IE will fail on defineProperty\n\t }\n\t}\n\t\n\tmodule.exports = canDefineProperty;\n\n/***/ },\n/* 160 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\t/* global Symbol */\n\t\n\tvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n\tvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\t\n\t/**\n\t * Returns the iterator method function contained on the iterable object.\n\t *\n\t * Be sure to invoke the function with the iterable as context:\n\t *\n\t * var iteratorFn = getIteratorFn(myIterable);\n\t * if (iteratorFn) {\n\t * var iterator = iteratorFn.call(myIterable);\n\t * ...\n\t * }\n\t *\n\t * @param {?object} maybeIterable\n\t * @return {?function}\n\t */\n\tfunction getIteratorFn(maybeIterable) {\n\t var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n\t if (typeof iteratorFn === 'function') {\n\t return iteratorFn;\n\t }\n\t}\n\t\n\tmodule.exports = getIteratorFn;\n\n/***/ },\n/* 161 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\texports[\"default\"] = compose;\n\t/**\n\t * Composes single-argument functions from right to left. The rightmost\n\t * function can take multiple arguments as it provides the signature for\n\t * the resulting composite function.\n\t *\n\t * @param {...Function} funcs The functions to compose.\n\t * @returns {Function} A function obtained by composing the argument functions\n\t * from right to left. For example, compose(f, g, h) is identical to doing\n\t * (...args) => f(g(h(...args))).\n\t */\n\t\n\tfunction compose() {\n\t for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n\t funcs[_key] = arguments[_key];\n\t }\n\t\n\t if (funcs.length === 0) {\n\t return function (arg) {\n\t return arg;\n\t };\n\t }\n\t\n\t if (funcs.length === 1) {\n\t return funcs[0];\n\t }\n\t\n\t var last = funcs[funcs.length - 1];\n\t var rest = funcs.slice(0, -1);\n\t return function () {\n\t return rest.reduceRight(function (composed, f) {\n\t return f(composed);\n\t }, last.apply(undefined, arguments));\n\t };\n\t}\n\n/***/ },\n/* 162 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.ActionTypes = undefined;\n\texports['default'] = createStore;\n\t\n\tvar _isPlainObject = __webpack_require__(70);\n\t\n\tvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\t\n\tvar _symbolObservable = __webpack_require__(427);\n\t\n\tvar _symbolObservable2 = _interopRequireDefault(_symbolObservable);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\t/**\n\t * These are private action types reserved by Redux.\n\t * For any unknown actions, you must return the current state.\n\t * If the current state is undefined, you must return the initial state.\n\t * Do not reference these action types directly in your code.\n\t */\n\tvar ActionTypes = exports.ActionTypes = {\n\t INIT: '@@redux/INIT'\n\t};\n\t\n\t/**\n\t * Creates a Redux store that holds the state tree.\n\t * The only way to change the data in the store is to call `dispatch()` on it.\n\t *\n\t * There should only be a single store in your app. To specify how different\n\t * parts of the state tree respond to actions, you may combine several reducers\n\t * into a single reducer function by using `combineReducers`.\n\t *\n\t * @param {Function} reducer A function that returns the next state tree, given\n\t * the current state tree and the action to handle.\n\t *\n\t * @param {any} [preloadedState] The initial state. You may optionally specify it\n\t * to hydrate the state from the server in universal apps, or to restore a\n\t * previously serialized user session.\n\t * If you use `combineReducers` to produce the root reducer function, this must be\n\t * an object with the same shape as `combineReducers` keys.\n\t *\n\t * @param {Function} enhancer The store enhancer. You may optionally specify it\n\t * to enhance the store with third-party capabilities such as middleware,\n\t * time travel, persistence, etc. The only store enhancer that ships with Redux\n\t * is `applyMiddleware()`.\n\t *\n\t * @returns {Store} A Redux store that lets you read the state, dispatch actions\n\t * and subscribe to changes.\n\t */\n\tfunction createStore(reducer, preloadedState, enhancer) {\n\t var _ref2;\n\t\n\t if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n\t enhancer = preloadedState;\n\t preloadedState = undefined;\n\t }\n\t\n\t if (typeof enhancer !== 'undefined') {\n\t if (typeof enhancer !== 'function') {\n\t throw new Error('Expected the enhancer to be a function.');\n\t }\n\t\n\t return enhancer(createStore)(reducer, preloadedState);\n\t }\n\t\n\t if (typeof reducer !== 'function') {\n\t throw new Error('Expected the reducer to be a function.');\n\t }\n\t\n\t var currentReducer = reducer;\n\t var currentState = preloadedState;\n\t var currentListeners = [];\n\t var nextListeners = currentListeners;\n\t var isDispatching = false;\n\t\n\t function ensureCanMutateNextListeners() {\n\t if (nextListeners === currentListeners) {\n\t nextListeners = currentListeners.slice();\n\t }\n\t }\n\t\n\t /**\n\t * Reads the state tree managed by the store.\n\t *\n\t * @returns {any} The current state tree of your application.\n\t */\n\t function getState() {\n\t return currentState;\n\t }\n\t\n\t /**\n\t * Adds a change listener. It will be called any time an action is dispatched,\n\t * and some part of the state tree may potentially have changed. You may then\n\t * call `getState()` to read the current state tree inside the callback.\n\t *\n\t * You may call `dispatch()` from a change listener, with the following\n\t * caveats:\n\t *\n\t * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n\t * If you subscribe or unsubscribe while the listeners are being invoked, this\n\t * will not have any effect on the `dispatch()` that is currently in progress.\n\t * However, the next `dispatch()` call, whether nested or not, will use a more\n\t * recent snapshot of the subscription list.\n\t *\n\t * 2. The listener should not expect to see all state changes, as the state\n\t * might have been updated multiple times during a nested `dispatch()` before\n\t * the listener is called. It is, however, guaranteed that all subscribers\n\t * registered before the `dispatch()` started will be called with the latest\n\t * state by the time it exits.\n\t *\n\t * @param {Function} listener A callback to be invoked on every dispatch.\n\t * @returns {Function} A function to remove this change listener.\n\t */\n\t function subscribe(listener) {\n\t if (typeof listener !== 'function') {\n\t throw new Error('Expected listener to be a function.');\n\t }\n\t\n\t var isSubscribed = true;\n\t\n\t ensureCanMutateNextListeners();\n\t nextListeners.push(listener);\n\t\n\t return function unsubscribe() {\n\t if (!isSubscribed) {\n\t return;\n\t }\n\t\n\t isSubscribed = false;\n\t\n\t ensureCanMutateNextListeners();\n\t var index = nextListeners.indexOf(listener);\n\t nextListeners.splice(index, 1);\n\t };\n\t }\n\t\n\t /**\n\t * Dispatches an action. It is the only way to trigger a state change.\n\t *\n\t * The `reducer` function, used to create the store, will be called with the\n\t * current state tree and the given `action`. Its return value will\n\t * be considered the **next** state of the tree, and the change listeners\n\t * will be notified.\n\t *\n\t * The base implementation only supports plain object actions. If you want to\n\t * dispatch a Promise, an Observable, a thunk, or something else, you need to\n\t * wrap your store creating function into the corresponding middleware. For\n\t * example, see the documentation for the `redux-thunk` package. Even the\n\t * middleware will eventually dispatch plain object actions using this method.\n\t *\n\t * @param {Object} action A plain object representing “what changed”. It is\n\t * a good idea to keep actions serializable so you can record and replay user\n\t * sessions, or use the time travelling `redux-devtools`. An action must have\n\t * a `type` property which may not be `undefined`. It is a good idea to use\n\t * string constants for action types.\n\t *\n\t * @returns {Object} For convenience, the same action object you dispatched.\n\t *\n\t * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n\t * return something else (for example, a Promise you can await).\n\t */\n\t function dispatch(action) {\n\t if (!(0, _isPlainObject2['default'])(action)) {\n\t throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n\t }\n\t\n\t if (typeof action.type === 'undefined') {\n\t throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n\t }\n\t\n\t if (isDispatching) {\n\t throw new Error('Reducers may not dispatch actions.');\n\t }\n\t\n\t try {\n\t isDispatching = true;\n\t currentState = currentReducer(currentState, action);\n\t } finally {\n\t isDispatching = false;\n\t }\n\t\n\t var listeners = currentListeners = nextListeners;\n\t for (var i = 0; i < listeners.length; i++) {\n\t listeners[i]();\n\t }\n\t\n\t return action;\n\t }\n\t\n\t /**\n\t * Replaces the reducer currently used by the store to calculate the state.\n\t *\n\t * You might need this if your app implements code splitting and you want to\n\t * load some of the reducers dynamically. You might also need this if you\n\t * implement a hot reloading mechanism for Redux.\n\t *\n\t * @param {Function} nextReducer The reducer for the store to use instead.\n\t * @returns {void}\n\t */\n\t function replaceReducer(nextReducer) {\n\t if (typeof nextReducer !== 'function') {\n\t throw new Error('Expected the nextReducer to be a function.');\n\t }\n\t\n\t currentReducer = nextReducer;\n\t dispatch({ type: ActionTypes.INIT });\n\t }\n\t\n\t /**\n\t * Interoperability point for observable/reactive libraries.\n\t * @returns {observable} A minimal observable of state changes.\n\t * For more information, see the observable proposal:\n\t * https://github.com/zenparsing/es-observable\n\t */\n\t function observable() {\n\t var _ref;\n\t\n\t var outerSubscribe = subscribe;\n\t return _ref = {\n\t /**\n\t * The minimal observable subscription method.\n\t * @param {Object} observer Any object that can be used as an observer.\n\t * The observer object should have a `next` method.\n\t * @returns {subscription} An object with an `unsubscribe` method that can\n\t * be used to unsubscribe the observable from the store, and prevent further\n\t * emission of values from the observable.\n\t */\n\t subscribe: function subscribe(observer) {\n\t if (typeof observer !== 'object') {\n\t throw new TypeError('Expected the observer to be an object.');\n\t }\n\t\n\t function observeState() {\n\t if (observer.next) {\n\t observer.next(getState());\n\t }\n\t }\n\t\n\t observeState();\n\t var unsubscribe = outerSubscribe(observeState);\n\t return { unsubscribe: unsubscribe };\n\t }\n\t }, _ref[_symbolObservable2['default']] = function () {\n\t return this;\n\t }, _ref;\n\t }\n\t\n\t // When a store is created, an \"INIT\" action is dispatched so that every\n\t // reducer returns their initial state. This effectively populates\n\t // the initial state tree.\n\t dispatch({ type: ActionTypes.INIT });\n\t\n\t return _ref2 = {\n\t dispatch: dispatch,\n\t subscribe: subscribe,\n\t getState: getState,\n\t replaceReducer: replaceReducer\n\t }, _ref2[_symbolObservable2['default']] = observable, _ref2;\n\t}\n\n/***/ },\n/* 163 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = warning;\n\t/**\n\t * Prints a warning in the console if it exists.\n\t *\n\t * @param {String} message The warning message.\n\t * @returns {void}\n\t */\n\tfunction warning(message) {\n\t /* eslint-disable no-console */\n\t if (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t console.error(message);\n\t }\n\t /* eslint-enable no-console */\n\t try {\n\t // This error was thrown as a convenience so that if you enable\n\t // \"break on all exceptions\" in your console,\n\t // it would pause the execution at this line.\n\t throw new Error(message);\n\t /* eslint-disable no-empty */\n\t } catch (e) {}\n\t /* eslint-enable no-empty */\n\t}\n\n/***/ },\n/* 164 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(module) {\r\n\t\tif(!module.webpackPolyfill) {\r\n\t\t\tmodule.deprecate = function() {};\r\n\t\t\tmodule.paths = [];\r\n\t\t\t// module.parent = undefined by default\r\n\t\t\tmodule.children = [];\r\n\t\t\tmodule.webpackPolyfill = 1;\r\n\t\t}\r\n\t\treturn module;\r\n\t}\r\n\n\n/***/ },\n/* 165 */\n/***/ function(module, exports) {\n\n\t(function(self) {\n\t 'use strict';\n\t\n\t if (self.fetch) {\n\t return\n\t }\n\t\n\t var support = {\n\t searchParams: 'URLSearchParams' in self,\n\t iterable: 'Symbol' in self && 'iterator' in Symbol,\n\t blob: 'FileReader' in self && 'Blob' in self && (function() {\n\t try {\n\t new Blob()\n\t return true\n\t } catch(e) {\n\t return false\n\t }\n\t })(),\n\t formData: 'FormData' in self,\n\t arrayBuffer: 'ArrayBuffer' in self\n\t }\n\t\n\t if (support.arrayBuffer) {\n\t var viewClasses = [\n\t '[object Int8Array]',\n\t '[object Uint8Array]',\n\t '[object Uint8ClampedArray]',\n\t '[object Int16Array]',\n\t '[object Uint16Array]',\n\t '[object Int32Array]',\n\t '[object Uint32Array]',\n\t '[object Float32Array]',\n\t '[object Float64Array]'\n\t ]\n\t\n\t var isDataView = function(obj) {\n\t return obj && DataView.prototype.isPrototypeOf(obj)\n\t }\n\t\n\t var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n\t return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n\t }\n\t }\n\t\n\t function normalizeName(name) {\n\t if (typeof name !== 'string') {\n\t name = String(name)\n\t }\n\t if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n\t throw new TypeError('Invalid character in header field name')\n\t }\n\t return name.toLowerCase()\n\t }\n\t\n\t function normalizeValue(value) {\n\t if (typeof value !== 'string') {\n\t value = String(value)\n\t }\n\t return value\n\t }\n\t\n\t // Build a destructive iterator for the value list\n\t function iteratorFor(items) {\n\t var iterator = {\n\t next: function() {\n\t var value = items.shift()\n\t return {done: value === undefined, value: value}\n\t }\n\t }\n\t\n\t if (support.iterable) {\n\t iterator[Symbol.iterator] = function() {\n\t return iterator\n\t }\n\t }\n\t\n\t return iterator\n\t }\n\t\n\t function Headers(headers) {\n\t this.map = {}\n\t\n\t if (headers instanceof Headers) {\n\t headers.forEach(function(value, name) {\n\t this.append(name, value)\n\t }, this)\n\t\n\t } else if (headers) {\n\t Object.getOwnPropertyNames(headers).forEach(function(name) {\n\t this.append(name, headers[name])\n\t }, this)\n\t }\n\t }\n\t\n\t Headers.prototype.append = function(name, value) {\n\t name = normalizeName(name)\n\t value = normalizeValue(value)\n\t var oldValue = this.map[name]\n\t this.map[name] = oldValue ? oldValue+','+value : value\n\t }\n\t\n\t Headers.prototype['delete'] = function(name) {\n\t delete this.map[normalizeName(name)]\n\t }\n\t\n\t Headers.prototype.get = function(name) {\n\t name = normalizeName(name)\n\t return this.has(name) ? this.map[name] : null\n\t }\n\t\n\t Headers.prototype.has = function(name) {\n\t return this.map.hasOwnProperty(normalizeName(name))\n\t }\n\t\n\t Headers.prototype.set = function(name, value) {\n\t this.map[normalizeName(name)] = normalizeValue(value)\n\t }\n\t\n\t Headers.prototype.forEach = function(callback, thisArg) {\n\t for (var name in this.map) {\n\t if (this.map.hasOwnProperty(name)) {\n\t callback.call(thisArg, this.map[name], name, this)\n\t }\n\t }\n\t }\n\t\n\t Headers.prototype.keys = function() {\n\t var items = []\n\t this.forEach(function(value, name) { items.push(name) })\n\t return iteratorFor(items)\n\t }\n\t\n\t Headers.prototype.values = function() {\n\t var items = []\n\t this.forEach(function(value) { items.push(value) })\n\t return iteratorFor(items)\n\t }\n\t\n\t Headers.prototype.entries = function() {\n\t var items = []\n\t this.forEach(function(value, name) { items.push([name, value]) })\n\t return iteratorFor(items)\n\t }\n\t\n\t if (support.iterable) {\n\t Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n\t }\n\t\n\t function consumed(body) {\n\t if (body.bodyUsed) {\n\t return Promise.reject(new TypeError('Already read'))\n\t }\n\t body.bodyUsed = true\n\t }\n\t\n\t function fileReaderReady(reader) {\n\t return new Promise(function(resolve, reject) {\n\t reader.onload = function() {\n\t resolve(reader.result)\n\t }\n\t reader.onerror = function() {\n\t reject(reader.error)\n\t }\n\t })\n\t }\n\t\n\t function readBlobAsArrayBuffer(blob) {\n\t var reader = new FileReader()\n\t var promise = fileReaderReady(reader)\n\t reader.readAsArrayBuffer(blob)\n\t return promise\n\t }\n\t\n\t function readBlobAsText(blob) {\n\t var reader = new FileReader()\n\t var promise = fileReaderReady(reader)\n\t reader.readAsText(blob)\n\t return promise\n\t }\n\t\n\t function readArrayBufferAsText(buf) {\n\t var view = new Uint8Array(buf)\n\t var chars = new Array(view.length)\n\t\n\t for (var i = 0; i < view.length; i++) {\n\t chars[i] = String.fromCharCode(view[i])\n\t }\n\t return chars.join('')\n\t }\n\t\n\t function bufferClone(buf) {\n\t if (buf.slice) {\n\t return buf.slice(0)\n\t } else {\n\t var view = new Uint8Array(buf.byteLength)\n\t view.set(new Uint8Array(buf))\n\t return view.buffer\n\t }\n\t }\n\t\n\t function Body() {\n\t this.bodyUsed = false\n\t\n\t this._initBody = function(body) {\n\t this._bodyInit = body\n\t if (!body) {\n\t this._bodyText = ''\n\t } else if (typeof body === 'string') {\n\t this._bodyText = body\n\t } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n\t this._bodyBlob = body\n\t } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n\t this._bodyFormData = body\n\t } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n\t this._bodyText = body.toString()\n\t } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n\t this._bodyArrayBuffer = bufferClone(body.buffer)\n\t // IE 10-11 can't handle a DataView body.\n\t this._bodyInit = new Blob([this._bodyArrayBuffer])\n\t } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n\t this._bodyArrayBuffer = bufferClone(body)\n\t } else {\n\t throw new Error('unsupported BodyInit type')\n\t }\n\t\n\t if (!this.headers.get('content-type')) {\n\t if (typeof body === 'string') {\n\t this.headers.set('content-type', 'text/plain;charset=UTF-8')\n\t } else if (this._bodyBlob && this._bodyBlob.type) {\n\t this.headers.set('content-type', this._bodyBlob.type)\n\t } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n\t this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n\t }\n\t }\n\t }\n\t\n\t if (support.blob) {\n\t this.blob = function() {\n\t var rejected = consumed(this)\n\t if (rejected) {\n\t return rejected\n\t }\n\t\n\t if (this._bodyBlob) {\n\t return Promise.resolve(this._bodyBlob)\n\t } else if (this._bodyArrayBuffer) {\n\t return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n\t } else if (this._bodyFormData) {\n\t throw new Error('could not read FormData body as blob')\n\t } else {\n\t return Promise.resolve(new Blob([this._bodyText]))\n\t }\n\t }\n\t\n\t this.arrayBuffer = function() {\n\t if (this._bodyArrayBuffer) {\n\t return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n\t } else {\n\t return this.blob().then(readBlobAsArrayBuffer)\n\t }\n\t }\n\t }\n\t\n\t this.text = function() {\n\t var rejected = consumed(this)\n\t if (rejected) {\n\t return rejected\n\t }\n\t\n\t if (this._bodyBlob) {\n\t return readBlobAsText(this._bodyBlob)\n\t } else if (this._bodyArrayBuffer) {\n\t return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n\t } else if (this._bodyFormData) {\n\t throw new Error('could not read FormData body as text')\n\t } else {\n\t return Promise.resolve(this._bodyText)\n\t }\n\t }\n\t\n\t if (support.formData) {\n\t this.formData = function() {\n\t return this.text().then(decode)\n\t }\n\t }\n\t\n\t this.json = function() {\n\t return this.text().then(JSON.parse)\n\t }\n\t\n\t return this\n\t }\n\t\n\t // HTTP methods whose capitalization should be normalized\n\t var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\t\n\t function normalizeMethod(method) {\n\t var upcased = method.toUpperCase()\n\t return (methods.indexOf(upcased) > -1) ? upcased : method\n\t }\n\t\n\t function Request(input, options) {\n\t options = options || {}\n\t var body = options.body\n\t\n\t if (typeof input === 'string') {\n\t this.url = input\n\t } else {\n\t if (input.bodyUsed) {\n\t throw new TypeError('Already read')\n\t }\n\t this.url = input.url\n\t this.credentials = input.credentials\n\t if (!options.headers) {\n\t this.headers = new Headers(input.headers)\n\t }\n\t this.method = input.method\n\t this.mode = input.mode\n\t if (!body && input._bodyInit != null) {\n\t body = input._bodyInit\n\t input.bodyUsed = true\n\t }\n\t }\n\t\n\t this.credentials = options.credentials || this.credentials || 'omit'\n\t if (options.headers || !this.headers) {\n\t this.headers = new Headers(options.headers)\n\t }\n\t this.method = normalizeMethod(options.method || this.method || 'GET')\n\t this.mode = options.mode || this.mode || null\n\t this.referrer = null\n\t\n\t if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n\t throw new TypeError('Body not allowed for GET or HEAD requests')\n\t }\n\t this._initBody(body)\n\t }\n\t\n\t Request.prototype.clone = function() {\n\t return new Request(this, { body: this._bodyInit })\n\t }\n\t\n\t function decode(body) {\n\t var form = new FormData()\n\t body.trim().split('&').forEach(function(bytes) {\n\t if (bytes) {\n\t var split = bytes.split('=')\n\t var name = split.shift().replace(/\\+/g, ' ')\n\t var value = split.join('=').replace(/\\+/g, ' ')\n\t form.append(decodeURIComponent(name), decodeURIComponent(value))\n\t }\n\t })\n\t return form\n\t }\n\t\n\t function parseHeaders(rawHeaders) {\n\t var headers = new Headers()\n\t rawHeaders.split('\\r\\n').forEach(function(line) {\n\t var parts = line.split(':')\n\t var key = parts.shift().trim()\n\t if (key) {\n\t var value = parts.join(':').trim()\n\t headers.append(key, value)\n\t }\n\t })\n\t return headers\n\t }\n\t\n\t Body.call(Request.prototype)\n\t\n\t function Response(bodyInit, options) {\n\t if (!options) {\n\t options = {}\n\t }\n\t\n\t this.type = 'default'\n\t this.status = 'status' in options ? options.status : 200\n\t this.ok = this.status >= 200 && this.status < 300\n\t this.statusText = 'statusText' in options ? options.statusText : 'OK'\n\t this.headers = new Headers(options.headers)\n\t this.url = options.url || ''\n\t this._initBody(bodyInit)\n\t }\n\t\n\t Body.call(Response.prototype)\n\t\n\t Response.prototype.clone = function() {\n\t return new Response(this._bodyInit, {\n\t status: this.status,\n\t statusText: this.statusText,\n\t headers: new Headers(this.headers),\n\t url: this.url\n\t })\n\t }\n\t\n\t Response.error = function() {\n\t var response = new Response(null, {status: 0, statusText: ''})\n\t response.type = 'error'\n\t return response\n\t }\n\t\n\t var redirectStatuses = [301, 302, 303, 307, 308]\n\t\n\t Response.redirect = function(url, status) {\n\t if (redirectStatuses.indexOf(status) === -1) {\n\t throw new RangeError('Invalid status code')\n\t }\n\t\n\t return new Response(null, {status: status, headers: {location: url}})\n\t }\n\t\n\t self.Headers = Headers\n\t self.Request = Request\n\t self.Response = Response\n\t\n\t self.fetch = function(input, init) {\n\t return new Promise(function(resolve, reject) {\n\t var request = new Request(input, init)\n\t var xhr = new XMLHttpRequest()\n\t\n\t xhr.onload = function() {\n\t var options = {\n\t status: xhr.status,\n\t statusText: xhr.statusText,\n\t headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n\t }\n\t options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n\t var body = 'response' in xhr ? xhr.response : xhr.responseText\n\t resolve(new Response(body, options))\n\t }\n\t\n\t xhr.onerror = function() {\n\t reject(new TypeError('Network request failed'))\n\t }\n\t\n\t xhr.ontimeout = function() {\n\t reject(new TypeError('Network request failed'))\n\t }\n\t\n\t xhr.open(request.method, request.url, true)\n\t\n\t if (request.credentials === 'include') {\n\t xhr.withCredentials = true\n\t }\n\t\n\t if ('responseType' in xhr && support.blob) {\n\t xhr.responseType = 'blob'\n\t }\n\t\n\t request.headers.forEach(function(value, name) {\n\t xhr.setRequestHeader(name, value)\n\t })\n\t\n\t xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n\t })\n\t }\n\t self.fetch.polyfill = true\n\t})(typeof self !== 'undefined' ? self : this);\n\n\n/***/ },\n/* 166 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _styles = __webpack_require__(245);\n\t\n\tvar _styles2 = _interopRequireDefault(_styles);\n\t\n\tvar _errorContainer = __webpack_require__(174);\n\t\n\tvar _errorContainer2 = _interopRequireDefault(_errorContainer);\n\t\n\tvar _userContainer = __webpack_require__(207);\n\t\n\tvar _userContainer2 = _interopRequireDefault(_userContainer);\n\t\n\tvar _showUserContainer = __webpack_require__(205);\n\t\n\tvar _showUserContainer2 = _interopRequireDefault(_showUserContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar base = {\n\t name: 'Unleash',\n\t link: '/'\n\t};\n\t\n\tfunction replace(input, params) {\n\t if (!params) {\n\t return input;\n\t }\n\t Object.keys(params).forEach(function (key) {\n\t input = input.replace(':' + key, params[key]);\n\t });\n\t return input;\n\t}\n\t\n\tvar App = function (_Component) {\n\t _inherits(App, _Component);\n\t\n\t function App() {\n\t _classCallCheck(this, App);\n\t\n\t return _possibleConstructorReturn(this, (App.__proto__ || Object.getPrototypeOf(App)).apply(this, arguments));\n\t }\n\t\n\t _createClass(App, [{\n\t key: 'componentWillReceiveProps',\n\t value: function componentWillReceiveProps(nextProps) {\n\t if (this.props.location.pathname !== nextProps.location.pathname) {\n\t clearTimeout(this.timer);\n\t this.timer = setTimeout(function () {\n\t window.requestAnimationFrame(function () {\n\t document.querySelector('.mdl-layout__content').scrollTop = 0;\n\t });\n\t\n\t var layout = document.querySelector('.mdl-js-layout');\n\t var drawer = document.querySelector('.mdl-layout__drawer');\n\t // hack, might get a built in alternative later\n\t if (drawer.classList.contains('is-visible')) {\n\t layout.MaterialLayout.toggleDrawer();\n\t }\n\t }, 10);\n\t }\n\t }\n\t }, {\n\t key: 'getSections',\n\t value: function getSections() {\n\t if (window.innerWidth < 768) {\n\t return [base];\n\t }\n\t var _props = this.props,\n\t routes = _props.routes,\n\t params = _props.params;\n\t\n\t var unique = {};\n\t var result = [base].concat(routes.splice(1).map(function (routeEntry) {\n\t return {\n\t name: replace(routeEntry.pageTitle, params),\n\t link: replace(routeEntry.link || routeEntry.path, params)\n\t };\n\t })).filter(function (entry) {\n\t if (!unique[entry.link]) {\n\t unique[entry.link] = true;\n\t return true;\n\t }\n\t return false;\n\t });\n\t\n\t // mutate document.title:\n\t document.title = result.map(function (e) {\n\t return e.name;\n\t }).reverse().join(' - ');\n\t\n\t return result;\n\t }\n\t }, {\n\t key: 'getTitleWithLinks',\n\t value: function getTitleWithLinks() {\n\t var result = this.getSections();\n\t return _react2.default.createElement(\n\t 'span',\n\t null,\n\t result.map(function (entry, index) {\n\t return _react2.default.createElement(\n\t 'span',\n\t { key: entry.link + index },\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { style: { color: '#f1f1f1', textDecoration: 'none' }, to: entry.link },\n\t entry.name\n\t ),\n\t ' ',\n\t index + 1 < result.length ? ' / ' : null\n\t );\n\t })\n\t );\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var createListItem = function createListItem(path, caption, icon) {\n\t return _react2.default.createElement(\n\t 'a',\n\t {\n\t href: _this2.context.router.createHref(path),\n\t className: _this2.context.router.isActive(path) ? _styles2.default.active : '' },\n\t icon && _react2.default.createElement(_reactMdl.Icon, { name: icon }),\n\t ' ',\n\t caption\n\t );\n\t };\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t { style: {} },\n\t _react2.default.createElement(_userContainer2.default, null),\n\t _react2.default.createElement(\n\t _reactMdl.Layout,\n\t { fixedHeader: true },\n\t _react2.default.createElement(\n\t _reactMdl.Header,\n\t { title: this.getTitleWithLinks() },\n\t _react2.default.createElement(\n\t _reactMdl.Navigation,\n\t null,\n\t _react2.default.createElement(\n\t 'a',\n\t { href: 'https://github.com/Unleash', target: '_blank' },\n\t 'Github'\n\t ),\n\t _react2.default.createElement(_showUserContainer2.default, null)\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Drawer,\n\t { title: 'Unleash Admin' },\n\t _react2.default.createElement(\n\t _reactMdl.Navigation,\n\t null,\n\t createListItem('/features', 'Feature toggles', 'list'),\n\t createListItem('/strategies', 'Strategies', 'extension'),\n\t createListItem('/history', 'Event history', 'history'),\n\t createListItem('/archive', 'Archived toggles', 'archive'),\n\t createListItem('/applications', 'Applications', 'apps')\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Content,\n\t null,\n\t _react2.default.createElement(\n\t _reactMdl.Grid,\n\t { shadow: 1, style: { maxWidth: '1200px', margin: '0 auto' } },\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { col: 12 },\n\t this.props.children,\n\t _react2.default.createElement(_errorContainer2.default, null)\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Footer,\n\t { size: 'mega' },\n\t _react2.default.createElement(\n\t _reactMdl.FooterSection,\n\t { type: 'middle' },\n\t _react2.default.createElement(\n\t _reactMdl.FooterDropDownSection,\n\t { title: 'Menu' },\n\t _react2.default.createElement(\n\t _reactMdl.FooterLinkList,\n\t null,\n\t createListItem('/features', 'Feature toggles'),\n\t createListItem('/strategies', 'Strategies'),\n\t createListItem('/history', 'Event history'),\n\t createListItem('/archive', 'Archived toggles')\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.FooterDropDownSection,\n\t { title: 'Metrics' },\n\t _react2.default.createElement(\n\t _reactMdl.FooterLinkList,\n\t null,\n\t createListItem('/applications', 'Applications')\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.FooterDropDownSection,\n\t { title: 'Clients' },\n\t _react2.default.createElement(\n\t _reactMdl.FooterLinkList,\n\t null,\n\t _react2.default.createElement(\n\t 'a',\n\t { href: 'https://github.com/Unleash/unleash-node-client/' },\n\t 'Node.js'\n\t ),\n\t _react2.default.createElement(\n\t 'a',\n\t { href: 'https://github.com/Unleash/unleash-java-client/' },\n\t 'Java'\n\t )\n\t )\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.FooterSection,\n\t { type: 'bottom', logo: 'Unleash Admin' },\n\t _react2.default.createElement(\n\t _reactMdl.FooterLinkList,\n\t null,\n\t _react2.default.createElement(\n\t 'a',\n\t { href: 'https://github.com/Unleash/unleash/', target: '_blank' },\n\t 'GitHub'\n\t ),\n\t _react2.default.createElement(\n\t 'a',\n\t { href: 'https://finn.no', target: '_blank' },\n\t _react2.default.createElement(\n\t 'small',\n\t null,\n\t 'A product by'\n\t ),\n\t ' FINN.no'\n\t )\n\t )\n\t )\n\t )\n\t )\n\t )\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t location: _react.PropTypes.object.isRequired,\n\t params: _react.PropTypes.object.isRequired,\n\t routes: _react.PropTypes.array.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return App;\n\t}(_react.Component);\n\t\n\tApp.contextTypes = {\n\t router: _react2.default.PropTypes.object\n\t};\n\texports.default = App;\n\t;\n\n/***/ },\n/* 167 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _common = __webpack_require__(15);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* eslint react/no-multi-comp:off */\n\t\n\t\n\tvar StatefulTextfield = function (_Component) {\n\t _inherits(StatefulTextfield, _Component);\n\t\n\t function StatefulTextfield(props) {\n\t _classCallCheck(this, StatefulTextfield);\n\t\n\t var _this = _possibleConstructorReturn(this, (StatefulTextfield.__proto__ || Object.getPrototypeOf(StatefulTextfield)).call(this, props));\n\t\n\t _this.state = { value: props.value };\n\t _this.setValue = function setValue(e) {\n\t this.setState({ value: e.target.value });\n\t }.bind(_this);\n\t return _this;\n\t }\n\t\n\t _createClass(StatefulTextfield, [{\n\t key: 'render',\n\t value: function render() {\n\t return _react2.default.createElement(_reactMdl.Textfield, {\n\t style: { width: '100%' },\n\t label: this.props.label,\n\t floatingLabel: true,\n\t rows: this.props.rows,\n\t value: this.state.value,\n\t onChange: this.setValue,\n\t onBlur: this.props.onBlur });\n\t }\n\t }]);\n\t\n\t return StatefulTextfield;\n\t}(_react.Component);\n\t\n\tvar ClientApplications = function (_PureComponent) {\n\t _inherits(ClientApplications, _PureComponent);\n\t\n\t function ClientApplications(props) {\n\t _classCallCheck(this, ClientApplications);\n\t\n\t var _this2 = _possibleConstructorReturn(this, (ClientApplications.__proto__ || Object.getPrototypeOf(ClientApplications)).call(this, props));\n\t\n\t _this2.state = { activeTab: 0 };\n\t return _this2;\n\t }\n\t\n\t _createClass(ClientApplications, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t this.props.fetchApplication(this.props.appName);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this3 = this;\n\t\n\t if (!this.props.application) {\n\t return _react2.default.createElement(_reactMdl.ProgressBar, { indeterminate: true });\n\t }\n\t var _props = this.props,\n\t application = _props.application,\n\t storeApplicationMetaData = _props.storeApplicationMetaData;\n\t var appName = application.appName,\n\t instances = application.instances,\n\t strategies = application.strategies,\n\t seenToggles = application.seenToggles,\n\t url = application.url,\n\t description = application.description,\n\t _application$icon = application.icon,\n\t icon = _application$icon === undefined ? 'apps' : _application$icon,\n\t color = application.color;\n\t\n\t\n\t var content = this.state.activeTab === 0 ? _react2.default.createElement(\n\t _reactMdl.Grid,\n\t null,\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { col: 6, tablet: 4, phone: 12 },\n\t _react2.default.createElement(\n\t 'h6',\n\t null,\n\t ' Toggles'\n\t ),\n\t _react2.default.createElement('hr', null),\n\t _react2.default.createElement(\n\t _reactMdl.List,\n\t null,\n\t seenToggles.map(function (_ref, i) {\n\t var name = _ref.name,\n\t description = _ref.description,\n\t enabled = _ref.enabled,\n\t notFound = _ref.notFound;\n\t return notFound ? _react2.default.createElement(\n\t _reactMdl.ListItem,\n\t { twoLine: true, key: i },\n\t _react2.default.createElement(\n\t _reactMdl.ListItemContent,\n\t { icon: 'report', subtitle: 'Missing, want to create?' },\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { to: '/features/create?name=' + name },\n\t name\n\t )\n\t )\n\t ) : _react2.default.createElement(\n\t _reactMdl.ListItem,\n\t { twoLine: true, key: i },\n\t _react2.default.createElement(\n\t _reactMdl.ListItemContent,\n\t { icon: _react2.default.createElement(\n\t 'span',\n\t null,\n\t _react2.default.createElement(_reactMdl.Switch, { disabled: true, checked: !!enabled })\n\t ), subtitle: (0, _common.shorten)(description, 60) },\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { to: '/features/view/' + name },\n\t (0, _common.shorten)(name, 50)\n\t )\n\t )\n\t );\n\t })\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { col: 6, tablet: 4, phone: 12 },\n\t _react2.default.createElement(\n\t 'h6',\n\t null,\n\t 'Implemented strategies'\n\t ),\n\t _react2.default.createElement('hr', null),\n\t _react2.default.createElement(\n\t _reactMdl.List,\n\t null,\n\t strategies.map(function (_ref2, i) {\n\t var name = _ref2.name,\n\t description = _ref2.description,\n\t notFound = _ref2.notFound;\n\t return notFound ? _react2.default.createElement(\n\t _reactMdl.ListItem,\n\t { twoLine: true, key: name + '-' + i },\n\t _react2.default.createElement(\n\t _reactMdl.ListItemContent,\n\t { icon: 'report', subtitle: 'Missing, want to create?' },\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { to: '/strategies/create?name=' + name },\n\t name\n\t )\n\t )\n\t ) : _react2.default.createElement(\n\t _reactMdl.ListItem,\n\t { twoLine: true, key: name + '-' + i },\n\t _react2.default.createElement(\n\t _reactMdl.ListItemContent,\n\t { icon: 'extension', subtitle: (0, _common.shorten)(description, 60) },\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { to: '/strategies/view/' + name },\n\t (0, _common.shorten)(name, 50)\n\t )\n\t )\n\t );\n\t })\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { col: 12, tablet: 12 },\n\t _react2.default.createElement(\n\t 'h6',\n\t null,\n\t instances.length,\n\t ' Instances registered'\n\t ),\n\t _react2.default.createElement('hr', null),\n\t _react2.default.createElement(\n\t _reactMdl.List,\n\t null,\n\t instances.map(function (_ref3, i) {\n\t var instanceId = _ref3.instanceId,\n\t clientIp = _ref3.clientIp,\n\t lastSeen = _ref3.lastSeen;\n\t return _react2.default.createElement(\n\t _reactMdl.ListItem,\n\t { key: i, twoLine: true },\n\t _react2.default.createElement(\n\t _reactMdl.ListItemContent,\n\t {\n\t icon: 'timeline',\n\t subtitle: _react2.default.createElement(\n\t 'span',\n\t null,\n\t clientIp,\n\t ' last seen at ',\n\t _react2.default.createElement(\n\t 'small',\n\t null,\n\t new Date(lastSeen).toLocaleString('nb-NO')\n\t )\n\t ) },\n\t instanceId\n\t )\n\t );\n\t })\n\t )\n\t )\n\t ) : _react2.default.createElement(\n\t _reactMdl.Grid,\n\t null,\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { col: 12 },\n\t _react2.default.createElement(\n\t 'h5',\n\t null,\n\t 'Edit app meta data'\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { col: 6, tablet: 12 },\n\t _react2.default.createElement(StatefulTextfield, {\n\t value: url, label: 'URL', onBlur: function onBlur(e) {\n\t return storeApplicationMetaData(appName, 'url', e.target.value);\n\t } }),\n\t _react2.default.createElement('br', null),\n\t _react2.default.createElement(StatefulTextfield, {\n\t value: description,\n\t label: 'Description', rows: 5, onBlur: function onBlur(e) {\n\t return storeApplicationMetaData(appName, 'description', e.target.value);\n\t } })\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { col: 6, tablet: 12 },\n\t _react2.default.createElement(StatefulTextfield, {\n\t value: icon, label: 'Select icon', onBlur: function onBlur(e) {\n\t return storeApplicationMetaData(appName, 'icon', e.target.value);\n\t } }),\n\t _react2.default.createElement(StatefulTextfield, {\n\t value: color, label: 'Select color', onBlur: function onBlur(e) {\n\t return storeApplicationMetaData(appName, 'color', e.target.value);\n\t } })\n\t )\n\t );\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(_common.HeaderTitle, { title: _react2.default.createElement(\n\t 'span',\n\t null,\n\t _react2.default.createElement(_reactMdl.Icon, { name: icon }),\n\t ' ',\n\t appName\n\t ), subtitle: description,\n\t actions: url && _react2.default.createElement(\n\t _common.ExternalIconLink,\n\t { url: url },\n\t 'Visit site'\n\t )\n\t }),\n\t _react2.default.createElement(\n\t _reactMdl.Tabs,\n\t { activeTab: this.state.activeTab, onChange: function onChange(tabId) {\n\t return _this3.setState({ activeTab: tabId });\n\t }, ripple: true },\n\t _react2.default.createElement(\n\t _reactMdl.Tab,\n\t null,\n\t 'Metrics'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Tab,\n\t null,\n\t 'Edit'\n\t )\n\t ),\n\t content\n\t );\n\t }\n\t }]);\n\t\n\t return ClientApplications;\n\t}(_react.PureComponent);\n\t\n\texports.default = ClientApplications;\n\n/***/ },\n/* 168 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _applicationEditComponent = __webpack_require__(167);\n\t\n\tvar _applicationEditComponent2 = _interopRequireDefault(_applicationEditComponent);\n\t\n\tvar _actions = __webpack_require__(47);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar mapStateToProps = function mapStateToProps(state, props) {\n\t var application = state.applications.getIn(['apps', props.appName]);\n\t if (application) {\n\t application = application.toJS();\n\t }\n\t return {\n\t application: application\n\t };\n\t};\n\t\n\tvar Constainer = (0, _reactRedux.connect)(mapStateToProps, {\n\t fetchApplication: _actions.fetchApplication,\n\t storeApplicationMetaData: _actions.storeApplicationMetaData\n\t})(_applicationEditComponent2.default);\n\t\n\texports.default = Constainer;\n\n/***/ },\n/* 169 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _common = __webpack_require__(15);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar ClientStrategies = function (_Component) {\n\t _inherits(ClientStrategies, _Component);\n\t\n\t function ClientStrategies() {\n\t _classCallCheck(this, ClientStrategies);\n\t\n\t return _possibleConstructorReturn(this, (ClientStrategies.__proto__ || Object.getPrototypeOf(ClientStrategies)).apply(this, arguments));\n\t }\n\t\n\t _createClass(ClientStrategies, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t this.props.fetchAll();\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var applications = this.props.applications;\n\t\n\t\n\t if (!applications) {\n\t return _react2.default.createElement(_reactMdl.ProgressBar, { indeterminate: true });\n\t }\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(_common.HeaderTitle, { title: 'Applications' }),\n\t _react2.default.createElement(_common.AppsLinkList, { apps: applications })\n\t );\n\t }\n\t }]);\n\t\n\t return ClientStrategies;\n\t}(_react.Component);\n\t\n\texports.default = ClientStrategies;\n\n/***/ },\n/* 170 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _applicationListComponent = __webpack_require__(169);\n\t\n\tvar _applicationListComponent2 = _interopRequireDefault(_applicationListComponent);\n\t\n\tvar _actions = __webpack_require__(47);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar mapStateToProps = function mapStateToProps(state) {\n\t return { applications: state.applications.get('list').toJS() };\n\t};\n\t\n\tvar Container = (0, _reactRedux.connect)(mapStateToProps, { fetchAll: _actions.fetchAll })(_applicationListComponent2.default);\n\t\n\texports.default = Container;\n\n/***/ },\n/* 171 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _archiveListComponent = __webpack_require__(172);\n\t\n\tvar _archiveListComponent2 = _interopRequireDefault(_archiveListComponent);\n\t\n\tvar _archiveActions = __webpack_require__(105);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar mapStateToProps = function mapStateToProps(state) {\n\t var archive = state.archive.get('list').toArray();\n\t\n\t return {\n\t archive: archive\n\t };\n\t};\n\t\n\tvar ArchiveListContainer = (0, _reactRedux.connect)(mapStateToProps, { fetchArchive: _archiveActions.fetchArchive, revive: _archiveActions.revive })(_archiveListComponent2.default);\n\t\n\texports.default = ArchiveListContainer;\n\n/***/ },\n/* 172 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _common = __webpack_require__(15);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar ArchiveList = function (_Component) {\n\t _inherits(ArchiveList, _Component);\n\t\n\t function ArchiveList() {\n\t _classCallCheck(this, ArchiveList);\n\t\n\t return _possibleConstructorReturn(this, (ArchiveList.__proto__ || Object.getPrototypeOf(ArchiveList)).apply(this, arguments));\n\t }\n\t\n\t _createClass(ArchiveList, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t this.props.fetchArchive();\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t archive = _props.archive,\n\t revive = _props.revive;\n\t\n\t archive.forEach(function (e) {\n\t e.reviveName = e.name;\n\t });\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(_common.HeaderTitle, { title: 'Toggle Archive' }),\n\t archive.length > 0 ? _react2.default.createElement(\n\t _reactMdl.DataTable,\n\t {\n\t rows: archive,\n\t style: { width: '100%' } },\n\t _react2.default.createElement(\n\t _reactMdl.TableHeader,\n\t { style: { width: '25px' }, name: 'reviveName', cellFormatter: function cellFormatter(reviveName) {\n\t return _react2.default.createElement(_reactMdl.IconButton, { colored: true, name: 'undo', onClick: function onClick() {\n\t return revive(reviveName);\n\t } });\n\t } },\n\t 'Revive'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.TableHeader,\n\t { style: { width: '25px' }, name: 'enabled', cellFormatter: function cellFormatter(v) {\n\t return v ? 'Yes' : '-';\n\t } },\n\t 'Enabled'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.TableHeader,\n\t { name: 'name' },\n\t 'Toggle name'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.TableHeader,\n\t { numeric: true, name: 'createdAt' },\n\t 'Created'\n\t )\n\t ) : _react2.default.createElement(\n\t 'div',\n\t { style: { textAlign: 'center' } },\n\t _react2.default.createElement(_reactMdl.Icon, { name: 'report', style: { color: '#aaa', fontSize: '40px' } }),\n\t _react2.default.createElement('br', null),\n\t 'No archived feature toggles, go see ',\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { to: '/features' },\n\t 'active toggles here'\n\t )\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return ArchiveList;\n\t}(_react.Component);\n\t\n\texports.default = ArchiveList;\n\n/***/ },\n/* 173 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar ErrorComponent = function (_React$Component) {\n\t _inherits(ErrorComponent, _React$Component);\n\t\n\t function ErrorComponent() {\n\t _classCallCheck(this, ErrorComponent);\n\t\n\t return _possibleConstructorReturn(this, (ErrorComponent.__proto__ || Object.getPrototypeOf(ErrorComponent)).apply(this, arguments));\n\t }\n\t\n\t _createClass(ErrorComponent, [{\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var showError = this.props.errors.length > 0;\n\t var error = showError ? this.props.errors[0] : undefined;\n\t var muteError = function muteError() {\n\t return _this2.props.muteError(error);\n\t };\n\t return _react2.default.createElement(\n\t _reactMdl.Snackbar,\n\t {\n\t action: 'Dismiss',\n\t active: showError,\n\t onActionClick: muteError,\n\t onTimeout: muteError,\n\t timeout: 10000\n\t },\n\t _react2.default.createElement(_reactMdl.Icon, { name: 'question_answer' }),\n\t ' ',\n\t error\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t errors: _react.PropTypes.array.isRequired,\n\t muteError: _react.PropTypes.func.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return ErrorComponent;\n\t}(_react2.default.Component);\n\t\n\texports.default = ErrorComponent;\n\n/***/ },\n/* 174 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _errorComponent = __webpack_require__(173);\n\t\n\tvar _errorComponent2 = _interopRequireDefault(_errorComponent);\n\t\n\tvar _errorActions = __webpack_require__(106);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar mapDispatchToProps = {\n\t muteError: _errorActions.muteError\n\t};\n\t\n\tvar mapStateToProps = function mapStateToProps(state) {\n\t return {\n\t errors: state.error.get('list').toArray()\n\t };\n\t};\n\t\n\texports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_errorComponent2.default);\n\n/***/ },\n/* 175 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _progress = __webpack_require__(100);\n\t\n\tvar _progress2 = _interopRequireDefault(_progress);\n\t\n\tvar _common = __webpack_require__(15);\n\t\n\tvar _feature = __webpack_require__(108);\n\t\n\tvar _feature2 = _interopRequireDefault(_feature);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar Feature = function Feature(_ref) {\n\t var feature = _ref.feature,\n\t onFeatureClick = _ref.onFeatureClick,\n\t onFeatureRemove = _ref.onFeatureRemove,\n\t settings = _ref.settings,\n\t _ref$metricsLastHour = _ref.metricsLastHour,\n\t metricsLastHour = _ref$metricsLastHour === undefined ? { yes: 0, no: 0, isFallback: true } : _ref$metricsLastHour,\n\t _ref$metricsLastMinut = _ref.metricsLastMinute,\n\t metricsLastMinute = _ref$metricsLastMinut === undefined ? { yes: 0, no: 0, isFallback: true } : _ref$metricsLastMinut;\n\t var name = feature.name,\n\t description = feature.description,\n\t enabled = feature.enabled,\n\t strategies = feature.strategies;\n\t var _settings$showLastHou = settings.showLastHour,\n\t showLastHour = _settings$showLastHou === undefined ? false : _settings$showLastHou;\n\t\n\t var isStale = showLastHour ? metricsLastHour.isFallback : metricsLastMinute.isFallback;\n\t\n\t var percent = 1 * (showLastHour ? (0, _common.calc)(metricsLastHour.yes, metricsLastHour.yes + metricsLastHour.no, 0) : (0, _common.calc)(metricsLastMinute.yes, metricsLastMinute.yes + metricsLastMinute.no, 0));\n\t\n\t var removeToggle = function removeToggle() {\n\t if (window.confirm('Are you sure you want to remove this toggle?')) {\n\t // eslint-disable-line no-alert\n\t onFeatureRemove(name);\n\t }\n\t };\n\t\n\t return _react2.default.createElement(\n\t 'li',\n\t { key: name, className: 'mdl-list__item' },\n\t _react2.default.createElement(\n\t 'span',\n\t { className: 'mdl-list__item-primary-content' },\n\t _react2.default.createElement(\n\t 'div',\n\t { style: { width: '40px', textAlign: 'center' } },\n\t isStale ? _react2.default.createElement(_reactMdl.Icon, {\n\t style: { width: '25px', marginTop: '4px', fontSize: '25px', color: '#ccc' },\n\t name: 'report problem', title: 'No metrics avaiable' }) : _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(_progress2.default, { strokeWidth: 15, percentage: percent, width: '50' })\n\t )\n\t ),\n\t '\\xA0',\n\t _react2.default.createElement(\n\t 'span',\n\t { style: { display: 'inline-block', width: '45px' }, title: 'Toggle ' + name },\n\t _react2.default.createElement(_reactMdl.Switch, { title: 'test', key: 'left-actions', onChange: function onChange() {\n\t return onFeatureClick(feature);\n\t }, checked: enabled })\n\t ),\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { to: '/features/view/' + name, className: _feature2.default.link },\n\t (0, _common.shorten)(name, 50),\n\t ' ',\n\t _react2.default.createElement(\n\t 'small',\n\t { className: _feature2.default.hideLt960 },\n\t (0, _common.shorten)(description, 30) || ''\n\t )\n\t )\n\t ),\n\t _react2.default.createElement(\n\t 'span',\n\t { className: _feature2.default.iconList },\n\t strategies && strategies.map(function (s, i) {\n\t return _react2.default.createElement(\n\t _reactMdl.Chip,\n\t { className: [_feature2.default.iconListItemChip, _feature2.default.hideLt960].join(' '), key: i },\n\t _react2.default.createElement(\n\t 'small',\n\t null,\n\t s.name\n\t )\n\t );\n\t }),\n\t _react2.default.createElement(_reactMdl.IconButton, { name: 'delete', onClick: removeToggle, className: _feature2.default.iconListItem })\n\t )\n\t );\n\t};\n\t\n\tFeature.propTypes = {\n\t feature: _react.PropTypes.object,\n\t onFeatureClick: _react.PropTypes.func,\n\t onFeatureRemove: _react.PropTypes.func\n\t};\n\t\n\texports.default = Feature;\n\n/***/ },\n/* 176 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _featureActions = __webpack_require__(22);\n\t\n\tvar _inputHelpers = __webpack_require__(46);\n\t\n\tvar _form = __webpack_require__(99);\n\t\n\tvar _form2 = _interopRequireDefault(_form);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar ID = 'add-feature-toggle';\n\tvar mapStateToProps = (0, _inputHelpers.createMapper)({\n\t id: ID,\n\t getDefault: function getDefault() {\n\t var name = void 0;\n\t try {\n\t var _document$location$ha = document.location.hash.match(/name=([a-z0-9-_]+)/i);\n\t\n\t var _document$location$ha2 = _slicedToArray(_document$location$ha, 2);\n\t\n\t name = _document$location$ha2[1];\n\t } catch (e) {}\n\t return { name: name };\n\t }\n\t});\n\tvar prepare = function prepare(methods, dispatch) {\n\t methods.onSubmit = function (input) {\n\t return function (e) {\n\t e.preventDefault();\n\t (0, _featureActions.createFeatureToggles)(input)(dispatch).then(function () {\n\t return methods.clear();\n\t }).then(function () {\n\t return _reactRouter.hashHistory.push('/features/edit/' + input.name);\n\t });\n\t };\n\t };\n\t\n\t methods.onCancel = function (evt) {\n\t evt.preventDefault();\n\t methods.clear();\n\t _reactRouter.hashHistory.push('/features');\n\t };\n\t\n\t methods.addStrategy = function (v) {\n\t methods.pushToList('strategies', v);\n\t };\n\t\n\t methods.updateStrategy = function (index, n) {\n\t methods.updateInList('strategies', index, n);\n\t };\n\t\n\t methods.removeStrategy = function (index) {\n\t methods.removeFromList('strategies', index);\n\t };\n\t\n\t methods.validateName = function (v) {\n\t var featureToggleName = v.target.value;\n\t (0, _featureActions.validateName)(featureToggleName).then(function () {\n\t return methods.setValue('nameError', undefined);\n\t }).catch(function (err) {\n\t return methods.setValue('nameError', err.message);\n\t });\n\t };\n\t\n\t return methods;\n\t};\n\tvar actions = (0, _inputHelpers.createActions)({ id: ID, prepare: prepare });\n\t\n\texports.default = (0, _reactRedux.connect)(mapStateToProps, actions)(_form2.default);\n\n/***/ },\n/* 177 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _featureActions = __webpack_require__(22);\n\t\n\tvar _inputHelpers = __webpack_require__(46);\n\t\n\tvar _form = __webpack_require__(99);\n\t\n\tvar _form2 = _interopRequireDefault(_form);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar ID = 'edit-feature-toggle';\n\tfunction getId(props) {\n\t return [ID, props.featureToggle.name];\n\t}\n\t// TODO: need to scope to the active featureToggle\n\t// best is to emulate the \"input-storage\"?\n\tvar mapStateToProps = (0, _inputHelpers.createMapper)({\n\t id: getId,\n\t getDefault: function getDefault(state, ownProps) {\n\t return ownProps.featureToggle;\n\t },\n\t prepare: function prepare(props) {\n\t props.editmode = true;\n\t return props;\n\t }\n\t});\n\t\n\tvar prepare = function prepare(methods, dispatch) {\n\t methods.onSubmit = function (input) {\n\t return function (e) {\n\t e.preventDefault();\n\t // TODO: should add error handling\n\t (0, _featureActions.requestUpdateFeatureToggle)(input)(dispatch).then(function () {\n\t return methods.clear();\n\t }).then(function () {\n\t return _reactRouter.hashHistory.push('/features/view/' + input.name);\n\t });\n\t };\n\t };\n\t\n\t methods.onCancel = function (evt) {\n\t evt.preventDefault();\n\t methods.clear();\n\t window.history.back();\n\t };\n\t\n\t methods.addStrategy = function (v) {\n\t methods.pushToList('strategies', v);\n\t };\n\t\n\t methods.removeStrategy = function (index) {\n\t methods.removeFromList('strategies', index);\n\t };\n\t\n\t methods.updateStrategy = function (index, n) {\n\t methods.updateInList('strategies', index, n);\n\t };\n\t\n\t methods.validateName = function () {};\n\t\n\t return methods;\n\t};\n\t\n\tvar actions = (0, _inputHelpers.createActions)({\n\t id: getId,\n\t prepare: prepare\n\t});\n\t\n\texports.default = (0, _reactRedux.connect)(mapStateToProps, actions)(_form2.default);\n\n/***/ },\n/* 178 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar AddStrategy = function (_React$Component) {\n\t _inherits(AddStrategy, _React$Component);\n\t\n\t function AddStrategy() {\n\t var _ref;\n\t\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, AddStrategy);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = AddStrategy.__proto__ || Object.getPrototypeOf(AddStrategy)).call.apply(_ref, [this].concat(args))), _this), _this.addStrategy = function (strategyName) {\n\t var selectedStrategy = _this.props.strategies.find(function (s) {\n\t return s.name === strategyName;\n\t });\n\t var parameters = {};\n\t\n\t selectedStrategy.parameters.forEach(function (_ref2) {\n\t var name = _ref2.name;\n\t parameters[name] = '';\n\t });\n\t\n\t _this.props.addStrategy({\n\t name: selectedStrategy.name,\n\t parameters: parameters\n\t });\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t _createClass(AddStrategy, [{\n\t key: 'stopPropagation',\n\t value: function stopPropagation(e) {\n\t e.stopPropagation();\n\t e.preventDefault();\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var menuStyle = {\n\t maxHeight: '300px',\n\t overflowY: 'auto',\n\t backgroundColor: 'rgb(247, 248, 255)'\n\t };\n\t return _react2.default.createElement(\n\t 'div',\n\t { style: { position: 'relative', width: '25px', height: '25px', display: 'inline-block' } },\n\t _react2.default.createElement(_reactMdl.IconButton, { name: 'add', id: 'strategies-add', raised: true, accent: true, title: 'Add Strategy', onClick: this.stopPropagation }),\n\t _react2.default.createElement(\n\t _reactMdl.Menu,\n\t { target: 'strategies-add', valign: 'bottom', align: 'right', ripple: true, style: menuStyle },\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { disabled: true },\n\t 'Add Strategy:'\n\t ),\n\t this.props.strategies.map(function (s) {\n\t return _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { key: s.name, title: s.description, onClick: function onClick() {\n\t return _this2.addStrategy(s.name);\n\t } },\n\t s.name\n\t );\n\t })\n\t )\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t strategies: _react.PropTypes.array.isRequired,\n\t addStrategy: _react.PropTypes.func.isRequired,\n\t fetchStrategies: _react.PropTypes.func.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return AddStrategy;\n\t}(_react2.default.Component);\n\t\n\texports.default = AddStrategy;\n\n/***/ },\n/* 179 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _strategyConfigure = __webpack_require__(182);\n\t\n\tvar _strategyConfigure2 = _interopRequireDefault(_strategyConfigure);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar StrategiesList = function (_React$Component) {\n\t _inherits(StrategiesList, _React$Component);\n\t\n\t function StrategiesList() {\n\t _classCallCheck(this, StrategiesList);\n\t\n\t return _possibleConstructorReturn(this, (StrategiesList.__proto__ || Object.getPrototypeOf(StrategiesList)).apply(this, arguments));\n\t }\n\t\n\t _createClass(StrategiesList, [{\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props,\n\t strategies = _props.strategies,\n\t configuredStrategies = _props.configuredStrategies;\n\t\n\t\n\t if (!configuredStrategies || configuredStrategies.length === 0) {\n\t return _react2.default.createElement(\n\t 'i',\n\t { style: { color: 'red' } },\n\t 'No strategies added'\n\t );\n\t }\n\t\n\t var blocks = configuredStrategies.map(function (strategy, i) {\n\t return _react2.default.createElement(_strategyConfigure2.default, {\n\t key: strategy.name + '-' + i,\n\t strategy: strategy,\n\t removeStrategy: _this2.props.removeStrategy.bind(null, i),\n\t updateStrategy: _this2.props.updateStrategy.bind(null, i),\n\t strategyDefinition: strategies.find(function (s) {\n\t return s.name === strategy.name;\n\t }) });\n\t });\n\t return _react2.default.createElement(\n\t 'div',\n\t { style: { display: 'flex', flexWrap: 'wrap' } },\n\t blocks\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t strategies: _react.PropTypes.array.isRequired,\n\t configuredStrategies: _react.PropTypes.array.isRequired,\n\t updateStrategy: _react.PropTypes.func.isRequired,\n\t removeStrategy: _react.PropTypes.func.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return StrategiesList;\n\t}(_react2.default.Component);\n\t\n\texports.default = StrategiesList;\n\n/***/ },\n/* 180 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _strategiesSection = __webpack_require__(181);\n\t\n\tvar _strategiesSection2 = _interopRequireDefault(_strategiesSection);\n\t\n\tvar _actions = __webpack_require__(27);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = (0, _reactRedux.connect)(function (state) {\n\t return {\n\t strategies: state.strategies.get('list').toArray()\n\t };\n\t}, { fetchStrategies: _actions.fetchStrategies })(_strategiesSection2.default);\n\n/***/ },\n/* 181 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _strategiesList = __webpack_require__(179);\n\t\n\tvar _strategiesList2 = _interopRequireDefault(_strategiesList);\n\t\n\tvar _strategiesAdd = __webpack_require__(178);\n\t\n\tvar _strategiesAdd2 = _interopRequireDefault(_strategiesAdd);\n\t\n\tvar _common = __webpack_require__(15);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar StrategiesSection = function (_React$Component) {\n\t _inherits(StrategiesSection, _React$Component);\n\t\n\t function StrategiesSection() {\n\t _classCallCheck(this, StrategiesSection);\n\t\n\t return _possibleConstructorReturn(this, (StrategiesSection.__proto__ || Object.getPrototypeOf(StrategiesSection)).apply(this, arguments));\n\t }\n\t\n\t _createClass(StrategiesSection, [{\n\t key: 'componentWillMount',\n\t value: function componentWillMount() {\n\t this.props.fetchStrategies();\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t if (!this.props.strategies || this.props.strategies.length === 0) {\n\t return _react2.default.createElement(_reactMdl.ProgressBar, { indeterminate: true });\n\t }\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(_common.HeaderTitle, { title: 'Activation strategies', actions: _react2.default.createElement(_strategiesAdd2.default, this.props) }),\n\t _react2.default.createElement(_strategiesList2.default, this.props)\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t strategies: _react.PropTypes.array.isRequired,\n\t addStrategy: _react.PropTypes.func.isRequired,\n\t removeStrategy: _react.PropTypes.func.isRequired,\n\t updateStrategy: _react.PropTypes.func.isRequired,\n\t fetchStrategies: _react.PropTypes.func.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return StrategiesSection;\n\t}(_react2.default.Component);\n\t\n\texports.default = StrategiesSection;\n\n/***/ },\n/* 182 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _strategyInputPercentage = __webpack_require__(184);\n\t\n\tvar _strategyInputPercentage2 = _interopRequireDefault(_strategyInputPercentage);\n\t\n\tvar _strategyInputList = __webpack_require__(183);\n\t\n\tvar _strategyInputList2 = _interopRequireDefault(_strategyInputList);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar style = {\n\t flex: '1',\n\t minWidth: '300px',\n\t maxWidth: '100%',\n\t margin: '5px 20px 15px 0px',\n\t background: '#f2f9fc'\n\t};\n\t\n\tvar helpText = {\n\t color: 'rgba(0,0,0, 0.54)',\n\t fontSize: '12px',\n\t lineHeight: '14px'\n\t};\n\t\n\tvar StrategyConfigure = function (_React$Component) {\n\t _inherits(StrategyConfigure, _React$Component);\n\t\n\t function StrategyConfigure() {\n\t var _ref;\n\t\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, StrategyConfigure);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = StrategyConfigure.__proto__ || Object.getPrototypeOf(StrategyConfigure)).call.apply(_ref, [this].concat(args))), _this), _this.handleConfigChange = function (key, e) {\n\t _this.setConfig(key, e.target.value);\n\t }, _this.setConfig = function (key, value) {\n\t var parameters = _this.props.strategy.parameters || {};\n\t parameters[key] = value;\n\t\n\t var updatedStrategy = Object.assign({}, _this.props.strategy, { parameters: parameters });\n\t\n\t _this.props.updateStrategy(updatedStrategy);\n\t }, _this.handleRemove = function (evt) {\n\t evt.preventDefault();\n\t _this.props.removeStrategy();\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t _createClass(StrategyConfigure, [{\n\t key: 'renderInputFields',\n\t value: function renderInputFields(_ref2) {\n\t var _this2 = this;\n\t\n\t var parameters = _ref2.parameters;\n\t\n\t if (parameters && parameters.length > 0) {\n\t return parameters.map(function (_ref3) {\n\t var name = _ref3.name,\n\t type = _ref3.type,\n\t description = _ref3.description,\n\t required = _ref3.required;\n\t\n\t var value = _this2.props.strategy.parameters[name];\n\t if (type === 'percentage') {\n\t if (value == null || typeof value === 'string' && value === '') {\n\t value = 50; // default value\n\t }\n\t return _react2.default.createElement(\n\t 'div',\n\t { key: name },\n\t _react2.default.createElement(_strategyInputPercentage2.default, {\n\t name: name,\n\t onChange: _this2.handleConfigChange.bind(_this2, name),\n\t value: 1 * value }),\n\t description && _react2.default.createElement(\n\t 'p',\n\t { style: helpText },\n\t description\n\t )\n\t );\n\t } else if (type === 'list') {\n\t var list = [];\n\t if (typeof value === 'string') {\n\t list = value.trim().split(',').filter(Boolean);\n\t }\n\t return _react2.default.createElement(\n\t 'div',\n\t { key: name },\n\t _react2.default.createElement(_strategyInputList2.default, { name: name, list: list, setConfig: _this2.setConfig }),\n\t description && _react2.default.createElement(\n\t 'p',\n\t { style: helpText },\n\t description\n\t )\n\t );\n\t } else if (type === 'number') {\n\t return _react2.default.createElement(\n\t 'div',\n\t { key: name },\n\t _react2.default.createElement(_reactMdl.Textfield, {\n\t pattern: '-?[0-9]*(\\\\.[0-9]+)?',\n\t error: name + ' is not a number!',\n\t floatingLabel: true,\n\t required: required,\n\t style: { width: '100%' },\n\t name: name,\n\t label: name,\n\t onChange: _this2.handleConfigChange.bind(_this2, name),\n\t value: value\n\t }),\n\t description && _react2.default.createElement(\n\t 'p',\n\t { style: helpText },\n\t description\n\t )\n\t );\n\t } else {\n\t return _react2.default.createElement(\n\t 'div',\n\t { key: name },\n\t _react2.default.createElement(_reactMdl.Textfield, {\n\t floatingLabel: true,\n\t rows: 1,\n\t style: { width: '100%' },\n\t required: required,\n\t name: name,\n\t label: name,\n\t onChange: _this2.handleConfigChange.bind(_this2, name),\n\t value: value\n\t }),\n\t description && _react2.default.createElement(\n\t 'p',\n\t { style: helpText },\n\t description\n\t )\n\t );\n\t }\n\t });\n\t }\n\t return null;\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t if (!this.props.strategyDefinition) {\n\t var _name = this.props.strategy.name;\n\t\n\t return _react2.default.createElement(\n\t _reactMdl.Card,\n\t { shadow: 0, style: style },\n\t _react2.default.createElement(\n\t _reactMdl.CardTitle,\n\t null,\n\t '\"',\n\t _name,\n\t '\" deleted?'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.CardText,\n\t null,\n\t 'The strategy \"',\n\t _name,\n\t '\" does not exist on this server.',\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { to: '/strategies/create?name=' + _name },\n\t 'Want to create it now?'\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.CardActions,\n\t null,\n\t _react2.default.createElement(\n\t _reactMdl.Button,\n\t { onClick: this.handleRemove, label: 'remove strategy', accent: true, raised: true },\n\t 'Remove'\n\t )\n\t )\n\t );\n\t }\n\t\n\t var inputFields = this.renderInputFields(this.props.strategyDefinition);\n\t\n\t var name = this.props.strategy.name;\n\t\n\t\n\t return _react2.default.createElement(\n\t _reactMdl.Card,\n\t { shadow: 0, style: style },\n\t _react2.default.createElement(\n\t _reactMdl.CardTitle,\n\t { style: { color: '#fff', height: '65px', background: '#607d8b' } },\n\t _react2.default.createElement(_reactMdl.Icon, { name: 'extension' }),\n\t '\\xA0',\n\t name\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.CardText,\n\t null,\n\t this.props.strategyDefinition.description\n\t ),\n\t inputFields && _react2.default.createElement(\n\t _reactMdl.CardActions,\n\t { border: true, style: { padding: '20px' } },\n\t inputFields\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.CardMenu,\n\t { style: { color: '#fff' } },\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t {\n\t title: 'View strategy',\n\t to: '/strategies/view/' + name,\n\t style: { color: '#fff', display: 'inline-block', verticalAlign: 'bottom', marginRight: '5px' } },\n\t _react2.default.createElement(_reactMdl.Icon, { name: 'link' })\n\t ),\n\t _react2.default.createElement(_reactMdl.IconButton, { title: 'Remove strategy from toggle', name: 'delete', onClick: this.handleRemove })\n\t )\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t strategy: _react.PropTypes.object.isRequired,\n\t strategyDefinition: _react.PropTypes.object.isRequired,\n\t updateStrategy: _react.PropTypes.func.isRequired,\n\t removeStrategy: _react.PropTypes.func.isRequired\n\t };\n\t }\n\t\n\t // shouldComponentUpdate (props, nextProps) {\n\t // console.log({ props, nextProps });\n\t // }\n\t\n\t }]);\n\t\n\t return StrategyConfigure;\n\t}(_react2.default.Component);\n\t\n\texports.default = StrategyConfigure;\n\n/***/ },\n/* 183 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar InputList = function (_Component) {\n\t _inherits(InputList, _Component);\n\t\n\t function InputList() {\n\t var _ref;\n\t\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, InputList);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = InputList.__proto__ || Object.getPrototypeOf(InputList)).call.apply(_ref, [this].concat(args))), _this), _this.onBlur = function (e) {\n\t _this.setValue(e);\n\t window.removeEventListener('keydown', _this.onKeyHandler, false);\n\t }, _this.onFocus = function (e) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\t window.addEventListener('keydown', _this.onKeyHandler, false);\n\t }, _this.onKeyHandler = function (e) {\n\t if (e.key === 'Enter') {\n\t _this.setValue();\n\t e.preventDefault();\n\t e.stopPropagation();\n\t }\n\t }, _this.setValue = function (e) {\n\t if (e) {\n\t e.preventDefault();\n\t e.stopPropagation();\n\t }\n\t\n\t var _this$props = _this.props,\n\t name = _this$props.name,\n\t list = _this$props.list,\n\t setConfig = _this$props.setConfig;\n\t\n\t var inputValue = document.querySelector('[name=\"' + name + '_input\"]');\n\t if (inputValue && inputValue.value) {\n\t list.push(inputValue.value);\n\t inputValue.value = '';\n\t setConfig(name, list.join(','));\n\t }\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t _createClass(InputList, [{\n\t key: 'onClose',\n\t value: function onClose(index) {\n\t var _props = this.props,\n\t name = _props.name,\n\t list = _props.list,\n\t setConfig = _props.setConfig;\n\t\n\t list[index] = null;\n\t setConfig(name, list.length === 1 ? '' : list.filter(Boolean).join(','));\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props2 = this.props,\n\t name = _props2.name,\n\t list = _props2.list;\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t 'p',\n\t null,\n\t name\n\t ),\n\t list.map(function (entryValue, index) {\n\t return _react2.default.createElement(\n\t _reactMdl.Chip,\n\t {\n\t key: index + entryValue,\n\t style: { marginRight: '3px' },\n\t onClose: function onClose() {\n\t return _this2.onClose(index);\n\t } },\n\t entryValue\n\t );\n\t }),\n\t _react2.default.createElement(\n\t 'div',\n\t { style: { display: 'flex' } },\n\t _react2.default.createElement(_reactMdl.Textfield, {\n\t name: name + '_input',\n\t style: { width: '100%', flex: 1 },\n\t floatingLabel: true,\n\t label: 'Add list entry',\n\t onFocus: this.onFocus,\n\t onBlur: this.onBlur }),\n\t _react2.default.createElement(_reactMdl.IconButton, { name: 'add', raised: true, style: { flex: 1, flexGrow: 0, margin: '20px 0 0 10px' }, onClick: this.setValue })\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return InputList;\n\t}(_react.Component);\n\t\n\tInputList.propTypes = {\n\t name: _react.PropTypes.string.isRequired,\n\t list: _react.PropTypes.array.isRequired,\n\t setConfig: _react.PropTypes.func.isRequired\n\t};\n\texports.default = InputList;\n\n/***/ },\n/* 184 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar labelStyle = {\n\t margin: '20px 0',\n\t textAlign: 'center',\n\t color: '#3f51b5',\n\t fontSize: '12px'\n\t};\n\t\n\texports.default = function (_ref) {\n\t var name = _ref.name,\n\t value = _ref.value,\n\t onChange = _ref.onChange;\n\t return _react2.default.createElement(\n\t 'div',\n\t { style: { marginBottom: '20px' } },\n\t _react2.default.createElement(\n\t 'div',\n\t { style: labelStyle },\n\t name,\n\t ': ',\n\t value,\n\t '%'\n\t ),\n\t _react2.default.createElement(_reactMdl.Slider, { min: 0, max: 100, defaultValue: value, value: value, onChange: onChange, label: name })\n\t );\n\t};\n\n/***/ },\n/* 185 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _featureListItemComponent = __webpack_require__(175);\n\t\n\tvar _featureListItemComponent2 = _interopRequireDefault(_featureListItemComponent);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _feature = __webpack_require__(108);\n\t\n\tvar _feature2 = _interopRequireDefault(_feature);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar FeatureListComponent = function (_React$PureComponent) {\n\t _inherits(FeatureListComponent, _React$PureComponent);\n\t\n\t function FeatureListComponent() {\n\t _classCallCheck(this, FeatureListComponent);\n\t\n\t return _possibleConstructorReturn(this, (FeatureListComponent.__proto__ || Object.getPrototypeOf(FeatureListComponent)).apply(this, arguments));\n\t }\n\t\n\t _createClass(FeatureListComponent, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t var _this2 = this;\n\t\n\t this.props.fetchFeatureToggles();\n\t this.props.fetchFeatureMetrics();\n\t this.timer = setInterval(function () {\n\t _this2.props.fetchFeatureMetrics();\n\t }, 5000);\n\t }\n\t }, {\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t clearInterval(this.timer);\n\t }\n\t }, {\n\t key: 'toggleMetrics',\n\t value: function toggleMetrics() {\n\t this.props.updateSetting('showLastHour', !this.props.settings.showLastHour);\n\t }\n\t }, {\n\t key: 'setFilter',\n\t value: function setFilter(v) {\n\t this.props.updateSetting('filter', typeof v === 'string' ? v.trim() : '');\n\t }\n\t }, {\n\t key: 'setSort',\n\t value: function setSort(v) {\n\t this.props.updateSetting('sort', typeof v === 'string' ? v.trim() : '');\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this3 = this;\n\t\n\t var _props = this.props,\n\t features = _props.features,\n\t onFeatureClick = _props.onFeatureClick,\n\t onFeatureRemove = _props.onFeatureRemove,\n\t featureMetrics = _props.featureMetrics,\n\t settings = _props.settings;\n\t\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t 'div',\n\t { className: _feature2.default.topList },\n\t _react2.default.createElement(\n\t _reactMdl.Chip,\n\t { onClick: function onClick() {\n\t return _this3.toggleMetrics();\n\t }, className: _feature2.default.topListItem0 },\n\t settings.showLastHour && _react2.default.createElement(\n\t _reactMdl.ChipContact,\n\t { className: 'mdl-color--teal mdl-color-text--white' },\n\t _react2.default.createElement(_reactMdl.Icon, { name: 'hourglass_full', style: { fontSize: '16px' } })\n\t ),\n\t '1 hour'\n\t ),\n\t '\\xA0',\n\t _react2.default.createElement(\n\t _reactMdl.Chip,\n\t { onClick: function onClick() {\n\t return _this3.toggleMetrics();\n\t }, className: _feature2.default.topListItem0 },\n\t !settings.showLastHour && _react2.default.createElement(\n\t _reactMdl.ChipContact,\n\t { className: 'mdl-color--teal mdl-color-text--white' },\n\t _react2.default.createElement(_reactMdl.Icon, { name: 'hourglass_empty', style: { fontSize: '16px' } })\n\t ),\n\t '1 minute'\n\t ),\n\t _react2.default.createElement(\n\t 'div',\n\t { className: _feature2.default.topListItem2, style: { margin: '-10px 10px 0 10px' } },\n\t _react2.default.createElement(_reactMdl.Textfield, {\n\t floatingLabel: true,\n\t value: settings.filter,\n\t onChange: function onChange(e) {\n\t _this3.setFilter(e.target.value);\n\t },\n\t label: 'Filter toggles',\n\t style: { width: '100%' }\n\t })\n\t ),\n\t _react2.default.createElement(\n\t 'div',\n\t { style: { position: 'relative' }, className: _feature2.default.topListItem0 },\n\t _react2.default.createElement(_reactMdl.IconButton, { name: 'sort', id: 'demo-menu-top-right', colored: true, title: 'Sort' }),\n\t _react2.default.createElement(\n\t _reactMdl.Menu,\n\t { target: 'demo-menu-top-right', valign: 'bottom', align: 'right', ripple: true, onClick: function onClick(e) {\n\t return _this3.setSort(e.target.getAttribute('data-target'));\n\t } },\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { disabled: true },\n\t 'Filter by:'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { disabled: !settings.sort || settings.sort === 'nosort', 'data-target': 'nosort' },\n\t 'Default'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { disabled: settings.sort === 'name', 'data-target': 'name' },\n\t 'Name'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { disabled: settings.sort === 'enabled', 'data-target': 'enabled' },\n\t 'Enabled'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { disabled: settings.sort === 'appName', 'data-target': 'appName' },\n\t 'Application name'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { disabled: settings.sort === 'created', 'data-target': 'created' },\n\t 'Created'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { disabled: settings.sort === 'strategies', 'data-target': 'strategies' },\n\t 'Strategies'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.MenuItem,\n\t { disabled: settings.sort === 'metrics', 'data-target': 'metrics' },\n\t 'Metrics'\n\t )\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { to: '/features/create', className: _feature2.default.topListItem0 },\n\t _react2.default.createElement(_reactMdl.IconButton, { ripple: true, raised: true, name: 'add', component: 'span', style: { color: 'black' } })\n\t )\n\t ),\n\t _react2.default.createElement(\n\t 'ul',\n\t { className: 'demo-list-item mdl-list' },\n\t features.map(function (feature, i) {\n\t return _react2.default.createElement(_featureListItemComponent2.default, { key: i,\n\t settings: settings,\n\t metricsLastHour: featureMetrics.lastHour[feature.name],\n\t metricsLastMinute: featureMetrics.lastMinute[feature.name],\n\t feature: feature,\n\t onFeatureClick: onFeatureClick,\n\t onFeatureRemove: onFeatureRemove });\n\t })\n\t ),\n\t _react2.default.createElement('hr', null),\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { to: '/features/create', className: _feature2.default.topListItem0 },\n\t _react2.default.createElement(\n\t _reactMdl.FABButton,\n\t { ripple: true, component: 'span', mini: true },\n\t _react2.default.createElement(_reactMdl.Icon, { name: 'add' })\n\t )\n\t )\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t onFeatureClick: _react.PropTypes.func.isRequired,\n\t onFeatureRemove: _react.PropTypes.func.isRequired,\n\t features: _react.PropTypes.array.isRequired,\n\t featureMetrics: _react.PropTypes.object.isRequired,\n\t fetchFeatureToggles: _react.PropTypes.func.isRequired,\n\t fetchFeatureMetrics: _react.PropTypes.func.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return FeatureListComponent;\n\t}(_react2.default.PureComponent);\n\t\n\tFeatureListComponent.contextTypes = {\n\t router: _react2.default.PropTypes.object\n\t};\n\texports.default = FeatureListComponent;\n\n/***/ },\n/* 186 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _featureActions = __webpack_require__(22);\n\t\n\tvar _featureMetricsActions = __webpack_require__(59);\n\t\n\tvar _actions = __webpack_require__(61);\n\t\n\tvar _listComponent = __webpack_require__(185);\n\t\n\tvar _listComponent2 = _interopRequireDefault(_listComponent);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar mapStateToProps = function mapStateToProps(state) {\n\t var featureMetrics = state.featureMetrics.toJS();\n\t var settings = state.settings.toJS().feature || {};\n\t var features = state.features.toJS();\n\t if (settings.filter) {\n\t features = features.filter(function (feature) {\n\t return feature.name.indexOf(settings.filter) > -1 || feature.description.indexOf(settings.filter) > -1 || feature.strategies.some(function (s) {\n\t return s && s.name && s.name.indexOf(settings.filter) > -1;\n\t });\n\t });\n\t }\n\t\n\t if (settings.sort) {\n\t if (settings.sort === 'enabled') {\n\t features = features.sort(function (a, b) {\n\t return (\n\t // eslint-disable-next-line\n\t a.enabled === b.enabled ? 0 : a.enabled ? -1 : 1\n\t );\n\t });\n\t } else if (settings.sort === 'appName') {\n\t // AppName\n\t // features = features.sort((a, b) => {\n\t // if (a.appName < b.appName) { return -1; }\n\t // if (a.appName > b.appName) { return 1; }\n\t // return 0;\n\t // });\n\t } else if (settings.sort === 'created') {\n\t features = features.sort(function (a, b) {\n\t return new Date(a.createdAt) > new Date(b.createdAt) ? -1 : 1;\n\t });\n\t } else if (settings.sort === 'name') {\n\t features = features.sort(function (a, b) {\n\t if (a.name < b.name) {\n\t return -1;\n\t }\n\t if (a.name > b.name) {\n\t return 1;\n\t }\n\t return 0;\n\t });\n\t } else if (settings.sort === 'strategies') {\n\t features = features.sort(function (a, b) {\n\t return a.strategies.length > b.strategies.length ? -1 : 1;\n\t });\n\t } else if (settings.sort === 'metrics') {\n\t (function () {\n\t var target = settings.showLastHour ? featureMetrics.lastHour : featureMetrics.lastMinute;\n\t\n\t features = features.sort(function (a, b) {\n\t if (!target[a.name]) {\n\t return 1;\n\t }\n\t if (!target[b.name]) {\n\t return -1;\n\t }\n\t if (target[a.name].yes > target[b.name].yes) {\n\t return -1;\n\t }\n\t return 1;\n\t });\n\t })();\n\t }\n\t }\n\t\n\t return {\n\t features: features,\n\t featureMetrics: featureMetrics,\n\t settings: settings\n\t };\n\t};\n\t\n\tvar mapDispatchToProps = {\n\t onFeatureClick: _featureActions.toggleFeature,\n\t onFeatureRemove: _featureActions.removeFeatureToggle,\n\t fetchFeatureToggles: _featureActions.fetchFeatureToggles,\n\t fetchFeatureMetrics: _featureMetricsActions.fetchFeatureMetrics,\n\t updateSetting: (0, _actions.updateSettingForGroup)('feature')\n\t};\n\t\n\tvar FeatureListContainer = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_listComponent2.default);\n\t\n\texports.default = FeatureListContainer;\n\n/***/ },\n/* 187 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _progress = __webpack_require__(100);\n\t\n\tvar _progress2 = _interopRequireDefault(_progress);\n\t\n\tvar _common = __webpack_require__(15);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar MetricComponent = function (_React$Component) {\n\t _inherits(MetricComponent, _React$Component);\n\t\n\t function MetricComponent() {\n\t _classCallCheck(this, MetricComponent);\n\t\n\t return _possibleConstructorReturn(this, (MetricComponent.__proto__ || Object.getPrototypeOf(MetricComponent)).apply(this, arguments));\n\t }\n\t\n\t _createClass(MetricComponent, [{\n\t key: 'componentWillMount',\n\t value: function componentWillMount() {\n\t var _this2 = this;\n\t\n\t this.props.fetchSeenApps();\n\t this.props.fetchFeatureMetrics();\n\t this.timer = setInterval(function () {\n\t _this2.props.fetchFeatureMetrics();\n\t }, 5000);\n\t }\n\t }, {\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t clearInterval(this.timer);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t _props$metrics = _props.metrics,\n\t metrics = _props$metrics === undefined ? {} : _props$metrics,\n\t featureToggle = _props.featureToggle,\n\t toggleFeature = _props.toggleFeature;\n\t var _metrics$lastHour = metrics.lastHour,\n\t lastHour = _metrics$lastHour === undefined ? { yes: 0, no: 0, isFallback: true } : _metrics$lastHour,\n\t _metrics$lastMinute = metrics.lastMinute,\n\t lastMinute = _metrics$lastMinute === undefined ? { yes: 0, no: 0, isFallback: true } : _metrics$lastMinute,\n\t _metrics$seenApps = metrics.seenApps,\n\t seenApps = _metrics$seenApps === undefined ? [] : _metrics$seenApps;\n\t\n\t\n\t var lastHourPercent = 1 * (0, _common.calc)(lastHour.yes, lastHour.yes + lastHour.no, 0);\n\t var lastMinutePercent = 1 * (0, _common.calc)(lastMinute.yes, lastMinute.yes + lastMinute.no, 0);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t _common.SwitchWithLabel,\n\t {\n\t checked: featureToggle.enabled,\n\t onChange: function onChange() {\n\t return toggleFeature(featureToggle);\n\t } },\n\t 'Toggle ',\n\t featureToggle.name\n\t ),\n\t _react2.default.createElement('hr', null),\n\t _react2.default.createElement(\n\t _reactMdl.Grid,\n\t { style: { textAlign: 'center' } },\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { tablet: 4, col: 3, phone: 12 },\n\t lastMinute.isFallback ? _react2.default.createElement(_reactMdl.Icon, { style: { width: '100px', height: '100px', fontSize: '100px', color: '#ccc' },\n\t name: 'report problem', title: 'No metrics avaiable' }) : _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(_progress2.default, { animatePercentageText: true, strokeWidth: 10, percentage: lastMinutePercent, width: '50' })\n\t ),\n\t _react2.default.createElement(\n\t 'p',\n\t null,\n\t _react2.default.createElement(\n\t 'strong',\n\t null,\n\t 'Last minute'\n\t ),\n\t _react2.default.createElement('br', null),\n\t ' Yes ',\n\t lastMinute.yes,\n\t ', No: ',\n\t lastMinute.no\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { col: 3, tablet: 4, phone: 12 },\n\t lastHour.isFallback ? _react2.default.createElement(_reactMdl.Icon, { style: { width: '100px', height: '100px', fontSize: '100px', color: '#ccc' },\n\t name: 'report problem', title: 'No metrics avaiable' }) : _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(_progress2.default, { strokeWidth: 10, percentage: lastHourPercent, width: '50' })\n\t ),\n\t _react2.default.createElement(\n\t 'p',\n\t null,\n\t _react2.default.createElement(\n\t 'strong',\n\t null,\n\t 'Last hour'\n\t ),\n\t _react2.default.createElement('br', null),\n\t ' Yes ',\n\t lastHour.yes,\n\t ', No: ',\n\t lastHour.no\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { col: 6, tablet: 12 },\n\t seenApps.length > 0 ? _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t 'strong',\n\t null,\n\t 'Seen in applications:'\n\t )\n\t ) : _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(_reactMdl.Icon, { style: { width: '100px', height: '100px', fontSize: '100px', color: '#ccc' },\n\t name: 'report problem', title: 'Not used in a app in the last hour' }),\n\t _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t 'small',\n\t null,\n\t _react2.default.createElement(\n\t 'strong',\n\t null,\n\t 'Not used in a app in the last hour.'\n\t ),\n\t 'This might be due to your client implementation is not reporting usage.'\n\t )\n\t )\n\t ),\n\t _react2.default.createElement(_common.AppsLinkList, { apps: seenApps })\n\t )\n\t )\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t metrics: _react.PropTypes.object.isRequired,\n\t featureToggle: _react.PropTypes.object.isRequired,\n\t toggleFeature: _react.PropTypes.func.isRequired,\n\t fetchSeenApps: _react.PropTypes.func.isRequired,\n\t fetchFeatureMetrics: _react.PropTypes.func.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return MetricComponent;\n\t}(_react2.default.Component);\n\t\n\texports.default = MetricComponent;\n\n/***/ },\n/* 188 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _featureMetricsActions = __webpack_require__(59);\n\t\n\tvar _featureActions = __webpack_require__(22);\n\t\n\tvar _metricComponent = __webpack_require__(187);\n\t\n\tvar _metricComponent2 = _interopRequireDefault(_metricComponent);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction getMetricsForToggle(state, toggleName) {\n\t if (!toggleName) {\n\t return;\n\t }\n\t var result = {};\n\t\n\t if (state.featureMetrics.hasIn(['seenApps', toggleName])) {\n\t result.seenApps = state.featureMetrics.getIn(['seenApps', toggleName]);\n\t }\n\t if (state.featureMetrics.hasIn(['lastHour', toggleName])) {\n\t result.lastHour = state.featureMetrics.getIn(['lastHour', toggleName]);\n\t result.lastMinute = state.featureMetrics.getIn(['lastMinute', toggleName]);\n\t }\n\t return result;\n\t}\n\t\n\texports.default = (0, _reactRedux.connect)(function (state, props) {\n\t return {\n\t metrics: getMetricsForToggle(state, props.featureToggle.name)\n\t };\n\t}, {\n\t fetchFeatureMetrics: _featureMetricsActions.fetchFeatureMetrics,\n\t toggleFeature: _featureActions.toggleFeature,\n\t fetchSeenApps: _featureMetricsActions.fetchSeenApps\n\t})(_metricComponent2.default);\n\n/***/ },\n/* 189 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _historyListToggleContainer = __webpack_require__(102);\n\t\n\tvar _historyListToggleContainer2 = _interopRequireDefault(_historyListToggleContainer);\n\t\n\tvar _metricContainer = __webpack_require__(188);\n\t\n\tvar _metricContainer2 = _interopRequireDefault(_metricContainer);\n\t\n\tvar _formEditContainer = __webpack_require__(177);\n\t\n\tvar _formEditContainer2 = _interopRequireDefault(_formEditContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar TABS = {\n\t view: 0,\n\t edit: 1,\n\t history: 2\n\t};\n\t\n\tvar ViewFeatureToggleComponent = function (_React$Component) {\n\t _inherits(ViewFeatureToggleComponent, _React$Component);\n\t\n\t function ViewFeatureToggleComponent(props) {\n\t _classCallCheck(this, ViewFeatureToggleComponent);\n\t\n\t return _possibleConstructorReturn(this, (ViewFeatureToggleComponent.__proto__ || Object.getPrototypeOf(ViewFeatureToggleComponent)).call(this, props));\n\t }\n\t\n\t _createClass(ViewFeatureToggleComponent, [{\n\t key: 'componentWillMount',\n\t value: function componentWillMount() {\n\t if (this.props.features.length === 0) {\n\t this.props.fetchFeatureToggles();\n\t }\n\t }\n\t }, {\n\t key: 'getTabContent',\n\t value: function getTabContent(activeTab) {\n\t var _props = this.props,\n\t featureToggle = _props.featureToggle,\n\t featureToggleName = _props.featureToggleName;\n\t\n\t\n\t if (TABS[activeTab] === TABS.history) {\n\t return _react2.default.createElement(_historyListToggleContainer2.default, { toggleName: featureToggleName });\n\t } else if (TABS[activeTab] === TABS.edit) {\n\t return _react2.default.createElement(_formEditContainer2.default, { featureToggle: featureToggle });\n\t } else {\n\t return _react2.default.createElement(_metricContainer2.default, { featureToggle: featureToggle });\n\t }\n\t }\n\t }, {\n\t key: 'goToTab',\n\t value: function goToTab(tabName, featureToggleName) {\n\t _reactRouter.hashHistory.push('/features/' + tabName + '/' + featureToggleName);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props2 = this.props,\n\t featureToggle = _props2.featureToggle,\n\t features = _props2.features,\n\t activeTab = _props2.activeTab,\n\t featureToggleName = _props2.featureToggleName;\n\t\n\t\n\t if (!featureToggle) {\n\t if (features.length === 0) {\n\t return _react2.default.createElement(_reactMdl.ProgressBar, { indeterminate: true });\n\t }\n\t return _react2.default.createElement(\n\t 'span',\n\t null,\n\t 'Could not find the toggle ',\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { to: { pathname: '/features/create', query: { name: featureToggleName } } },\n\t featureToggleName\n\t )\n\t );\n\t }\n\t\n\t var activeTabId = TABS[this.props.activeTab] ? TABS[this.props.activeTab] : TABS.view;\n\t var tabContent = this.getTabContent(activeTab);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t 'h4',\n\t null,\n\t featureToggle.name,\n\t ' ',\n\t _react2.default.createElement(\n\t 'small',\n\t null,\n\t featureToggle.enabled ? 'is enabled' : 'is disabled'\n\t ),\n\t _react2.default.createElement(\n\t 'small',\n\t { style: { float: 'right', lineHeight: '38px' } },\n\t 'Created ',\n\t new Date(featureToggle.createdAt).toLocaleString('nb-NO')\n\t )\n\t ),\n\t _react2.default.createElement(\n\t 'div',\n\t null,\n\t featureToggle.description\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Tabs,\n\t { activeTab: activeTabId, ripple: true, style: { marginBottom: '10px' } },\n\t _react2.default.createElement(\n\t _reactMdl.Tab,\n\t { onClick: function onClick() {\n\t return _this2.goToTab('view', featureToggleName);\n\t } },\n\t 'Metrics'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Tab,\n\t { onClick: function onClick() {\n\t return _this2.goToTab('edit', featureToggleName);\n\t } },\n\t 'Edit'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Tab,\n\t { onClick: function onClick() {\n\t return _this2.goToTab('history', featureToggleName);\n\t } },\n\t 'History'\n\t )\n\t ),\n\t tabContent\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t activeTab: _react.PropTypes.string.isRequired,\n\t featureToggleName: _react.PropTypes.string.isRequired,\n\t features: _react.PropTypes.array.isRequired,\n\t fetchFeatureToggles: _react.PropTypes.array.isRequired,\n\t featureToggle: _react.PropTypes.object.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return ViewFeatureToggleComponent;\n\t}(_react2.default.Component);\n\t\n\texports.default = ViewFeatureToggleComponent;\n\n/***/ },\n/* 190 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _featureActions = __webpack_require__(22);\n\t\n\tvar _viewComponent = __webpack_require__(189);\n\t\n\tvar _viewComponent2 = _interopRequireDefault(_viewComponent);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = (0, _reactRedux.connect)(function (state, props) {\n\t return {\n\t features: state.features.toJS(),\n\t featureToggle: state.features.toJS().find(function (toggle) {\n\t return toggle.name === props.featureToggleName;\n\t }),\n\t activeTab: props.activeTab\n\t };\n\t}, {\n\t fetchFeatureToggles: _featureActions.fetchFeatureToggles\n\t})(_viewComponent2.default);\n\n/***/ },\n/* 191 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _historyListContainer = __webpack_require__(101);\n\t\n\tvar _historyListContainer2 = _interopRequireDefault(_historyListContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar History = function (_PureComponent) {\n\t _inherits(History, _PureComponent);\n\t\n\t function History() {\n\t _classCallCheck(this, History);\n\t\n\t return _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).apply(this, arguments));\n\t }\n\t\n\t _createClass(History, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t this.props.fetchHistory();\n\t }\n\t }, {\n\t key: 'toggleShowDiff',\n\t value: function toggleShowDiff() {\n\t this.setState({ showData: !this.state.showData });\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var history = this.props.history;\n\t\n\t if (history.length < 0) {\n\t return;\n\t }\n\t\n\t return _react2.default.createElement(_historyListContainer2.default, { history: history, title: 'Last 100 changes' });\n\t }\n\t }]);\n\t\n\t return History;\n\t}(_react.PureComponent);\n\t\n\texports.default = History;\n\n/***/ },\n/* 192 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _historyComponent = __webpack_require__(191);\n\t\n\tvar _historyComponent2 = _interopRequireDefault(_historyComponent);\n\t\n\tvar _historyActions = __webpack_require__(60);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar mapStateToProps = function mapStateToProps(state) {\n\t var history = state.history.get('list').toArray();\n\t return {\n\t history: history\n\t };\n\t};\n\t\n\tvar HistoryListContainer = (0, _reactRedux.connect)(mapStateToProps, { fetchHistory: _historyActions.fetchHistory })(_historyComponent2.default);\n\t\n\texports.default = HistoryListContainer;\n\n/***/ },\n/* 193 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _history = __webpack_require__(64);\n\t\n\tvar _history2 = _interopRequireDefault(_history);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar DIFF_PREFIXES = {\n\t A: ' ',\n\t E: ' ',\n\t D: '-',\n\t N: '+'\n\t};\n\t\n\tvar KLASSES = {\n\t A: _history2.default.blue, // array edited\n\t E: _history2.default.blue, // edited\n\t D: _history2.default.negative, // deleted\n\t N: _history2.default.positive };\n\t\n\tfunction buildItemDiff(diff, key) {\n\t var change = void 0;\n\t if (diff.lhs !== undefined) {\n\t change = _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t 'div',\n\t { className: KLASSES.D },\n\t '- ',\n\t key,\n\t ': ',\n\t JSON.stringify(diff.lhs)\n\t )\n\t );\n\t } else if (diff.rhs !== undefined) {\n\t change = _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t 'div',\n\t { className: KLASSES.N },\n\t '+ ',\n\t key,\n\t ': ',\n\t JSON.stringify(diff.rhs)\n\t )\n\t );\n\t }\n\t\n\t return change;\n\t}\n\t\n\tfunction buildDiff(diff, idx) {\n\t var change = void 0;\n\t var key = diff.path.join('.');\n\t\n\t if (diff.item) {\n\t change = buildItemDiff(diff.item, key);\n\t } else if (diff.lhs !== undefined && diff.rhs !== undefined) {\n\t change = _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t 'div',\n\t { className: KLASSES.D },\n\t '- ',\n\t key,\n\t ': ',\n\t JSON.stringify(diff.lhs)\n\t ),\n\t _react2.default.createElement(\n\t 'div',\n\t { className: KLASSES.N },\n\t '+ ',\n\t key,\n\t ': ',\n\t JSON.stringify(diff.rhs)\n\t )\n\t );\n\t } else {\n\t var spadenClass = KLASSES[diff.kind];\n\t var prefix = DIFF_PREFIXES[diff.kind];\n\t\n\t change = _react2.default.createElement(\n\t 'div',\n\t { className: spadenClass },\n\t prefix,\n\t ' ',\n\t key,\n\t ': ',\n\t JSON.stringify(diff.rhs || diff.item)\n\t );\n\t }\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t { key: idx },\n\t change\n\t );\n\t}\n\t\n\tvar HistoryItem = function (_PureComponent) {\n\t _inherits(HistoryItem, _PureComponent);\n\t\n\t function HistoryItem() {\n\t _classCallCheck(this, HistoryItem);\n\t\n\t return _possibleConstructorReturn(this, (HistoryItem.__proto__ || Object.getPrototypeOf(HistoryItem)).apply(this, arguments));\n\t }\n\t\n\t _createClass(HistoryItem, [{\n\t key: 'render',\n\t value: function render() {\n\t var entry = this.props.entry;\n\t var changes = void 0;\n\t\n\t if (entry.diffs) {\n\t changes = entry.diffs.map(buildDiff);\n\t } else {\n\t // Just show the data if there is no diff yet.\n\t changes = _react2.default.createElement(\n\t 'div',\n\t { className: KLASSES.N },\n\t JSON.stringify(entry.data, null, 2)\n\t );\n\t }\n\t\n\t return _react2.default.createElement(\n\t 'pre',\n\t { style: { maxWidth: '500px', overflowX: 'auto', overflowY: 'hidden', width: 'auto' } },\n\t _react2.default.createElement(\n\t 'code',\n\t { className: 'smalltext man' },\n\t changes.length === 0 ? '(no changes)' : changes\n\t )\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t entry: _react.PropTypes.object\n\t };\n\t }\n\t }]);\n\t\n\t return HistoryItem;\n\t}(_react.PureComponent);\n\t\n\texports.default = HistoryItem;\n\n/***/ },\n/* 194 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _history = __webpack_require__(64);\n\t\n\tvar _history2 = _interopRequireDefault(_history);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar HistoryItem = function (_PureComponent) {\n\t _inherits(HistoryItem, _PureComponent);\n\t\n\t function HistoryItem() {\n\t _classCallCheck(this, HistoryItem);\n\t\n\t return _possibleConstructorReturn(this, (HistoryItem.__proto__ || Object.getPrototypeOf(HistoryItem)).apply(this, arguments));\n\t }\n\t\n\t _createClass(HistoryItem, [{\n\t key: 'render',\n\t value: function render() {\n\t var localEventData = JSON.parse(JSON.stringify(this.props.entry));\n\t delete localEventData.description;\n\t delete localEventData.name;\n\t delete localEventData.diffs;\n\t\n\t var prettyPrinted = JSON.stringify(localEventData, null, 2);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t { className: _history2.default['history-item'] },\n\t _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t 'code',\n\t { className: 'JSON smalltext man' },\n\t prettyPrinted\n\t )\n\t )\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t entry: _react.PropTypes.object\n\t };\n\t }\n\t }]);\n\t\n\t return HistoryItem;\n\t}(_react.PureComponent);\n\t\n\texports.default = HistoryItem;\n\n/***/ },\n/* 195 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _historyItemDiff = __webpack_require__(193);\n\t\n\tvar _historyItemDiff2 = _interopRequireDefault(_historyItemDiff);\n\t\n\tvar _historyItemJson = __webpack_require__(194);\n\t\n\tvar _historyItemJson2 = _interopRequireDefault(_historyItemJson);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _common = __webpack_require__(15);\n\t\n\tvar _history = __webpack_require__(64);\n\t\n\tvar _history2 = _interopRequireDefault(_history);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar HistoryList = function (_Component) {\n\t _inherits(HistoryList, _Component);\n\t\n\t function HistoryList() {\n\t _classCallCheck(this, HistoryList);\n\t\n\t return _possibleConstructorReturn(this, (HistoryList.__proto__ || Object.getPrototypeOf(HistoryList)).apply(this, arguments));\n\t }\n\t\n\t _createClass(HistoryList, [{\n\t key: 'toggleShowDiff',\n\t value: function toggleShowDiff() {\n\t this.props.updateSetting('showData', !this.props.settings.showData);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var showData = this.props.settings.showData;\n\t var history = this.props.history;\n\t\n\t if (!history || history.length < 0) {\n\t return null;\n\t }\n\t\n\t var entries = void 0;\n\t\n\t if (showData) {\n\t entries = history.map(function (entry) {\n\t return _react2.default.createElement(_historyItemJson2.default, { key: 'log' + entry.id, entry: entry });\n\t });\n\t } else {\n\t entries = _react2.default.createElement(\n\t _reactMdl.Table,\n\t {\n\t sortable: true,\n\t rows: history.map(function (entry) {\n\t return Object.assign({\n\t diff: _react2.default.createElement(_historyItemDiff2.default, { entry: entry })\n\t }, entry);\n\t }),\n\t style: { width: '100%' }\n\t },\n\t _react2.default.createElement(\n\t _reactMdl.TableHeader,\n\t { name: 'type' },\n\t 'Type'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.TableHeader,\n\t { name: 'createdBy' },\n\t 'User'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.TableHeader,\n\t { name: 'diff' },\n\t 'Diff'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.TableHeader,\n\t { numeric: true, name: 'createdAt', cellFormatter: function cellFormatter(v) {\n\t return new Date(v).toLocaleString('nb-NO');\n\t } },\n\t 'Time'\n\t )\n\t );\n\t }\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t { className: _history2.default.history },\n\t _react2.default.createElement(_common.HeaderTitle, { title: this.props.title, actions: _react2.default.createElement(\n\t _common.SwitchWithLabel,\n\t { checked: showData, onChange: this.toggleShowDiff.bind(this) },\n\t 'Show full events'\n\t ) }),\n\t entries\n\t );\n\t }\n\t }]);\n\t\n\t return HistoryList;\n\t}(_react.Component);\n\t\n\texports.default = HistoryList;\n\n/***/ },\n/* 196 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _historyListContainer = __webpack_require__(101);\n\t\n\tvar _historyListContainer2 = _interopRequireDefault(_historyListContainer);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar HistoryListToggle = function (_Component) {\n\t _inherits(HistoryListToggle, _Component);\n\t\n\t function HistoryListToggle() {\n\t _classCallCheck(this, HistoryListToggle);\n\t\n\t return _possibleConstructorReturn(this, (HistoryListToggle.__proto__ || Object.getPrototypeOf(HistoryListToggle)).apply(this, arguments));\n\t }\n\t\n\t _createClass(HistoryListToggle, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t this.props.fetchHistoryForToggle(this.props.toggleName);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t if (!this.props.history || this.props.history.length === 0) {\n\t return _react2.default.createElement(\n\t 'span',\n\t null,\n\t 'fetching..'\n\t );\n\t }\n\t var _props = this.props,\n\t history = _props.history,\n\t toggleName = _props.toggleName;\n\t\n\t return _react2.default.createElement(_historyListContainer2.default, {\n\t history: history,\n\t title: _react2.default.createElement(\n\t 'span',\n\t null,\n\t 'Showing history for toggle: ',\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { to: '/features/edit/' + toggleName },\n\t _react2.default.createElement(\n\t 'strong',\n\t null,\n\t toggleName\n\t )\n\t )\n\t ) });\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t toggleName: _react.PropTypes.string.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return HistoryListToggle;\n\t}(_react.Component);\n\t\n\texports.default = HistoryListToggle;\n\n/***/ },\n/* 197 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _inputHelpers = __webpack_require__(46);\n\t\n\tvar _actions = __webpack_require__(27);\n\t\n\tvar _addStrategy = __webpack_require__(103);\n\t\n\tvar _addStrategy2 = _interopRequireDefault(_addStrategy);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar ID = 'add-strategy';\n\t\n\tvar prepare = function prepare(methods, dispatch) {\n\t methods.onSubmit = function (input) {\n\t return function (e) {\n\t e.preventDefault();\n\t // clean\n\t var parameters = (input.parameters || []).filter(function (name) {\n\t return !!name;\n\t }).map(function (_ref) {\n\t var name = _ref.name,\n\t _ref$type = _ref.type,\n\t type = _ref$type === undefined ? 'string' : _ref$type,\n\t _ref$description = _ref.description,\n\t description = _ref$description === undefined ? '' : _ref$description,\n\t _ref$required = _ref.required,\n\t required = _ref$required === undefined ? false : _ref$required;\n\t return {\n\t name: name,\n\t type: type,\n\t description: description,\n\t required: required\n\t };\n\t });\n\t\n\t (0, _actions.createStrategy)({\n\t name: input.name,\n\t description: input.description,\n\t parameters: parameters\n\t })(dispatch).then(function () {\n\t return methods.clear();\n\t })\n\t // somewhat quickfix / hacky to go back..\n\t .then(function () {\n\t return window.history.back();\n\t });\n\t };\n\t };\n\t\n\t methods.onCancel = function (e) {\n\t e.preventDefault();\n\t methods.clear();\n\t // somewhat quickfix / hacky to go back..\n\t window.history.back();\n\t };\n\t\n\t return methods;\n\t};\n\t\n\tvar actions = (0, _inputHelpers.createActions)({\n\t id: ID,\n\t prepare: prepare\n\t});\n\t\n\texports.default = (0, _reactRedux.connect)((0, _inputHelpers.createMapper)({\n\t id: ID,\n\t getDefault: function getDefault() {\n\t var name = void 0;\n\t try {\n\t var _document$location$ha = document.location.hash.match(/name=([a-z0-9-_]+)/i);\n\t\n\t var _document$location$ha2 = _slicedToArray(_document$location$ha, 2);\n\t\n\t name = _document$location$ha2[1];\n\t } catch (e) {}\n\t return { name: name };\n\t }\n\t}), actions)(_addStrategy2.default);\n\n/***/ },\n/* 198 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _inputHelpers = __webpack_require__(46);\n\t\n\tvar _actions = __webpack_require__(27);\n\t\n\tvar _addStrategy = __webpack_require__(103);\n\t\n\tvar _addStrategy2 = _interopRequireDefault(_addStrategy);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar ID = 'edit-strategy';\n\t\n\tfunction getId(props) {\n\t return [ID, props.strategy.name];\n\t}\n\t\n\t// TODO: need to scope to the active strategy\n\t// best is to emulate the \"input-storage\"?\n\tvar mapStateToProps = (0, _inputHelpers.createMapper)({\n\t id: getId,\n\t getDefault: function getDefault(state, ownProps) {\n\t return ownProps.strategy;\n\t },\n\t prepare: function prepare(props) {\n\t props.editmode = true;\n\t return props;\n\t }\n\t});\n\t\n\tvar prepare = function prepare(methods, dispatch) {\n\t methods.onSubmit = function (input) {\n\t return function (e) {\n\t e.preventDefault();\n\t // clean\n\t var parameters = (input.parameters || []).filter(function (name) {\n\t return !!name;\n\t }).map(function (_ref) {\n\t var name = _ref.name,\n\t _ref$type = _ref.type,\n\t type = _ref$type === undefined ? 'string' : _ref$type,\n\t _ref$description = _ref.description,\n\t description = _ref$description === undefined ? '' : _ref$description,\n\t _ref$required = _ref.required,\n\t required = _ref$required === undefined ? false : _ref$required;\n\t return {\n\t name: name,\n\t type: type,\n\t description: description,\n\t required: required\n\t };\n\t });\n\t\n\t (0, _actions.updateStrategy)({\n\t name: input.name,\n\t description: input.description,\n\t parameters: parameters\n\t })(dispatch).then(function () {\n\t return methods.clear();\n\t }).then(function () {\n\t return _reactRouter.hashHistory.push('/strategies/view/' + input.name);\n\t });\n\t };\n\t };\n\t\n\t methods.onCancel = function (e) {\n\t e.preventDefault();\n\t methods.clear();\n\t // somewhat quickfix / hacky to go back..\n\t window.history.back();\n\t };\n\t\n\t return methods;\n\t};\n\t\n\tvar actions = (0, _inputHelpers.createActions)({\n\t id: getId,\n\t prepare: prepare\n\t});\n\t\n\texports.default = (0, _reactRedux.connect)(mapStateToProps, actions)(_addStrategy2.default);\n\n/***/ },\n/* 199 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _common = __webpack_require__(15);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar StrategiesListComponent = function (_Component) {\n\t _inherits(StrategiesListComponent, _Component);\n\t\n\t function StrategiesListComponent() {\n\t _classCallCheck(this, StrategiesListComponent);\n\t\n\t return _possibleConstructorReturn(this, (StrategiesListComponent.__proto__ || Object.getPrototypeOf(StrategiesListComponent)).apply(this, arguments));\n\t }\n\t\n\t _createClass(StrategiesListComponent, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t this.props.fetchStrategies();\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props,\n\t strategies = _props.strategies,\n\t removeStrategy = _props.removeStrategy;\n\t\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(_common.HeaderTitle, { title: 'Strategies',\n\t actions: _react2.default.createElement(_reactMdl.IconButton, { raised: true,\n\t name: 'add',\n\t onClick: function onClick() {\n\t return _this2.context.router.push('/strategies/create');\n\t },\n\t title: 'Add new strategy' }) }),\n\t _react2.default.createElement(\n\t _reactMdl.List,\n\t null,\n\t strategies.length > 0 ? strategies.map(function (strategy, i) {\n\t return _react2.default.createElement(\n\t _reactMdl.ListItem,\n\t { key: i, twoLine: true },\n\t _react2.default.createElement(\n\t _reactMdl.ListItemContent,\n\t { icon: 'extension', subtitle: strategy.description },\n\t _react2.default.createElement(\n\t _reactRouter.Link,\n\t { to: '/strategies/view/' + strategy.name },\n\t _react2.default.createElement(\n\t 'strong',\n\t null,\n\t strategy.name\n\t )\n\t )\n\t ),\n\t _react2.default.createElement(_reactMdl.IconButton, { name: 'delete', onClick: function onClick() {\n\t return removeStrategy(strategy);\n\t } })\n\t );\n\t }) : _react2.default.createElement(\n\t _reactMdl.ListItem,\n\t null,\n\t 'No entries'\n\t )\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return StrategiesListComponent;\n\t}(_react.Component);\n\t\n\tStrategiesListComponent.contextTypes = {\n\t router: _react2.default.PropTypes.object\n\t};\n\texports.default = StrategiesListComponent;\n\n/***/ },\n/* 200 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _listComponent = __webpack_require__(199);\n\t\n\tvar _listComponent2 = _interopRequireDefault(_listComponent);\n\t\n\tvar _actions = __webpack_require__(27);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar mapStateToProps = function mapStateToProps(state) {\n\t var list = state.strategies.get('list').toArray();\n\t\n\t return {\n\t strategies: list\n\t };\n\t};\n\t\n\tvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n\t return {\n\t removeStrategy: function removeStrategy(strategy) {\n\t if (window.confirm('Are you sure you want to remove this strategy?')) {\n\t // eslint-disable-line no-alert\n\t (0, _actions.removeStrategy)(strategy)(dispatch);\n\t }\n\t },\n\t fetchStrategies: function fetchStrategies() {\n\t return (0, _actions.fetchStrategies)()(dispatch);\n\t }\n\t };\n\t};\n\t\n\tvar StrategiesListContainer = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_listComponent2.default);\n\t\n\texports.default = StrategiesListContainer;\n\n/***/ },\n/* 201 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _common = __webpack_require__(15);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar ShowStrategyComponent = function (_PureComponent) {\n\t _inherits(ShowStrategyComponent, _PureComponent);\n\t\n\t function ShowStrategyComponent() {\n\t _classCallCheck(this, ShowStrategyComponent);\n\t\n\t return _possibleConstructorReturn(this, (ShowStrategyComponent.__proto__ || Object.getPrototypeOf(ShowStrategyComponent)).apply(this, arguments));\n\t }\n\t\n\t _createClass(ShowStrategyComponent, [{\n\t key: 'renderParameters',\n\t value: function renderParameters(params) {\n\t if (params) {\n\t return params.map(function (_ref, i) {\n\t var name = _ref.name,\n\t type = _ref.type,\n\t description = _ref.description,\n\t required = _ref.required;\n\t return _react2.default.createElement(\n\t _reactMdl.ListItem,\n\t { twoLine: true, key: name + '-' + i, title: required ? 'Required' : '' },\n\t _react2.default.createElement(\n\t _reactMdl.ListItemContent,\n\t { avatar: required ? 'add' : ' ', subtitle: description },\n\t name,\n\t ' ',\n\t _react2.default.createElement(\n\t 'small',\n\t null,\n\t '(',\n\t type,\n\t ')'\n\t )\n\t )\n\t );\n\t });\n\t } else {\n\t return _react2.default.createElement(\n\t _reactMdl.ListItem,\n\t null,\n\t '(no params)'\n\t );\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t strategy = _props.strategy,\n\t applications = _props.applications,\n\t toggles = _props.toggles;\n\t var _strategy$parameters = strategy.parameters,\n\t parameters = _strategy$parameters === undefined ? [] : _strategy$parameters;\n\t\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t _reactMdl.Grid,\n\t null,\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { col: 12 },\n\t _react2.default.createElement(\n\t 'h6',\n\t null,\n\t 'Parameters'\n\t ),\n\t _react2.default.createElement('hr', null),\n\t _react2.default.createElement(\n\t _reactMdl.List,\n\t null,\n\t this.renderParameters(parameters)\n\t )\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { col: 6, tablet: 12 },\n\t _react2.default.createElement(\n\t 'h6',\n\t null,\n\t 'Applications using this strategy'\n\t ),\n\t _react2.default.createElement('hr', null),\n\t _react2.default.createElement(_common.AppsLinkList, { apps: applications })\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Cell,\n\t { col: 6, tablet: 12 },\n\t _react2.default.createElement(\n\t 'h6',\n\t null,\n\t 'Toggles using this strategy'\n\t ),\n\t _react2.default.createElement('hr', null),\n\t _react2.default.createElement(_common.TogglesLinkList, { toggles: toggles })\n\t )\n\t )\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t toggles: _react.PropTypes.array,\n\t applications: _react.PropTypes.array,\n\t strategy: _react.PropTypes.object.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return ShowStrategyComponent;\n\t}(_react.PureComponent);\n\t\n\texports.default = ShowStrategyComponent;\n\n/***/ },\n/* 202 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _showStrategyComponent = __webpack_require__(201);\n\t\n\tvar _showStrategyComponent2 = _interopRequireDefault(_showStrategyComponent);\n\t\n\tvar _editContainer = __webpack_require__(198);\n\t\n\tvar _editContainer2 = _interopRequireDefault(_editContainer);\n\t\n\tvar _common = __webpack_require__(15);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar TABS = {\n\t view: 0,\n\t edit: 1\n\t};\n\t\n\tvar StrategyDetails = function (_Component) {\n\t _inherits(StrategyDetails, _Component);\n\t\n\t function StrategyDetails() {\n\t _classCallCheck(this, StrategyDetails);\n\t\n\t return _possibleConstructorReturn(this, (StrategyDetails.__proto__ || Object.getPrototypeOf(StrategyDetails)).apply(this, arguments));\n\t }\n\t\n\t _createClass(StrategyDetails, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t if (!this.props.strategy) {\n\t this.props.fetchStrategies();\n\t };\n\t if (!this.props.applications || this.props.applications.length === 0) {\n\t this.props.fetchApplications();\n\t }\n\t if (!this.props.toggles || this.props.toggles.length === 0) {\n\t this.props.fetchFeatureToggles();\n\t }\n\t }\n\t }, {\n\t key: 'getTabContent',\n\t value: function getTabContent(activeTabId) {\n\t if (activeTabId === TABS.edit) {\n\t return _react2.default.createElement(_editContainer2.default, { strategy: this.props.strategy });\n\t } else {\n\t return _react2.default.createElement(_showStrategyComponent2.default, {\n\t strategy: this.props.strategy,\n\t toggles: this.props.toggles,\n\t applications: this.props.applications });\n\t }\n\t }\n\t }, {\n\t key: 'goToTab',\n\t value: function goToTab(tabName) {\n\t _reactRouter.hashHistory.push('/strategies/' + tabName + '/' + this.props.strategyName);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var activeTabId = TABS[this.props.activeTab] ? TABS[this.props.activeTab] : TABS.view;\n\t var strategy = this.props.strategy;\n\t if (!strategy) {\n\t return _react2.default.createElement(_reactMdl.ProgressBar, { indeterminate: true });\n\t }\n\t\n\t var tabContent = this.getTabContent(activeTabId);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(_common.HeaderTitle, { title: strategy.name, subtitle: strategy.description }),\n\t _react2.default.createElement(\n\t _reactMdl.Tabs,\n\t { activeTab: activeTabId, ripple: true },\n\t _react2.default.createElement(\n\t _reactMdl.Tab,\n\t { onClick: function onClick() {\n\t return _this2.goToTab('view');\n\t } },\n\t 'Details'\n\t ),\n\t _react2.default.createElement(\n\t _reactMdl.Tab,\n\t { onClick: function onClick() {\n\t return _this2.goToTab('edit');\n\t } },\n\t 'Edit'\n\t )\n\t ),\n\t _react2.default.createElement(\n\t 'section',\n\t null,\n\t _react2.default.createElement(\n\t 'div',\n\t { className: 'content' },\n\t tabContent\n\t )\n\t )\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t strategyName: _react.PropTypes.string.isRequired,\n\t toggles: _react.PropTypes.array,\n\t applications: _react.PropTypes.array,\n\t activeTab: _react.PropTypes.string.isRequired,\n\t strategy: _react.PropTypes.object.isRequired,\n\t fetchStrategies: _react.PropTypes.func.isRequired,\n\t fetchApplications: _react.PropTypes.func.isRequired,\n\t fetchFeatureToggles: _react.PropTypes.func.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return StrategyDetails;\n\t}(_react.Component);\n\t\n\texports.default = StrategyDetails;\n\n/***/ },\n/* 203 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _strategyDetailsComponent = __webpack_require__(202);\n\t\n\tvar _strategyDetailsComponent2 = _interopRequireDefault(_strategyDetailsComponent);\n\t\n\tvar _actions = __webpack_require__(27);\n\t\n\tvar _actions2 = __webpack_require__(47);\n\t\n\tvar _featureActions = __webpack_require__(22);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar mapStateToProps = function mapStateToProps(state, props) {\n\t var strategy = state.strategies.get('list').find(function (n) {\n\t return n.name === props.strategyName;\n\t });\n\t var applications = state.applications.get('list').filter(function (app) {\n\t return app.strategies.includes(props.strategyName);\n\t });\n\t var toggles = state.features.filter(function (toggle) {\n\t return toggle.get('strategies').findIndex(function (s) {\n\t return s.name === props.strategyName;\n\t }) > -1;\n\t });\n\t\n\t return {\n\t strategy: strategy,\n\t strategyName: props.strategyName,\n\t applications: applications && applications.toJS(),\n\t toggles: toggles && toggles.toJS(),\n\t activeTab: props.activeTab\n\t };\n\t};\n\t\n\tvar Constainer = (0, _reactRedux.connect)(mapStateToProps, {\n\t fetchStrategies: _actions.fetchStrategies,\n\t fetchApplications: _actions2.fetchAll,\n\t fetchFeatureToggles: _featureActions.fetchFeatureToggles\n\t})(_strategyDetailsComponent2.default);\n\t\n\texports.default = Constainer;\n\n/***/ },\n/* 204 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar ShowUserComponent = function (_React$Component) {\n\t _inherits(ShowUserComponent, _React$Component);\n\t\n\t function ShowUserComponent() {\n\t var _ref;\n\t\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, ShowUserComponent);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ShowUserComponent.__proto__ || Object.getPrototypeOf(ShowUserComponent)).call.apply(_ref, [this].concat(args))), _this), _this.openEdit = function (evt) {\n\t evt.preventDefault();\n\t _this.props.openEdit();\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t _createClass(ShowUserComponent, [{\n\t key: \"render\",\n\t value: function render() {\n\t return _react2.default.createElement(\n\t \"a\",\n\t { className: \"mdl-navigation__link\", href: \"#edit-user\", onClick: this.openEdit, style: {} },\n\t \"Username:\\xA0\",\n\t _react2.default.createElement(\n\t \"strong\",\n\t null,\n\t this.props.user.userName || 'Unknown'\n\t )\n\t );\n\t }\n\t }], [{\n\t key: \"propTypes\",\n\t value: function propTypes() {\n\t return {\n\t user: _react.PropTypes.object.isRequired,\n\t openEdit: _react.PropTypes.func.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return ShowUserComponent;\n\t}(_react2.default.Component);\n\t\n\texports.default = ShowUserComponent;\n\n/***/ },\n/* 205 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _showUserComponent = __webpack_require__(204);\n\t\n\tvar _showUserComponent2 = _interopRequireDefault(_showUserComponent);\n\t\n\tvar _actions = __webpack_require__(62);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar mapDispatchToProps = {\n\t openEdit: _actions.openEdit\n\t};\n\t\n\tvar mapStateToProps = function mapStateToProps(state) {\n\t return {\n\t user: state.user.toJS()\n\t };\n\t};\n\t\n\texports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_showUserComponent2.default);\n\n/***/ },\n/* 206 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactMdl = __webpack_require__(7);\n\t\n\tvar _reactModal = __webpack_require__(390);\n\t\n\tvar _reactModal2 = _interopRequireDefault(_reactModal);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar customStyles = {\n\t overlay: {\n\t position: 'fixed',\n\t top: 0,\n\t left: 0,\n\t right: 0,\n\t bottom: 0,\n\t backgroundColor: 'rgba(0, 0, 0, 0.75)',\n\t zIndex: 99999\n\t },\n\t content: {\n\t top: '50%',\n\t left: '50%',\n\t right: 'auto',\n\t bottom: 'auto',\n\t marginRight: '-50%',\n\t transform: 'translate(-50%, -50%)',\n\t backgroundColor: '#FFFFFF'\n\t }\n\t};\n\t\n\tvar EditUserComponent = function (_React$Component) {\n\t _inherits(EditUserComponent, _React$Component);\n\t\n\t function EditUserComponent() {\n\t var _ref;\n\t\n\t var _temp, _this, _ret;\n\t\n\t _classCallCheck(this, EditUserComponent);\n\t\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = EditUserComponent.__proto__ || Object.getPrototypeOf(EditUserComponent)).call.apply(_ref, [this].concat(args))), _this), _this.handleSubmit = function (evt) {\n\t evt.preventDefault();\n\t _this.props.save();\n\t }, _temp), _possibleConstructorReturn(_this, _ret);\n\t }\n\t\n\t _createClass(EditUserComponent, [{\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t _reactModal2.default,\n\t {\n\t isOpen: this.props.user.showDialog,\n\t contentLabel: 'test',\n\t style: customStyles },\n\t _react2.default.createElement(\n\t 'h2',\n\t null,\n\t 'Action required'\n\t ),\n\t _react2.default.createElement(\n\t 'div',\n\t null,\n\t _react2.default.createElement(\n\t 'p',\n\t null,\n\t 'You hav to specify a username to use Unleash. This will allow us to track changes.'\n\t ),\n\t _react2.default.createElement(\n\t 'form',\n\t { onSubmit: this.handleSubmit },\n\t _react2.default.createElement(_reactMdl.Textfield, {\n\t label: 'Username',\n\t name: 'username',\n\t required: true,\n\t value: this.props.user.userName,\n\t onChange: function onChange(e) {\n\t return _this2.props.updateUserName(e.target.value);\n\t }\n\t }),\n\t _react2.default.createElement('br', null),\n\t _react2.default.createElement(\n\t _reactMdl.Button,\n\t { raised: true, accent: true, onClick: this.props.save },\n\t 'Save'\n\t )\n\t )\n\t )\n\t )\n\t );\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t user: _react.PropTypes.object.isRequired,\n\t updateUserName: _react.PropTypes.func.isRequired,\n\t save: _react.PropTypes.func.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return EditUserComponent;\n\t}(_react2.default.Component);\n\t\n\texports.default = EditUserComponent;\n\n/***/ },\n/* 207 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _userComponent = __webpack_require__(206);\n\t\n\tvar _userComponent2 = _interopRequireDefault(_userComponent);\n\t\n\tvar _actions = __webpack_require__(62);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar mapDispatchToProps = {\n\t updateUserName: _actions.updateUserName,\n\t save: _actions.save\n\t};\n\t\n\tvar mapStateToProps = function mapStateToProps(state) {\n\t return {\n\t user: state.user.toJS()\n\t };\n\t};\n\t\n\texports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(_userComponent2.default);\n\n/***/ },\n/* 208 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _helper = __webpack_require__(26);\n\t\n\tvar URI = '/api/archive';\n\t\n\tfunction fetchAll() {\n\t return fetch(URI + '/features').then(_helper.throwIfNotSuccess).then(function (response) {\n\t return response.json();\n\t });\n\t}\n\t\n\tfunction revive(featureName) {\n\t return fetch(URI + '/revive/' + featureName, {\n\t method: 'POST',\n\t headers: _helper.headers,\n\t credentials: 'include'\n\t }).then(_helper.throwIfNotSuccess);\n\t}\n\t\n\tmodule.exports = {\n\t fetchAll: fetchAll,\n\t revive: revive\n\t};\n\n/***/ },\n/* 209 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _helper = __webpack_require__(26);\n\t\n\tvar URI = '/api/client/instances';\n\t\n\tfunction fetchAll() {\n\t return fetch(URI, { headers: _helper.headers }).then(_helper.throwIfNotSuccess).then(function (response) {\n\t return response.json();\n\t });\n\t}\n\t\n\tmodule.exports = {\n\t fetchAll: fetchAll\n\t};\n\n/***/ },\n/* 210 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _helper = __webpack_require__(26);\n\t\n\tvar URI = '/api/features';\n\tvar URI_VALIDATE = '/api/features-validate';\n\t\n\tfunction validateToggle(featureToggle) {\n\t return new Promise(function (resolve, reject) {\n\t if (!featureToggle.strategies || featureToggle.strategies.length === 0) {\n\t reject(new Error('You must add at least one activation strategy'));\n\t } else {\n\t resolve(featureToggle);\n\t }\n\t });\n\t}\n\t\n\tfunction fetchAll() {\n\t return fetch(URI).then(_helper.throwIfNotSuccess).then(function (response) {\n\t return response.json();\n\t });\n\t}\n\t\n\tfunction create(featureToggle) {\n\t return validateToggle(featureToggle).then(function () {\n\t return fetch(URI, {\n\t method: 'POST',\n\t headers: _helper.headers,\n\t credentials: 'include',\n\t body: JSON.stringify(featureToggle)\n\t });\n\t }).then(_helper.throwIfNotSuccess);\n\t}\n\t\n\tfunction validate(featureToggle) {\n\t return fetch(URI_VALIDATE, {\n\t method: 'POST',\n\t headers: _helper.headers,\n\t credentials: 'include',\n\t body: JSON.stringify(featureToggle)\n\t }).then(_helper.throwIfNotSuccess);\n\t}\n\t\n\tfunction update(featureToggle) {\n\t return validateToggle(featureToggle).then(function () {\n\t return fetch(URI + '/' + featureToggle.name, {\n\t method: 'PUT',\n\t headers: _helper.headers,\n\t credentials: 'include',\n\t body: JSON.stringify(featureToggle)\n\t });\n\t }).then(_helper.throwIfNotSuccess);\n\t}\n\t\n\tfunction remove(featureToggleName) {\n\t return fetch(URI + '/' + featureToggleName, {\n\t method: 'DELETE',\n\t credentials: 'include'\n\t }).then(_helper.throwIfNotSuccess);\n\t}\n\t\n\tmodule.exports = {\n\t fetchAll: fetchAll,\n\t create: create,\n\t validate: validate,\n\t update: update,\n\t remove: remove\n\t};\n\n/***/ },\n/* 211 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _require = __webpack_require__(26),\n\t throwIfNotSuccess = _require.throwIfNotSuccess;\n\t\n\tvar URI = '/api/client/metrics/feature-toggles';\n\t\n\tfunction fetchFeatureMetrics() {\n\t return fetch(URI).then(throwIfNotSuccess).then(function (response) {\n\t return response.json();\n\t });\n\t}\n\t\n\tvar seenURI = '/api/client/seen-apps';\n\t\n\tfunction fetchSeenApps() {\n\t return fetch(seenURI).then(throwIfNotSuccess).then(function (response) {\n\t return response.json();\n\t });\n\t}\n\t\n\tmodule.exports = {\n\t fetchFeatureMetrics: fetchFeatureMetrics,\n\t fetchSeenApps: fetchSeenApps\n\t};\n\n/***/ },\n/* 212 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _helper = __webpack_require__(26);\n\t\n\tvar URI = '/api/events';\n\t\n\tfunction fetchAll() {\n\t return fetch(URI).then(_helper.throwIfNotSuccess).then(function (response) {\n\t return response.json();\n\t });\n\t}\n\t\n\tfunction fetchHistoryForToggle(toggleName) {\n\t return fetch(URI + '/' + toggleName).then(_helper.throwIfNotSuccess).then(function (response) {\n\t return response.json();\n\t });\n\t}\n\t\n\tmodule.exports = {\n\t fetchAll: fetchAll,\n\t fetchHistoryForToggle: fetchHistoryForToggle\n\t};\n\n/***/ },\n/* 213 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _helper = __webpack_require__(26);\n\t\n\tvar URI = '/api/strategies';\n\t\n\tfunction fetchAll() {\n\t return fetch(URI).then(_helper.throwIfNotSuccess).then(function (response) {\n\t return response.json();\n\t });\n\t}\n\t\n\tfunction create(strategy) {\n\t return fetch(URI, {\n\t method: 'POST',\n\t headers: _helper.headers,\n\t body: JSON.stringify(strategy),\n\t credentials: 'include'\n\t }).then(_helper.throwIfNotSuccess);\n\t}\n\t\n\tfunction update(strategy) {\n\t return fetch(URI + '/' + strategy.name, {\n\t method: 'put',\n\t headers: _helper.headers,\n\t body: JSON.stringify(strategy),\n\t credentials: 'include'\n\t }).then(_helper.throwIfNotSuccess);\n\t}\n\t\n\tfunction remove(strategy) {\n\t return fetch(URI + '/' + strategy.name, {\n\t method: 'DELETE',\n\t headers: _helper.headers,\n\t credentials: 'include'\n\t }).then(_helper.throwIfNotSuccess);\n\t}\n\t\n\tmodule.exports = {\n\t fetchAll: fetchAll,\n\t create: create,\n\t update: update,\n\t remove: remove\n\t};\n\n/***/ },\n/* 214 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t__webpack_require__(165);\n\t\n\t__webpack_require__(242);\n\t\n\t__webpack_require__(339);\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(13);\n\t\n\tvar _reactDom2 = _interopRequireDefault(_reactDom);\n\t\n\tvar _reactRouter = __webpack_require__(11);\n\t\n\tvar _reactRedux = __webpack_require__(9);\n\t\n\tvar _reduxThunk = __webpack_require__(422);\n\t\n\tvar _reduxThunk2 = _interopRequireDefault(_reduxThunk);\n\t\n\tvar _redux = __webpack_require__(98);\n\t\n\tvar _store = __webpack_require__(234);\n\t\n\tvar _store2 = _interopRequireDefault(_store);\n\t\n\tvar _app = __webpack_require__(166);\n\t\n\tvar _app2 = _interopRequireDefault(_app);\n\t\n\tvar _features = __webpack_require__(219);\n\t\n\tvar _features2 = _interopRequireDefault(_features);\n\t\n\tvar _create = __webpack_require__(218);\n\t\n\tvar _create2 = _interopRequireDefault(_create);\n\t\n\tvar _show = __webpack_require__(220);\n\t\n\tvar _show2 = _interopRequireDefault(_show);\n\t\n\tvar _strategies = __webpack_require__(224);\n\t\n\tvar _strategies2 = _interopRequireDefault(_strategies);\n\t\n\tvar _show3 = __webpack_require__(225);\n\t\n\tvar _show4 = _interopRequireDefault(_show3);\n\t\n\tvar _create3 = __webpack_require__(223);\n\t\n\tvar _create4 = _interopRequireDefault(_create3);\n\t\n\tvar _history = __webpack_require__(221);\n\t\n\tvar _history2 = _interopRequireDefault(_history);\n\t\n\tvar _toggle = __webpack_require__(222);\n\t\n\tvar _toggle2 = _interopRequireDefault(_toggle);\n\t\n\tvar _archive = __webpack_require__(217);\n\t\n\tvar _archive2 = _interopRequireDefault(_archive);\n\t\n\tvar _applications = __webpack_require__(215);\n\t\n\tvar _applications2 = _interopRequireDefault(_applications);\n\t\n\tvar _view = __webpack_require__(216);\n\t\n\tvar _view2 = _interopRequireDefault(_view);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar unleashStore = (0, _redux.createStore)(_store2.default, (0, _redux.applyMiddleware)(_reduxThunk2.default));\n\t\n\t// \"pageTitle\" and \"link\" attributes are for internal usage only\n\t\n\t_reactDom2.default.render(_react2.default.createElement(\n\t _reactRedux.Provider,\n\t { store: unleashStore },\n\t _react2.default.createElement(\n\t _reactRouter.Router,\n\t { history: _reactRouter.hashHistory },\n\t _react2.default.createElement(\n\t _reactRouter.Route,\n\t { path: '/', component: _app2.default },\n\t _react2.default.createElement(_reactRouter.IndexRedirect, { to: '/features' }),\n\t _react2.default.createElement(\n\t _reactRouter.Route,\n\t { pageTitle: 'Features', link: '/features' },\n\t _react2.default.createElement(_reactRouter.Route, { pageTitle: 'Features', path: '/features', component: _features2.default }),\n\t _react2.default.createElement(_reactRouter.Route, { pageTitle: 'New', path: '/features/create', component: _create2.default }),\n\t _react2.default.createElement(_reactRouter.Route, { pageTitle: ':name', path: '/features/:activeTab/:name', component: _show2.default })\n\t ),\n\t _react2.default.createElement(\n\t _reactRouter.Route,\n\t { pageTitle: 'Strategies', link: '/strategies' },\n\t _react2.default.createElement(_reactRouter.Route, { pageTitle: 'Strategies', path: '/strategies', component: _strategies2.default }),\n\t _react2.default.createElement(_reactRouter.Route, { pageTitle: 'New', path: '/strategies/create', component: _create4.default }),\n\t _react2.default.createElement(_reactRouter.Route, { pageTitle: ':strategyName', path: '/strategies/:activeTab/:strategyName', component: _show4.default })\n\t ),\n\t _react2.default.createElement(\n\t _reactRouter.Route,\n\t { pageTitle: 'History', link: '/history' },\n\t _react2.default.createElement(_reactRouter.Route, { pageTitle: 'History', path: '/history', component: _history2.default }),\n\t _react2.default.createElement(_reactRouter.Route, { pageTitle: ':toggleName', path: '/history/:toggleName', component: _toggle2.default })\n\t ),\n\t _react2.default.createElement(_reactRouter.Route, { pageTitle: 'Archive', path: '/archive', component: _archive2.default }),\n\t _react2.default.createElement(\n\t _reactRouter.Route,\n\t { pageTitle: 'Applications', link: '/applications' },\n\t _react2.default.createElement(_reactRouter.Route, { pageTitle: 'Applications', path: '/applications', component: _applications2.default }),\n\t _react2.default.createElement(_reactRouter.Route, { pageTitle: ':name', path: '/applications/:name', component: _view2.default })\n\t )\n\t )\n\t )\n\t), document.getElementById('app'));\n\n/***/ },\n/* 215 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _applicationListContainer = __webpack_require__(170);\n\t\n\tvar _applicationListContainer2 = _interopRequireDefault(_applicationListContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar render = function render() {\n\t return _react2.default.createElement(_applicationListContainer2.default, null);\n\t};\n\t\n\texports.default = render;\n\n/***/ },\n/* 216 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _applicationEditContainer = __webpack_require__(168);\n\t\n\tvar _applicationEditContainer2 = _interopRequireDefault(_applicationEditContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar render = function render(_ref) {\n\t var params = _ref.params;\n\t return _react2.default.createElement(_applicationEditContainer2.default, { appName: params.name });\n\t};\n\t\n\trender.propTypes = {\n\t params: _react.PropTypes.object.isRequired\n\t};\n\t\n\texports.default = render;\n\n/***/ },\n/* 217 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _archiveContainer = __webpack_require__(171);\n\t\n\tvar _archiveContainer2 = _interopRequireDefault(_archiveContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar render = function render() {\n\t return _react2.default.createElement(_archiveContainer2.default, null);\n\t};\n\t\n\texports.default = render;\n\n/***/ },\n/* 218 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _formAddContainer = __webpack_require__(176);\n\t\n\tvar _formAddContainer2 = _interopRequireDefault(_formAddContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar render = function render() {\n\t return _react2.default.createElement(_formAddContainer2.default, { title: 'Create feature toggle' });\n\t};\n\t\n\texports.default = render;\n\n/***/ },\n/* 219 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _listContainer = __webpack_require__(186);\n\t\n\tvar _listContainer2 = _interopRequireDefault(_listContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar render = function render() {\n\t return _react2.default.createElement(_listContainer2.default, null);\n\t};\n\t\n\texports.default = render;\n\n/***/ },\n/* 220 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _viewContainer = __webpack_require__(190);\n\t\n\tvar _viewContainer2 = _interopRequireDefault(_viewContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar Features = function (_PureComponent) {\n\t _inherits(Features, _PureComponent);\n\t\n\t function Features() {\n\t _classCallCheck(this, Features);\n\t\n\t return _possibleConstructorReturn(this, (Features.__proto__ || Object.getPrototypeOf(Features)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Features, [{\n\t key: 'render',\n\t value: function render() {\n\t var params = this.props.params;\n\t\n\t return _react2.default.createElement(_viewContainer2.default, { featureToggleName: params.name, activeTab: params.activeTab });\n\t }\n\t }], [{\n\t key: 'propTypes',\n\t value: function propTypes() {\n\t return {\n\t params: _react.PropTypes.object.isRequired\n\t };\n\t }\n\t }]);\n\t\n\t return Features;\n\t}(_react.PureComponent);\n\t\n\texports.default = Features;\n\t;\n\n/***/ },\n/* 221 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _historyContainer = __webpack_require__(192);\n\t\n\tvar _historyContainer2 = _interopRequireDefault(_historyContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar render = function render() {\n\t return _react2.default.createElement(_historyContainer2.default, null);\n\t};\n\t\n\texports.default = render;\n\n/***/ },\n/* 222 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _historyListToggleContainer = __webpack_require__(102);\n\t\n\tvar _historyListToggleContainer2 = _interopRequireDefault(_historyListToggleContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar render = function render(_ref) {\n\t var params = _ref.params;\n\t return _react2.default.createElement(_historyListToggleContainer2.default, { toggleName: params.toggleName });\n\t};\n\t\n\trender.propTypes = {\n\t params: _react.PropTypes.object.isRequired\n\t};\n\t\n\texports.default = render;\n\n/***/ },\n/* 223 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _addContainer = __webpack_require__(197);\n\t\n\tvar _addContainer2 = _interopRequireDefault(_addContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function () {\n\t return _react2.default.createElement(_addContainer2.default, null);\n\t};\n\n/***/ },\n/* 224 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _listContainer = __webpack_require__(200);\n\t\n\tvar _listContainer2 = _interopRequireDefault(_listContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function () {\n\t return _react2.default.createElement(_listContainer2.default, null);\n\t};\n\n/***/ },\n/* 225 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _strategyDetailsContainer = __webpack_require__(203);\n\t\n\tvar _strategyDetailsContainer2 = _interopRequireDefault(_strategyDetailsContainer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar render = function render(_ref) {\n\t var params = _ref.params;\n\t return _react2.default.createElement(_strategyDetailsContainer2.default, { strategyName: params.strategyName, activeTab: params.activeTab });\n\t};\n\t\n\trender.propTypes = {\n\t params: _react.PropTypes.object.isRequired\n\t};\n\t\n\texports.default = render;\n\n/***/ },\n/* 226 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _immutable = __webpack_require__(17);\n\t\n\tvar _actions = __webpack_require__(47);\n\t\n\tfunction getInitState() {\n\t return (0, _immutable.fromJS)({ list: [], apps: {} });\n\t}\n\t\n\tvar store = function store() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getInitState();\n\t var action = arguments[1];\n\t\n\t switch (action.type) {\n\t case _actions.RECEIVE_APPLICATION:\n\t return state.setIn(['apps', action.value.appName], new _immutable.Map(action.value));\n\t case _actions.RECEIVE_ALL_APPLICATIONS:\n\t return state.set('list', new _immutable.List(action.value.applications));\n\t default:\n\t return state;\n\t }\n\t};\n\t\n\texports.default = store;\n\n/***/ },\n/* 227 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _immutable = __webpack_require__(17);\n\t\n\tvar _archiveActions = __webpack_require__(105);\n\t\n\tfunction getInitState() {\n\t return new _immutable.Map({ list: new _immutable.List() });\n\t}\n\t\n\tvar archiveStore = function archiveStore() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getInitState();\n\t var action = arguments[1];\n\t\n\t switch (action.type) {\n\t case _archiveActions.REVIVE_TOGGLE:\n\t return state.update('list', function (list) {\n\t return list.remove(list.indexOf(action.value));\n\t });\n\t case _archiveActions.RECEIVE_ARCHIVE:\n\t return state.set('list', new _immutable.List(action.value));\n\t default:\n\t return state;\n\t }\n\t};\n\t\n\texports.default = archiveStore;\n\n/***/ },\n/* 228 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.ERROR_RECEIVE_CLIENT_INSTANCES = exports.RECEIVE_CLIENT_INSTANCES = undefined;\n\texports.fetchClientInstances = fetchClientInstances;\n\t\n\tvar _clientInstanceApi = __webpack_require__(209);\n\t\n\tvar _clientInstanceApi2 = _interopRequireDefault(_clientInstanceApi);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar RECEIVE_CLIENT_INSTANCES = exports.RECEIVE_CLIENT_INSTANCES = 'RECEIVE_CLIENT_INSTANCES';\n\tvar ERROR_RECEIVE_CLIENT_INSTANCES = exports.ERROR_RECEIVE_CLIENT_INSTANCES = 'ERROR_RECEIVE_CLIENT_INSTANCES';\n\t\n\tvar receiveClientInstances = function receiveClientInstances(json) {\n\t return {\n\t type: RECEIVE_CLIENT_INSTANCES,\n\t value: json\n\t };\n\t};\n\t\n\tvar errorReceiveClientInstances = function errorReceiveClientInstances(statusCode) {\n\t return {\n\t type: RECEIVE_CLIENT_INSTANCES,\n\t statusCode: statusCode\n\t };\n\t};\n\t\n\tfunction fetchClientInstances() {\n\t return function (dispatch) {\n\t return _clientInstanceApi2.default.fetchAll().then(function (json) {\n\t return dispatch(receiveClientInstances(json));\n\t }).catch(function (error) {\n\t return dispatch(errorReceiveClientInstances(error));\n\t });\n\t };\n\t}\n\n/***/ },\n/* 229 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _immutable = __webpack_require__(17);\n\t\n\tvar _clientInstanceActions = __webpack_require__(228);\n\t\n\tfunction getInitState() {\n\t return (0, _immutable.fromJS)([]);\n\t}\n\t\n\tvar store = function store() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getInitState();\n\t var action = arguments[1];\n\t\n\t switch (action.type) {\n\t case _clientInstanceActions.RECEIVE_CLIENT_INSTANCES:\n\t return (0, _immutable.fromJS)(action.value);\n\t default:\n\t return state;\n\t }\n\t};\n\t\n\texports.default = store;\n\n/***/ },\n/* 230 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _immutable = __webpack_require__(17);\n\t\n\tvar _errorActions = __webpack_require__(106);\n\t\n\tvar _featureActions = __webpack_require__(22);\n\t\n\tvar _actions = __webpack_require__(27);\n\t\n\tvar debug = __webpack_require__(63)('unleash:error-store');\n\t\n\tfunction getInitState() {\n\t return new _immutable.Map({\n\t list: new _immutable.List()\n\t });\n\t}\n\t\n\tfunction addErrorIfNotAlreadyInList(state, error) {\n\t debug('Got error', error);\n\t if (state.get('list').indexOf(error) < 0) {\n\t return state.update('list', function (list) {\n\t return list.push(error);\n\t });\n\t }\n\t return state;\n\t}\n\t\n\tvar strategies = function strategies() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getInitState();\n\t var action = arguments[1];\n\t\n\t switch (action.type) {\n\t case _featureActions.ERROR_CREATING_FEATURE_TOGGLE:\n\t case _featureActions.ERROR_REMOVE_FEATURE_TOGGLE:\n\t case _featureActions.ERROR_FETCH_FEATURE_TOGGLES:\n\t case _featureActions.ERROR_UPDATE_FEATURE_TOGGLE:\n\t case _actions.ERROR_UPDATING_STRATEGY:\n\t case _actions.ERROR_CREATING_STRATEGY:\n\t case _actions.ERROR_RECEIVE_STRATEGIES:\n\t return addErrorIfNotAlreadyInList(state, action.error.message);\n\t case _errorActions.MUTE_ERROR:\n\t return state.update('list', function (list) {\n\t return list.remove(list.indexOf(action.error));\n\t });\n\t default:\n\t return state;\n\t }\n\t};\n\t\n\texports.default = strategies;\n\n/***/ },\n/* 231 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _immutable = __webpack_require__(17);\n\t\n\tvar _featureMetricsActions = __webpack_require__(59);\n\t\n\tvar metrics = function metrics() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, _immutable.fromJS)({ lastHour: {}, lastMinute: {}, seenApps: {} });\n\t var action = arguments[1];\n\t\n\t switch (action.type) {\n\t case _featureMetricsActions.RECEIVE_SEEN_APPS:\n\t return state.set('seenApps', new _immutable.Map(action.value));\n\t case _featureMetricsActions.RECEIVE_FEATURE_METRICS:\n\t return state.withMutations(function (ctx) {\n\t ctx.set('lastHour', new _immutable.Map(action.value.lastHour));\n\t ctx.set('lastMinute', new _immutable.Map(action.value.lastMinute));\n\t return ctx;\n\t });\n\t default:\n\t return state;\n\t }\n\t};\n\t\n\texports.default = metrics;\n\n/***/ },\n/* 232 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _immutable = __webpack_require__(17);\n\t\n\tvar _featureActions = __webpack_require__(22);\n\t\n\tvar debug = __webpack_require__(63)('unleash:feature-store');\n\t\n\tvar features = function features() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new _immutable.List([]);\n\t var action = arguments[1];\n\t\n\t switch (action.type) {\n\t case _featureActions.ADD_FEATURE_TOGGLE:\n\t debug(_featureActions.ADD_FEATURE_TOGGLE, action);\n\t return state.push(new _immutable.Map(action.featureToggle));\n\t case _featureActions.REMOVE_FEATURE_TOGGLE:\n\t debug(_featureActions.REMOVE_FEATURE_TOGGLE, action);\n\t return state.filter(function (toggle) {\n\t return toggle.get('name') !== action.featureToggleName;\n\t });\n\t case _featureActions.UPDATE_FEATURE_TOGGLE:\n\t debug(_featureActions.UPDATE_FEATURE_TOGGLE, action);\n\t return state.map(function (toggle) {\n\t if (toggle.get('name') === action.featureToggle.name) {\n\t return new _immutable.Map(action.featureToggle);\n\t } else {\n\t return toggle;\n\t }\n\t });\n\t case _featureActions.RECEIVE_FEATURE_TOGGLES:\n\t debug(_featureActions.RECEIVE_FEATURE_TOGGLES, action);\n\t return new _immutable.List(action.featureToggles.map(_immutable.Map));\n\t default:\n\t return state;\n\t }\n\t};\n\t\n\texports.default = features;\n\n/***/ },\n/* 233 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _immutable = __webpack_require__(17);\n\t\n\tvar _historyActions = __webpack_require__(60);\n\t\n\tfunction getInitState() {\n\t return new _immutable.Map({ list: new _immutable.List(), toggles: new _immutable.Map() });\n\t}\n\t\n\tvar historyStore = function historyStore() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getInitState();\n\t var action = arguments[1];\n\t\n\t switch (action.type) {\n\t case _historyActions.RECEIVE_HISTORY_FOR_TOGGLE:\n\t return state.setIn(['toggles', action.value.toggleName], new _immutable.List(action.value.events));\n\t case _historyActions.RECEIVE_HISTORY:\n\t return state.set('list', new _immutable.List(action.value));\n\t default:\n\t return state;\n\t }\n\t};\n\t\n\texports.default = historyStore;\n\n/***/ },\n/* 234 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _redux = __webpack_require__(98);\n\t\n\tvar _featureStore = __webpack_require__(232);\n\t\n\tvar _featureStore2 = _interopRequireDefault(_featureStore);\n\t\n\tvar _featureMetricsStore = __webpack_require__(231);\n\t\n\tvar _featureMetricsStore2 = _interopRequireDefault(_featureMetricsStore);\n\t\n\tvar _strategy = __webpack_require__(237);\n\t\n\tvar _strategy2 = _interopRequireDefault(_strategy);\n\t\n\tvar _inputStore = __webpack_require__(235);\n\t\n\tvar _inputStore2 = _interopRequireDefault(_inputStore);\n\t\n\tvar _historyStore = __webpack_require__(233);\n\t\n\tvar _historyStore2 = _interopRequireDefault(_historyStore);\n\t\n\tvar _archiveStore = __webpack_require__(227);\n\t\n\tvar _archiveStore2 = _interopRequireDefault(_archiveStore);\n\t\n\tvar _errorStore = __webpack_require__(230);\n\t\n\tvar _errorStore2 = _interopRequireDefault(_errorStore);\n\t\n\tvar _clientInstanceStore = __webpack_require__(229);\n\t\n\tvar _clientInstanceStore2 = _interopRequireDefault(_clientInstanceStore);\n\t\n\tvar _settings = __webpack_require__(236);\n\t\n\tvar _settings2 = _interopRequireDefault(_settings);\n\t\n\tvar _user = __webpack_require__(238);\n\t\n\tvar _user2 = _interopRequireDefault(_user);\n\t\n\tvar _application = __webpack_require__(226);\n\t\n\tvar _application2 = _interopRequireDefault(_application);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t// eslint-disable-line\n\tvar unleashStore = (0, _redux.combineReducers)({\n\t features: _featureStore2.default,\n\t featureMetrics: _featureMetricsStore2.default,\n\t strategies: _strategy2.default,\n\t input: _inputStore2.default,\n\t history: _historyStore2.default,\n\t archive: _archiveStore2.default,\n\t error: _errorStore2.default,\n\t clientInstances: _clientInstanceStore2.default,\n\t settings: _settings2.default,\n\t user: _user2.default,\n\t applications: _application2.default\n\t});\n\t\n\texports.default = unleashStore;\n\n/***/ },\n/* 235 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _immutable = __webpack_require__(17);\n\t\n\tvar _inputActions = __webpack_require__(107);\n\t\n\tvar _inputActions2 = _interopRequireDefault(_inputActions);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction getInitState() {\n\t return new _immutable.Map();\n\t}\n\t\n\tfunction init(state, _ref) {\n\t var id = _ref.id,\n\t value = _ref.value;\n\t\n\t state = assertId(state, id);\n\t return state.setIn(id, (0, _immutable.fromJS)(value));\n\t}\n\t\n\tfunction assertId(state, id) {\n\t if (!state.hasIn(id)) {\n\t return state.setIn(id, new _immutable.Map({ inputId: id }));\n\t }\n\t return state;\n\t}\n\t\n\tfunction assertList(state, id, key) {\n\t if (!state.getIn(id).has(key)) {\n\t return state.setIn(id.concat([key]), new _immutable.List());\n\t }\n\t return state;\n\t}\n\t\n\tfunction setKeyValue(state, _ref2) {\n\t var id = _ref2.id,\n\t key = _ref2.key,\n\t value = _ref2.value;\n\t\n\t state = assertId(state, id);\n\t return state.setIn(id.concat([key]), value);\n\t}\n\t\n\tfunction increment(state, _ref3) {\n\t var id = _ref3.id,\n\t key = _ref3.key;\n\t\n\t state = assertId(state, id);\n\t return state.updateIn(id.concat([key]), function () {\n\t var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t return value + 1;\n\t });\n\t}\n\t\n\tfunction clear(state, _ref4) {\n\t var id = _ref4.id;\n\t\n\t if (state.hasIn(id)) {\n\t return state.removeIn(id);\n\t }\n\t return state;\n\t}\n\t\n\tfunction addToList(state, _ref5) {\n\t var id = _ref5.id,\n\t key = _ref5.key,\n\t value = _ref5.value;\n\t\n\t state = assertId(state, id);\n\t state = assertList(state, id, key);\n\t\n\t return state.updateIn(id.concat([key]), function (list) {\n\t return list.push(value);\n\t });\n\t}\n\t\n\tfunction updateInList(state, _ref6) {\n\t var id = _ref6.id,\n\t key = _ref6.key,\n\t index = _ref6.index,\n\t newValue = _ref6.newValue,\n\t merge = _ref6.merge;\n\t\n\t state = assertId(state, id);\n\t state = assertList(state, id, key);\n\t\n\t return state.updateIn(id.concat([key]), function (list) {\n\t if (merge && list.has(index)) {\n\t newValue = list.get(index).merge(new _immutable.Map(newValue));\n\t } else if (typeof newValue !== 'string') {\n\t newValue = (0, _immutable.fromJS)(newValue);\n\t }\n\t return list.set(index, newValue);\n\t });\n\t}\n\t\n\tfunction removeFromList(state, _ref7) {\n\t var id = _ref7.id,\n\t key = _ref7.key,\n\t index = _ref7.index;\n\t\n\t state = assertId(state, id);\n\t state = assertList(state, id, key);\n\t\n\t return state.updateIn(id.concat([key]), function (list) {\n\t return list.remove(index);\n\t });\n\t}\n\t\n\tvar inputState = function inputState() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getInitState();\n\t var action = arguments[1];\n\t\n\t if (!action.id) {\n\t return state;\n\t }\n\t\n\t switch (action.type) {\n\t case _inputActions2.default.INIT:\n\t return init(state, action);\n\t case _inputActions2.default.SET_VALUE:\n\t if (_inputActions2.default.key != null && _inputActions2.default.value != null) {\n\t throw new Error('Missing required key / value');\n\t }\n\t return setKeyValue(state, action);\n\t case _inputActions2.default.INCREMENT_VALUE:\n\t return increment(state, action);\n\t case _inputActions2.default.LIST_PUSH:\n\t return addToList(state, action);\n\t case _inputActions2.default.LIST_POP:\n\t return removeFromList(state, action);\n\t case _inputActions2.default.LIST_UP:\n\t return updateInList(state, action);\n\t case _inputActions2.default.CLEAR:\n\t return clear(state, action);\n\t default:\n\t // console.log('TYPE', action.type, action);\n\t return state;\n\t }\n\t};\n\t\n\texports.default = inputState;\n\n/***/ },\n/* 236 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _immutable = __webpack_require__(17);\n\t\n\tvar _actions = __webpack_require__(61);\n\t\n\t// TODO: provde a mock if localstorage does not exists?\n\tvar localStorage = window.localStorage || {};\n\tvar SETTINGS = 'settings';\n\t\n\tfunction getInitState() {\n\t try {\n\t var state = JSON.parse(localStorage.getItem(SETTINGS));\n\t return state ? (0, _immutable.fromJS)(state) : new _immutable.Map();\n\t } catch (e) {\n\t return new _immutable.Map();\n\t }\n\t}\n\t\n\tfunction updateSetting(state, action) {\n\t var newState = state.updateIn([action.group, action.field], function () {\n\t return action.value;\n\t });\n\t\n\t localStorage.setItem(SETTINGS, JSON.stringify(newState.toJSON()));\n\t return newState;\n\t}\n\t\n\tvar settingStore = function settingStore() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getInitState();\n\t var action = arguments[1];\n\t\n\t switch (action.type) {\n\t case _actions.UPDATE_SETTING:\n\t return updateSetting(state, action);\n\t default:\n\t return state;\n\t }\n\t};\n\t\n\texports.default = settingStore;\n\n/***/ },\n/* 237 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _immutable = __webpack_require__(17);\n\t\n\tvar _actions = __webpack_require__(27);\n\t\n\tfunction getInitState() {\n\t return new _immutable.Map({ list: new _immutable.List() });\n\t}\n\t\n\tfunction removeStrategy(state, action) {\n\t var indexToRemove = state.get('list').indexOf(action.strategy);\n\t if (indexToRemove !== -1) {\n\t return state.update('list', function (list) {\n\t return list.remove(indexToRemove);\n\t });\n\t }\n\t return state;\n\t}\n\t\n\tfunction updateStrategy(state, action) {\n\t return state.update('list', function (list) {\n\t return list.map(function (strategy) {\n\t if (strategy.name === action.strategy.name) {\n\t return action.strategy;\n\t } else {\n\t return strategy;\n\t }\n\t });\n\t });\n\t}\n\t\n\tvar strategies = function strategies() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getInitState();\n\t var action = arguments[1];\n\t\n\t switch (action.type) {\n\t case _actions.RECEIVE_STRATEGIES:\n\t return state.set('list', new _immutable.List(action.value));\n\t case _actions.REMOVE_STRATEGY:\n\t return removeStrategy(state, action);\n\t case _actions.ADD_STRATEGY:\n\t return state.update('list', function (list) {\n\t return list.push(action.strategy);\n\t });\n\t case _actions.UPDATE_STRATEGY:\n\t return updateStrategy(state, action);\n\t default:\n\t return state;\n\t }\n\t};\n\t\n\texports.default = strategies;\n\n/***/ },\n/* 238 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _immutable = __webpack_require__(17);\n\t\n\tvar _actions = __webpack_require__(62);\n\t\n\tvar COOKIE_NAME = 'username';\n\t\n\t// Ref: http://stackoverflow.com/questions/10730362/get-cookie-by-name\n\tfunction readCookie() {\n\t var nameEQ = COOKIE_NAME + '=';\n\t var ca = document.cookie.split(';');\n\t for (var i = 0; i < ca.length; i++) {\n\t var c = ca[i];\n\t while (c.charAt(0) == ' ') {\n\t // eslint-disable-line eqeqeq\n\t c = c.substring(1, c.length);\n\t }\n\t if (c.indexOf(nameEQ) === 0) {\n\t return c.substring(nameEQ.length, c.length);\n\t }\n\t }\n\t}\n\t\n\tfunction writeCookie(userName) {\n\t document.cookie = COOKIE_NAME + '=' + userName + '; expires=Thu, 18 Dec 2099 12:00:00 UTC';\n\t}\n\t\n\tfunction getInitState() {\n\t var userName = readCookie(COOKIE_NAME);\n\t var showDialog = !userName;\n\t return new _immutable.Map({ userName: userName, showDialog: showDialog });\n\t}\n\t\n\tfunction updateUserName(state, action) {\n\t return state.set('userName', action.value);\n\t}\n\t\n\tfunction save(state) {\n\t var userName = state.get('userName');\n\t if (userName) {\n\t writeCookie(userName);\n\t return state.set('showDialog', false);\n\t } else {\n\t return state;\n\t }\n\t}\n\t\n\tvar settingStore = function settingStore() {\n\t var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getInitState();\n\t var action = arguments[1];\n\t\n\t switch (action.type) {\n\t case _actions.USER_UPDATE_USERNAME:\n\t return updateUserName(state, action);\n\t case _actions.USER_SAVE:\n\t return save(state);\n\t case _actions.USER_EDIT:\n\t return state.set('showDialog', true);\n\t default:\n\t return state;\n\t }\n\t};\n\t\n\texports.default = settingStore;\n\n/***/ },\n/* 239 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\n\t/**\n\t * This is the common logic for both the Node.js and web browser\n\t * implementations of `debug()`.\n\t *\n\t * Expose `debug()` as the module.\n\t */\n\t\n\texports = module.exports = createDebug.debug = createDebug.default = createDebug;\n\texports.coerce = coerce;\n\texports.disable = disable;\n\texports.enable = enable;\n\texports.enabled = enabled;\n\texports.humanize = __webpack_require__(273);\n\t\n\t/**\n\t * The currently active debug mode names, and names to skip.\n\t */\n\t\n\texports.names = [];\n\texports.skips = [];\n\t\n\t/**\n\t * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t *\n\t * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t */\n\t\n\texports.formatters = {};\n\t\n\t/**\n\t * Previous log timestamp.\n\t */\n\t\n\tvar prevTime;\n\t\n\t/**\n\t * Select a color.\n\t * @param {String} namespace\n\t * @return {Number}\n\t * @api private\n\t */\n\t\n\tfunction selectColor(namespace) {\n\t var hash = 0, i;\n\t\n\t for (i in namespace) {\n\t hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t hash |= 0; // Convert to 32bit integer\n\t }\n\t\n\t return exports.colors[Math.abs(hash) % exports.colors.length];\n\t}\n\t\n\t/**\n\t * Create a debugger with the given `namespace`.\n\t *\n\t * @param {String} namespace\n\t * @return {Function}\n\t * @api public\n\t */\n\t\n\tfunction createDebug(namespace) {\n\t\n\t function debug() {\n\t // disabled?\n\t if (!debug.enabled) return;\n\t\n\t var self = debug;\n\t\n\t // set `diff` timestamp\n\t var curr = +new Date();\n\t var ms = curr - (prevTime || curr);\n\t self.diff = ms;\n\t self.prev = prevTime;\n\t self.curr = curr;\n\t prevTime = curr;\n\t\n\t // turn the `arguments` into a proper Array\n\t var args = new Array(arguments.length);\n\t for (var i = 0; i < args.length; i++) {\n\t args[i] = arguments[i];\n\t }\n\t\n\t args[0] = exports.coerce(args[0]);\n\t\n\t if ('string' !== typeof args[0]) {\n\t // anything else let's inspect with %O\n\t args.unshift('%O');\n\t }\n\t\n\t // apply any `formatters` transformations\n\t var index = 0;\n\t args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n\t // if we encounter an escaped % then don't increase the array index\n\t if (match === '%%') return match;\n\t index++;\n\t var formatter = exports.formatters[format];\n\t if ('function' === typeof formatter) {\n\t var val = args[index];\n\t match = formatter.call(self, val);\n\t\n\t // now we need to remove `args[index]` since it's inlined in the `format`\n\t args.splice(index, 1);\n\t index--;\n\t }\n\t return match;\n\t });\n\t\n\t // apply env-specific formatting (colors, etc.)\n\t exports.formatArgs.call(self, args);\n\t\n\t var logFn = debug.log || exports.log || console.log.bind(console);\n\t logFn.apply(self, args);\n\t }\n\t\n\t debug.namespace = namespace;\n\t debug.enabled = exports.enabled(namespace);\n\t debug.useColors = exports.useColors();\n\t debug.color = selectColor(namespace);\n\t\n\t // env-specific initialization logic for debug instances\n\t if ('function' === typeof exports.init) {\n\t exports.init(debug);\n\t }\n\t\n\t return debug;\n\t}\n\t\n\t/**\n\t * Enables a debug mode by namespaces. This can include modes\n\t * separated by a colon and wildcards.\n\t *\n\t * @param {String} namespaces\n\t * @api public\n\t */\n\t\n\tfunction enable(namespaces) {\n\t exports.save(namespaces);\n\t\n\t var split = (namespaces || '').split(/[\\s,]+/);\n\t var len = split.length;\n\t\n\t for (var i = 0; i < len; i++) {\n\t if (!split[i]) continue; // ignore empty strings\n\t namespaces = split[i].replace(/\\*/g, '.*?');\n\t if (namespaces[0] === '-') {\n\t exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t } else {\n\t exports.names.push(new RegExp('^' + namespaces + '$'));\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Disable debug output.\n\t *\n\t * @api public\n\t */\n\t\n\tfunction disable() {\n\t exports.enable('');\n\t}\n\t\n\t/**\n\t * Returns true if the given mode name is enabled, false otherwise.\n\t *\n\t * @param {String} name\n\t * @return {Boolean}\n\t * @api public\n\t */\n\t\n\tfunction enabled(name) {\n\t var i, len;\n\t for (i = 0, len = exports.skips.length; i < len; i++) {\n\t if (exports.skips[i].test(name)) {\n\t return false;\n\t }\n\t }\n\t for (i = 0, len = exports.names.length; i < len; i++) {\n\t if (exports.names[i].test(name)) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t}\n\t\n\t/**\n\t * Coerce `val`.\n\t *\n\t * @param {Mixed} val\n\t * @return {Mixed}\n\t * @api private\n\t */\n\t\n\tfunction coerce(val) {\n\t if (val instanceof Error) return val.stack || val.message;\n\t return val;\n\t}\n\n\n/***/ },\n/* 240 */\n/***/ function(module, exports) {\n\n\tmodule.exports = function(opts) {\n\t return new ElementClass(opts)\n\t}\n\t\n\tfunction indexOf(arr, prop) {\n\t if (arr.indexOf) return arr.indexOf(prop)\n\t for (var i = 0, len = arr.length; i < len; i++)\n\t if (arr[i] === prop) return i\n\t return -1\n\t}\n\t\n\tfunction ElementClass(opts) {\n\t if (!(this instanceof ElementClass)) return new ElementClass(opts)\n\t var self = this\n\t if (!opts) opts = {}\n\t\n\t // similar doing instanceof HTMLElement but works in IE8\n\t if (opts.nodeType) opts = {el: opts}\n\t\n\t this.opts = opts\n\t this.el = opts.el || document.body\n\t if (typeof this.el !== 'object') this.el = document.querySelector(this.el)\n\t}\n\t\n\tElementClass.prototype.add = function(className) {\n\t var el = this.el\n\t if (!el) return\n\t if (el.className === \"\") return el.className = className\n\t var classes = el.className.split(' ')\n\t if (indexOf(classes, className) > -1) return classes\n\t classes.push(className)\n\t el.className = classes.join(' ')\n\t return classes\n\t}\n\t\n\tElementClass.prototype.remove = function(className) {\n\t var el = this.el\n\t if (!el) return\n\t if (el.className === \"\") return\n\t var classes = el.className.split(' ')\n\t var idx = indexOf(classes, className)\n\t if (idx > -1) classes.splice(idx, 1)\n\t el.className = classes.join(' ')\n\t return classes\n\t}\n\t\n\tElementClass.prototype.has = function(className) {\n\t var el = this.el\n\t if (!el) return\n\t var classes = el.className.split(' ')\n\t return indexOf(classes, className) > -1\n\t}\n\t\n\tElementClass.prototype.toggle = function(className) {\n\t var el = this.el\n\t if (!el) return\n\t if (this.has(className)) this.remove(className)\n\t else this.add(className)\n\t}\n\n\n/***/ },\n/* 241 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar __WEBPACK_AMD_DEFINE_RESULT__;/*!\n\t Copyright (c) 2015 Jed Watson.\n\t Based on code that is Copyright 2013-2015, Facebook, Inc.\n\t All rights reserved.\n\t*/\n\t\n\t(function () {\n\t\t'use strict';\n\t\n\t\tvar canUseDOM = !!(\n\t\t\ttypeof window !== 'undefined' &&\n\t\t\twindow.document &&\n\t\t\twindow.document.createElement\n\t\t);\n\t\n\t\tvar ExecutionEnvironment = {\n\t\n\t\t\tcanUseDOM: canUseDOM,\n\t\n\t\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\t\n\t\t\tcanUseEventListeners:\n\t\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\t\n\t\t\tcanUseViewport: canUseDOM && !!window.screen\n\t\n\t\t};\n\t\n\t\tif (true) {\n\t\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = function () {\n\t\t\t\treturn ExecutionEnvironment;\n\t\t\t}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\t\tmodule.exports = ExecutionEnvironment;\n\t\t} else {\n\t\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t\t}\n\t\n\t}());\n\n\n/***/ },\n/* 242 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ },\n/* 243 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\tmodule.exports = {\"truncate\":\"common__truncate___1HO4G\"};\n\n/***/ },\n/* 244 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\tmodule.exports = {\"path\":\"progress-styles__path___EWzvx\",\"trail\":\"progress-styles__trail___33CET\",\"text\":\"progress-styles__text___2Ny4s\"};\n\n/***/ },\n/* 245 */\n/***/ function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\tmodule.exports = {\"container\":\"styles__container___3RbZD\",\"navigation\":\"styles__navigation___NYjO2\",\"active\":\"styles__active___2VGIV\"};\n\n/***/ },\n/* 246 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks\n\t */\n\t\n\tvar _hyphenPattern = /-(.)/g;\n\t\n\t/**\n\t * Camelcases a hyphenated string, for example:\n\t *\n\t * > camelize('background-color')\n\t * < \"backgroundColor\"\n\t *\n\t * @param {string} string\n\t * @return {string}\n\t */\n\tfunction camelize(string) {\n\t return string.replace(_hyphenPattern, function (_, character) {\n\t return character.toUpperCase();\n\t });\n\t}\n\t\n\tmodule.exports = camelize;\n\n/***/ },\n/* 247 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks\n\t */\n\t\n\t'use strict';\n\t\n\tvar camelize = __webpack_require__(246);\n\t\n\tvar msPattern = /^-ms-/;\n\t\n\t/**\n\t * Camelcases a hyphenated CSS property name, for example:\n\t *\n\t * > camelizeStyleName('background-color')\n\t * < \"backgroundColor\"\n\t * > camelizeStyleName('-moz-transition')\n\t * < \"MozTransition\"\n\t * > camelizeStyleName('-ms-transition')\n\t * < \"msTransition\"\n\t *\n\t * As Andi Smith suggests\n\t * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n\t * is converted to lowercase `ms`.\n\t *\n\t * @param {string} string\n\t * @return {string}\n\t */\n\tfunction camelizeStyleName(string) {\n\t return camelize(string.replace(msPattern, 'ms-'));\n\t}\n\t\n\tmodule.exports = camelizeStyleName;\n\n/***/ },\n/* 248 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\tvar isTextNode = __webpack_require__(256);\n\t\n\t/*eslint-disable no-bitwise */\n\t\n\t/**\n\t * Checks if a given DOM node contains or is another DOM node.\n\t */\n\tfunction containsNode(outerNode, innerNode) {\n\t if (!outerNode || !innerNode) {\n\t return false;\n\t } else if (outerNode === innerNode) {\n\t return true;\n\t } else if (isTextNode(outerNode)) {\n\t return false;\n\t } else if (isTextNode(innerNode)) {\n\t return containsNode(outerNode, innerNode.parentNode);\n\t } else if ('contains' in outerNode) {\n\t return outerNode.contains(innerNode);\n\t } else if (outerNode.compareDocumentPosition) {\n\t return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n\t } else {\n\t return false;\n\t }\n\t}\n\t\n\tmodule.exports = containsNode;\n\n/***/ },\n/* 249 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks\n\t */\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * Convert array-like objects to arrays.\n\t *\n\t * This API assumes the caller knows the contents of the data type. For less\n\t * well defined inputs use createArrayFromMixed.\n\t *\n\t * @param {object|function|filelist} obj\n\t * @return {array}\n\t */\n\tfunction toArray(obj) {\n\t var length = obj.length;\n\t\n\t // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n\t // in old versions of Safari).\n\t !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? false ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\t\n\t !(typeof length === 'number') ? false ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\t\n\t !(length === 0 || length - 1 in obj) ? false ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\t\n\t !(typeof obj.callee !== 'function') ? false ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\t\n\t // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n\t // without method will throw during the slice call and skip straight to the\n\t // fallback.\n\t if (obj.hasOwnProperty) {\n\t try {\n\t return Array.prototype.slice.call(obj);\n\t } catch (e) {\n\t // IE < 9 does not support Array#slice on collections objects\n\t }\n\t }\n\t\n\t // Fall back to copying key by key. This assumes all keys have a value,\n\t // so will not preserve sparsely populated inputs.\n\t var ret = Array(length);\n\t for (var ii = 0; ii < length; ii++) {\n\t ret[ii] = obj[ii];\n\t }\n\t return ret;\n\t}\n\t\n\t/**\n\t * Perform a heuristic test to determine if an object is \"array-like\".\n\t *\n\t * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n\t * Joshu replied: \"Mu.\"\n\t *\n\t * This function determines if its argument has \"array nature\": it returns\n\t * true if the argument is an actual array, an `arguments' object, or an\n\t * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n\t *\n\t * It will return false for other array-like objects like Filelist.\n\t *\n\t * @param {*} obj\n\t * @return {boolean}\n\t */\n\tfunction hasArrayNature(obj) {\n\t return (\n\t // not null/false\n\t !!obj && (\n\t // arrays are objects, NodeLists are functions in Safari\n\t typeof obj == 'object' || typeof obj == 'function') &&\n\t // quacks like an array\n\t 'length' in obj &&\n\t // not window\n\t !('setInterval' in obj) &&\n\t // no DOM node should be considered an array-like\n\t // a 'select' element has 'length' and 'item' properties on IE8\n\t typeof obj.nodeType != 'number' && (\n\t // a real array\n\t Array.isArray(obj) ||\n\t // arguments\n\t 'callee' in obj ||\n\t // HTMLCollection/NodeList\n\t 'item' in obj)\n\t );\n\t}\n\t\n\t/**\n\t * Ensure that the argument is an array by wrapping it in an array if it is not.\n\t * Creates a copy of the argument if it is already an array.\n\t *\n\t * This is mostly useful idiomatically:\n\t *\n\t * var createArrayFromMixed = require('createArrayFromMixed');\n\t *\n\t * function takesOneOrMoreThings(things) {\n\t * things = createArrayFromMixed(things);\n\t * ...\n\t * }\n\t *\n\t * This allows you to treat `things' as an array, but accept scalars in the API.\n\t *\n\t * If you need to convert an array-like object, like `arguments`, into an array\n\t * use toArray instead.\n\t *\n\t * @param {*} obj\n\t * @return {array}\n\t */\n\tfunction createArrayFromMixed(obj) {\n\t if (!hasArrayNature(obj)) {\n\t return [obj];\n\t } else if (Array.isArray(obj)) {\n\t return obj.slice();\n\t } else {\n\t return toArray(obj);\n\t }\n\t}\n\t\n\tmodule.exports = createArrayFromMixed;\n\n/***/ },\n/* 250 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks\n\t */\n\t\n\t/*eslint-disable fb-www/unsafe-html*/\n\t\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\t\n\tvar createArrayFromMixed = __webpack_require__(249);\n\tvar getMarkupWrap = __webpack_require__(251);\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * Dummy container used to render all markup.\n\t */\n\tvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\t\n\t/**\n\t * Pattern used by `getNodeName`.\n\t */\n\tvar nodeNamePattern = /^\\s*<(\\w+)/;\n\t\n\t/**\n\t * Extracts the `nodeName` of the first element in a string of markup.\n\t *\n\t * @param {string} markup String of markup.\n\t * @return {?string} Node name of the supplied markup.\n\t */\n\tfunction getNodeName(markup) {\n\t var nodeNameMatch = markup.match(nodeNamePattern);\n\t return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n\t}\n\t\n\t/**\n\t * Creates an array containing the nodes rendered from the supplied markup. The\n\t * optionally supplied `handleScript` function will be invoked once for each\n\t * <script> element that is rendered. If no `handleScript` function is supplied,\n\t * an exception is thrown if any <script> elements are rendered.\n\t *\n\t * @param {string} markup A string of valid HTML markup.\n\t * @param {?function} handleScript Invoked once for each rendered <script>.\n\t * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n\t */\n\tfunction createNodesFromMarkup(markup, handleScript) {\n\t var node = dummyNode;\n\t !!!dummyNode ? false ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n\t var nodeName = getNodeName(markup);\n\t\n\t var wrap = nodeName && getMarkupWrap(nodeName);\n\t if (wrap) {\n\t node.innerHTML = wrap[1] + markup + wrap[2];\n\t\n\t var wrapDepth = wrap[0];\n\t while (wrapDepth--) {\n\t node = node.lastChild;\n\t }\n\t } else {\n\t node.innerHTML = markup;\n\t }\n\t\n\t var scripts = node.getElementsByTagName('script');\n\t if (scripts.length) {\n\t !handleScript ? false ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n\t createArrayFromMixed(scripts).forEach(handleScript);\n\t }\n\t\n\t var nodes = Array.from(node.childNodes);\n\t while (node.lastChild) {\n\t node.removeChild(node.lastChild);\n\t }\n\t return nodes;\n\t}\n\t\n\tmodule.exports = createNodesFromMarkup;\n\n/***/ },\n/* 251 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t/*eslint-disable fb-www/unsafe-html */\n\t\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * Dummy container used to detect which wraps are necessary.\n\t */\n\tvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\t\n\t/**\n\t * Some browsers cannot use `innerHTML` to render certain elements standalone,\n\t * so we wrap them, render the wrapped nodes, then extract the desired node.\n\t *\n\t * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n\t */\n\t\n\tvar shouldWrap = {};\n\t\n\tvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\n\tvar tableWrap = [1, '<table>', '</table>'];\n\tvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\t\n\tvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\t\n\tvar markupWrap = {\n\t '*': [1, '?<div>', '</div>'],\n\t\n\t 'area': [1, '<map>', '</map>'],\n\t 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n\t 'legend': [1, '<fieldset>', '</fieldset>'],\n\t 'param': [1, '<object>', '</object>'],\n\t 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\t\n\t 'optgroup': selectWrap,\n\t 'option': selectWrap,\n\t\n\t 'caption': tableWrap,\n\t 'colgroup': tableWrap,\n\t 'tbody': tableWrap,\n\t 'tfoot': tableWrap,\n\t 'thead': tableWrap,\n\t\n\t 'td': trWrap,\n\t 'th': trWrap\n\t};\n\t\n\t// Initialize the SVG elements since we know they'll always need to be wrapped\n\t// consistently. If they are created inside a <div> they will be initialized in\n\t// the wrong namespace (and will not display).\n\tvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\n\tsvgElements.forEach(function (nodeName) {\n\t markupWrap[nodeName] = svgWrap;\n\t shouldWrap[nodeName] = true;\n\t});\n\t\n\t/**\n\t * Gets the markup wrap configuration for the supplied `nodeName`.\n\t *\n\t * NOTE: This lazily detects which wraps are necessary for the current browser.\n\t *\n\t * @param {string} nodeName Lowercase `nodeName`.\n\t * @return {?array} Markup wrap configuration, if applicable.\n\t */\n\tfunction getMarkupWrap(nodeName) {\n\t !!!dummyNode ? false ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n\t if (!markupWrap.hasOwnProperty(nodeName)) {\n\t nodeName = '*';\n\t }\n\t if (!shouldWrap.hasOwnProperty(nodeName)) {\n\t if (nodeName === '*') {\n\t dummyNode.innerHTML = '<link />';\n\t } else {\n\t dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n\t }\n\t shouldWrap[nodeName] = !dummyNode.firstChild;\n\t }\n\t return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n\t}\n\t\n\tmodule.exports = getMarkupWrap;\n\n/***/ },\n/* 252 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Gets the scroll position of the supplied element or window.\n\t *\n\t * The return values are unbounded, unlike `getScrollPosition`. This means they\n\t * may be negative or exceed the element boundaries (which is possible using\n\t * inertial scrolling).\n\t *\n\t * @param {DOMWindow|DOMElement} scrollable\n\t * @return {object} Map with `x` and `y` keys.\n\t */\n\t\n\tfunction getUnboundedScrollPosition(scrollable) {\n\t if (scrollable === window) {\n\t return {\n\t x: window.pageXOffset || document.documentElement.scrollLeft,\n\t y: window.pageYOffset || document.documentElement.scrollTop\n\t };\n\t }\n\t return {\n\t x: scrollable.scrollLeft,\n\t y: scrollable.scrollTop\n\t };\n\t}\n\t\n\tmodule.exports = getUnboundedScrollPosition;\n\n/***/ },\n/* 253 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks\n\t */\n\t\n\tvar _uppercasePattern = /([A-Z])/g;\n\t\n\t/**\n\t * Hyphenates a camelcased string, for example:\n\t *\n\t * > hyphenate('backgroundColor')\n\t * < \"background-color\"\n\t *\n\t * For CSS style names, use `hyphenateStyleName` instead which works properly\n\t * with all vendor prefixes, including `ms`.\n\t *\n\t * @param {string} string\n\t * @return {string}\n\t */\n\tfunction hyphenate(string) {\n\t return string.replace(_uppercasePattern, '-$1').toLowerCase();\n\t}\n\t\n\tmodule.exports = hyphenate;\n\n/***/ },\n/* 254 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks\n\t */\n\t\n\t'use strict';\n\t\n\tvar hyphenate = __webpack_require__(253);\n\t\n\tvar msPattern = /^ms-/;\n\t\n\t/**\n\t * Hyphenates a camelcased CSS property name, for example:\n\t *\n\t * > hyphenateStyleName('backgroundColor')\n\t * < \"background-color\"\n\t * > hyphenateStyleName('MozTransition')\n\t * < \"-moz-transition\"\n\t * > hyphenateStyleName('msTransition')\n\t * < \"-ms-transition\"\n\t *\n\t * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n\t * is converted to `-ms-`.\n\t *\n\t * @param {string} string\n\t * @return {string}\n\t */\n\tfunction hyphenateStyleName(string) {\n\t return hyphenate(string).replace(msPattern, '-ms-');\n\t}\n\t\n\tmodule.exports = hyphenateStyleName;\n\n/***/ },\n/* 255 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks\n\t */\n\t\n\t/**\n\t * @param {*} object The object to check.\n\t * @return {boolean} Whether or not the object is a DOM node.\n\t */\n\tfunction isNode(object) {\n\t return !!(object && (typeof Node === 'function' ? object instanceof Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n\t}\n\t\n\tmodule.exports = isNode;\n\n/***/ },\n/* 256 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * @typechecks\n\t */\n\t\n\tvar isNode = __webpack_require__(255);\n\t\n\t/**\n\t * @param {*} object The object to check.\n\t * @return {boolean} Whether or not the object is a DOM text node.\n\t */\n\tfunction isTextNode(object) {\n\t return isNode(object) && object.nodeType == 3;\n\t}\n\t\n\tmodule.exports = isTextNode;\n\n/***/ },\n/* 257 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t * @typechecks static-only\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Memoizes the return value of a function that accepts one string argument.\n\t */\n\t\n\tfunction memoizeStringOnly(callback) {\n\t var cache = {};\n\t return function (string) {\n\t if (!cache.hasOwnProperty(string)) {\n\t cache[string] = callback.call(this, string);\n\t }\n\t return cache[string];\n\t };\n\t}\n\t\n\tmodule.exports = memoizeStringOnly;\n\n/***/ },\n/* 258 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\tvar loopAsync = exports.loopAsync = function loopAsync(turns, work, callback) {\n\t var currentTurn = 0,\n\t isDone = false;\n\t var isSync = false,\n\t hasNext = false,\n\t doneArgs = void 0;\n\t\n\t var done = function done() {\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t isDone = true;\n\t\n\t if (isSync) {\n\t // Iterate instead of recursing if possible.\n\t doneArgs = args;\n\t return;\n\t }\n\t\n\t callback.apply(undefined, args);\n\t };\n\t\n\t var next = function next() {\n\t if (isDone) return;\n\t\n\t hasNext = true;\n\t\n\t if (isSync) return; // Iterate instead of recursing if possible.\n\t\n\t isSync = true;\n\t\n\t while (!isDone && currentTurn < turns && hasNext) {\n\t hasNext = false;\n\t work(currentTurn++, next, done);\n\t }\n\t\n\t isSync = false;\n\t\n\t if (isDone) {\n\t // This means the loop finished synchronously.\n\t callback.apply(undefined, doneArgs);\n\t return;\n\t }\n\t\n\t if (currentTurn >= turns && hasNext) {\n\t isDone = true;\n\t callback();\n\t }\n\t };\n\t\n\t next();\n\t};\n\n/***/ },\n/* 259 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.replaceLocation = exports.pushLocation = exports.startListener = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined;\n\t\n\tvar _BrowserProtocol = __webpack_require__(66);\n\t\n\tObject.defineProperty(exports, 'getUserConfirmation', {\n\t enumerable: true,\n\t get: function get() {\n\t return _BrowserProtocol.getUserConfirmation;\n\t }\n\t});\n\tObject.defineProperty(exports, 'go', {\n\t enumerable: true,\n\t get: function get() {\n\t return _BrowserProtocol.go;\n\t }\n\t});\n\t\n\tvar _warning = __webpack_require__(25);\n\t\n\tvar _warning2 = _interopRequireDefault(_warning);\n\t\n\tvar _LocationUtils = __webpack_require__(29);\n\t\n\tvar _DOMUtils = __webpack_require__(50);\n\t\n\tvar _DOMStateStorage = __webpack_require__(112);\n\t\n\tvar _PathUtils = __webpack_require__(23);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar HashChangeEvent = 'hashchange';\n\t\n\tvar getHashPath = function getHashPath() {\n\t // We can't use window.location.hash here because it's not\n\t // consistent across browsers - Firefox will pre-decode it!\n\t var href = window.location.href;\n\t var hashIndex = href.indexOf('#');\n\t return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n\t};\n\t\n\tvar pushHashPath = function pushHashPath(path) {\n\t return window.location.hash = path;\n\t};\n\t\n\tvar replaceHashPath = function replaceHashPath(path) {\n\t var hashIndex = window.location.href.indexOf('#');\n\t\n\t window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n\t};\n\t\n\tvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation(pathCoder, queryKey) {\n\t var path = pathCoder.decodePath(getHashPath());\n\t var key = (0, _PathUtils.getQueryStringValueFromPath)(path, queryKey);\n\t\n\t var state = void 0;\n\t if (key) {\n\t path = (0, _PathUtils.stripQueryStringValueFromPath)(path, queryKey);\n\t state = (0, _DOMStateStorage.readState)(key);\n\t }\n\t\n\t var init = (0, _PathUtils.parsePath)(path);\n\t init.state = state;\n\t\n\t return (0, _LocationUtils.createLocation)(init, undefined, key);\n\t};\n\t\n\tvar prevLocation = void 0;\n\t\n\tvar startListener = exports.startListener = function startListener(listener, pathCoder, queryKey) {\n\t var handleHashChange = function handleHashChange() {\n\t var path = getHashPath();\n\t var encodedPath = pathCoder.encodePath(path);\n\t\n\t if (path !== encodedPath) {\n\t // Always be sure we have a properly-encoded hash.\n\t replaceHashPath(encodedPath);\n\t } else {\n\t var currentLocation = getCurrentLocation(pathCoder, queryKey);\n\t\n\t if (prevLocation && currentLocation.key && prevLocation.key === currentLocation.key) return; // Ignore extraneous hashchange events\n\t\n\t prevLocation = currentLocation;\n\t\n\t listener(currentLocation);\n\t }\n\t };\n\t\n\t // Ensure the hash is encoded properly.\n\t var path = getHashPath();\n\t var encodedPath = pathCoder.encodePath(path);\n\t\n\t if (path !== encodedPath) replaceHashPath(encodedPath);\n\t\n\t (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleHashChange);\n\t\n\t return function () {\n\t return (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleHashChange);\n\t };\n\t};\n\t\n\tvar updateLocation = function updateLocation(location, pathCoder, queryKey, updateHash) {\n\t var state = location.state;\n\t var key = location.key;\n\t\n\t\n\t var path = pathCoder.encodePath((0, _PathUtils.createPath)(location));\n\t\n\t if (state !== undefined) {\n\t path = (0, _PathUtils.addQueryStringValueToPath)(path, queryKey, key);\n\t (0, _DOMStateStorage.saveState)(key, state);\n\t }\n\t\n\t prevLocation = location;\n\t\n\t updateHash(path);\n\t};\n\t\n\tvar pushLocation = exports.pushLocation = function pushLocation(location, pathCoder, queryKey) {\n\t return updateLocation(location, pathCoder, queryKey, function (path) {\n\t if (getHashPath() !== path) {\n\t pushHashPath(path);\n\t } else {\n\t false ? (0, _warning2.default)(false, 'You cannot PUSH the same path using hash history') : void 0;\n\t }\n\t });\n\t};\n\t\n\tvar replaceLocation = exports.replaceLocation = function replaceLocation(location, pathCoder, queryKey) {\n\t return updateLocation(location, pathCoder, queryKey, function (path) {\n\t if (getHashPath() !== path) replaceHashPath(path);\n\t });\n\t};\n\n/***/ },\n/* 260 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.replaceLocation = exports.pushLocation = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined;\n\t\n\tvar _BrowserProtocol = __webpack_require__(66);\n\t\n\tObject.defineProperty(exports, 'getUserConfirmation', {\n\t enumerable: true,\n\t get: function get() {\n\t return _BrowserProtocol.getUserConfirmation;\n\t }\n\t});\n\tObject.defineProperty(exports, 'go', {\n\t enumerable: true,\n\t get: function get() {\n\t return _BrowserProtocol.go;\n\t }\n\t});\n\t\n\tvar _LocationUtils = __webpack_require__(29);\n\t\n\tvar _PathUtils = __webpack_require__(23);\n\t\n\tvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() {\n\t return (0, _LocationUtils.createLocation)(window.location);\n\t};\n\t\n\tvar pushLocation = exports.pushLocation = function pushLocation(location) {\n\t window.location.href = (0, _PathUtils.createPath)(location);\n\t return false; // Don't update location\n\t};\n\t\n\tvar replaceLocation = exports.replaceLocation = function replaceLocation(location) {\n\t window.location.replace((0, _PathUtils.createPath)(location));\n\t return false; // Don't update location\n\t};\n\n/***/ },\n/* 261 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _ExecutionEnvironment = __webpack_require__(67);\n\t\n\tvar _BrowserProtocol = __webpack_require__(66);\n\t\n\tvar BrowserProtocol = _interopRequireWildcard(_BrowserProtocol);\n\t\n\tvar _RefreshProtocol = __webpack_require__(260);\n\t\n\tvar RefreshProtocol = _interopRequireWildcard(_RefreshProtocol);\n\t\n\tvar _DOMUtils = __webpack_require__(50);\n\t\n\tvar _createHistory = __webpack_require__(68);\n\t\n\tvar _createHistory2 = _interopRequireDefault(_createHistory);\n\t\n\tfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/**\n\t * Creates and returns a history object that uses HTML5's history API\n\t * (pushState, replaceState, and the popstate event) to manage history.\n\t * This is the recommended method of managing history in browsers because\n\t * it provides the cleanest URLs.\n\t *\n\t * Note: In browsers that do not support the HTML5 history API full\n\t * page reloads will be used to preserve clean URLs. You can force this\n\t * behavior using { forceRefresh: true } in options.\n\t */\n\tvar createBrowserHistory = function createBrowserHistory() {\n\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t\n\t !_ExecutionEnvironment.canUseDOM ? false ? (0, _invariant2.default)(false, 'Browser history needs a DOM') : (0, _invariant2.default)(false) : void 0;\n\t\n\t var useRefresh = options.forceRefresh || !(0, _DOMUtils.supportsHistory)();\n\t var Protocol = useRefresh ? RefreshProtocol : BrowserProtocol;\n\t\n\t var getUserConfirmation = Protocol.getUserConfirmation;\n\t var getCurrentLocation = Protocol.getCurrentLocation;\n\t var pushLocation = Protocol.pushLocation;\n\t var replaceLocation = Protocol.replaceLocation;\n\t var go = Protocol.go;\n\t\n\t\n\t var history = (0, _createHistory2.default)(_extends({\n\t getUserConfirmation: getUserConfirmation }, options, {\n\t getCurrentLocation: getCurrentLocation,\n\t pushLocation: pushLocation,\n\t replaceLocation: replaceLocation,\n\t go: go\n\t }));\n\t\n\t var listenerCount = 0,\n\t stopListener = void 0;\n\t\n\t var startListener = function startListener(listener, before) {\n\t if (++listenerCount === 1) stopListener = BrowserProtocol.startListener(history.transitionTo);\n\t\n\t var unlisten = before ? history.listenBefore(listener) : history.listen(listener);\n\t\n\t return function () {\n\t unlisten();\n\t\n\t if (--listenerCount === 0) stopListener();\n\t };\n\t };\n\t\n\t var listenBefore = function listenBefore(listener) {\n\t return startListener(listener, true);\n\t };\n\t\n\t var listen = function listen(listener) {\n\t return startListener(listener, false);\n\t };\n\t\n\t return _extends({}, history, {\n\t listenBefore: listenBefore,\n\t listen: listen\n\t });\n\t};\n\t\n\texports.default = createBrowserHistory;\n\n/***/ },\n/* 262 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _warning = __webpack_require__(25);\n\t\n\tvar _warning2 = _interopRequireDefault(_warning);\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _ExecutionEnvironment = __webpack_require__(67);\n\t\n\tvar _DOMUtils = __webpack_require__(50);\n\t\n\tvar _HashProtocol = __webpack_require__(259);\n\t\n\tvar HashProtocol = _interopRequireWildcard(_HashProtocol);\n\t\n\tvar _createHistory = __webpack_require__(68);\n\t\n\tvar _createHistory2 = _interopRequireDefault(_createHistory);\n\t\n\tfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar DefaultQueryKey = '_k';\n\t\n\tvar addLeadingSlash = function addLeadingSlash(path) {\n\t return path.charAt(0) === '/' ? path : '/' + path;\n\t};\n\t\n\tvar HashPathCoders = {\n\t hashbang: {\n\t encodePath: function encodePath(path) {\n\t return path.charAt(0) === '!' ? path : '!' + path;\n\t },\n\t decodePath: function decodePath(path) {\n\t return path.charAt(0) === '!' ? path.substring(1) : path;\n\t }\n\t },\n\t noslash: {\n\t encodePath: function encodePath(path) {\n\t return path.charAt(0) === '/' ? path.substring(1) : path;\n\t },\n\t decodePath: addLeadingSlash\n\t },\n\t slash: {\n\t encodePath: addLeadingSlash,\n\t decodePath: addLeadingSlash\n\t }\n\t};\n\t\n\tvar createHashHistory = function createHashHistory() {\n\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t\n\t !_ExecutionEnvironment.canUseDOM ? false ? (0, _invariant2.default)(false, 'Hash history needs a DOM') : (0, _invariant2.default)(false) : void 0;\n\t\n\t var queryKey = options.queryKey;\n\t var hashType = options.hashType;\n\t\n\t\n\t false ? (0, _warning2.default)(queryKey !== false, 'Using { queryKey: false } no longer works. Instead, just don\\'t ' + 'use location state if you don\\'t want a key in your URL query string') : void 0;\n\t\n\t if (typeof queryKey !== 'string') queryKey = DefaultQueryKey;\n\t\n\t if (hashType == null) hashType = 'slash';\n\t\n\t if (!(hashType in HashPathCoders)) {\n\t false ? (0, _warning2.default)(false, 'Invalid hash type: %s', hashType) : void 0;\n\t\n\t hashType = 'slash';\n\t }\n\t\n\t var pathCoder = HashPathCoders[hashType];\n\t\n\t var getUserConfirmation = HashProtocol.getUserConfirmation;\n\t\n\t\n\t var getCurrentLocation = function getCurrentLocation() {\n\t return HashProtocol.getCurrentLocation(pathCoder, queryKey);\n\t };\n\t\n\t var pushLocation = function pushLocation(location) {\n\t return HashProtocol.pushLocation(location, pathCoder, queryKey);\n\t };\n\t\n\t var replaceLocation = function replaceLocation(location) {\n\t return HashProtocol.replaceLocation(location, pathCoder, queryKey);\n\t };\n\t\n\t var history = (0, _createHistory2.default)(_extends({\n\t getUserConfirmation: getUserConfirmation }, options, {\n\t getCurrentLocation: getCurrentLocation,\n\t pushLocation: pushLocation,\n\t replaceLocation: replaceLocation,\n\t go: HashProtocol.go\n\t }));\n\t\n\t var listenerCount = 0,\n\t stopListener = void 0;\n\t\n\t var startListener = function startListener(listener, before) {\n\t if (++listenerCount === 1) stopListener = HashProtocol.startListener(history.transitionTo, pathCoder, queryKey);\n\t\n\t var unlisten = before ? history.listenBefore(listener) : history.listen(listener);\n\t\n\t return function () {\n\t unlisten();\n\t\n\t if (--listenerCount === 0) stopListener();\n\t };\n\t };\n\t\n\t var listenBefore = function listenBefore(listener) {\n\t return startListener(listener, true);\n\t };\n\t\n\t var listen = function listen(listener) {\n\t return startListener(listener, false);\n\t };\n\t\n\t var goIsSupportedWithoutReload = (0, _DOMUtils.supportsGoWithoutReloadUsingHash)();\n\t\n\t var go = function go(n) {\n\t false ? (0, _warning2.default)(goIsSupportedWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n\t\n\t history.go(n);\n\t };\n\t\n\t var createHref = function createHref(path) {\n\t return '#' + pathCoder.encodePath(history.createHref(path));\n\t };\n\t\n\t return _extends({}, history, {\n\t listenBefore: listenBefore,\n\t listen: listen,\n\t go: go,\n\t createHref: createHref\n\t });\n\t};\n\t\n\texports.default = createHashHistory;\n\n/***/ },\n/* 263 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _warning = __webpack_require__(25);\n\t\n\tvar _warning2 = _interopRequireDefault(_warning);\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _LocationUtils = __webpack_require__(29);\n\t\n\tvar _PathUtils = __webpack_require__(23);\n\t\n\tvar _createHistory = __webpack_require__(68);\n\t\n\tvar _createHistory2 = _interopRequireDefault(_createHistory);\n\t\n\tvar _Actions = __webpack_require__(49);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar createStateStorage = function createStateStorage(entries) {\n\t return entries.filter(function (entry) {\n\t return entry.state;\n\t }).reduce(function (memo, entry) {\n\t memo[entry.key] = entry.state;\n\t return memo;\n\t }, {});\n\t};\n\t\n\tvar createMemoryHistory = function createMemoryHistory() {\n\t var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t\n\t if (Array.isArray(options)) {\n\t options = { entries: options };\n\t } else if (typeof options === 'string') {\n\t options = { entries: [options] };\n\t }\n\t\n\t var getCurrentLocation = function getCurrentLocation() {\n\t var entry = entries[current];\n\t var path = (0, _PathUtils.createPath)(entry);\n\t\n\t var key = void 0,\n\t state = void 0;\n\t if (entry.key) {\n\t key = entry.key;\n\t state = readState(key);\n\t }\n\t\n\t var init = (0, _PathUtils.parsePath)(path);\n\t\n\t return (0, _LocationUtils.createLocation)(_extends({}, init, { state: state }), undefined, key);\n\t };\n\t\n\t var canGo = function canGo(n) {\n\t var index = current + n;\n\t return index >= 0 && index < entries.length;\n\t };\n\t\n\t var go = function go(n) {\n\t if (!n) return;\n\t\n\t if (!canGo(n)) {\n\t false ? (0, _warning2.default)(false, 'Cannot go(%s) there is not enough history', n) : void 0;\n\t\n\t return;\n\t }\n\t\n\t current += n;\n\t var currentLocation = getCurrentLocation();\n\t\n\t // Change action to POP\n\t history.transitionTo(_extends({}, currentLocation, { action: _Actions.POP }));\n\t };\n\t\n\t var pushLocation = function pushLocation(location) {\n\t current += 1;\n\t\n\t if (current < entries.length) entries.splice(current);\n\t\n\t entries.push(location);\n\t\n\t saveState(location.key, location.state);\n\t };\n\t\n\t var replaceLocation = function replaceLocation(location) {\n\t entries[current] = location;\n\t saveState(location.key, location.state);\n\t };\n\t\n\t var history = (0, _createHistory2.default)(_extends({}, options, {\n\t getCurrentLocation: getCurrentLocation,\n\t pushLocation: pushLocation,\n\t replaceLocation: replaceLocation,\n\t go: go\n\t }));\n\t\n\t var _options = options;\n\t var entries = _options.entries;\n\t var current = _options.current;\n\t\n\t\n\t if (typeof entries === 'string') {\n\t entries = [entries];\n\t } else if (!Array.isArray(entries)) {\n\t entries = ['/'];\n\t }\n\t\n\t entries = entries.map(function (entry) {\n\t return (0, _LocationUtils.createLocation)(entry);\n\t });\n\t\n\t if (current == null) {\n\t current = entries.length - 1;\n\t } else {\n\t !(current >= 0 && current < entries.length) ? false ? (0, _invariant2.default)(false, 'Current index must be >= 0 and < %s, was %s', entries.length, current) : (0, _invariant2.default)(false) : void 0;\n\t }\n\t\n\t var storage = createStateStorage(entries);\n\t\n\t var saveState = function saveState(key, state) {\n\t return storage[key] = state;\n\t };\n\t\n\t var readState = function readState(key) {\n\t return storage[key];\n\t };\n\t\n\t return _extends({}, history, {\n\t canGo: canGo\n\t });\n\t};\n\t\n\texports.default = createMemoryHistory;\n\n/***/ },\n/* 264 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global, module) {/**\n\t * lodash (Custom Build) <https://lodash.com/>\n\t * Build: `lodash modularize exports=\"npm\" -o ./`\n\t * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n\t * Released under MIT license <https://lodash.com/license>\n\t * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n\t * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n\t */\n\t\n\t/** Used as the size to enable large array optimizations. */\n\tvar LARGE_ARRAY_SIZE = 200;\n\t\n\t/** Used to stand-in for `undefined` hash values. */\n\tvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\t\n\t/** Used to compose bitmasks for comparison styles. */\n\tvar UNORDERED_COMPARE_FLAG = 1,\n\t PARTIAL_COMPARE_FLAG = 2;\n\t\n\t/** Used as references for various `Number` constants. */\n\tvar MAX_SAFE_INTEGER = 9007199254740991;\n\t\n\t/** `Object#toString` result references. */\n\tvar argsTag = '[object Arguments]',\n\t arrayTag = '[object Array]',\n\t boolTag = '[object Boolean]',\n\t dateTag = '[object Date]',\n\t errorTag = '[object Error]',\n\t funcTag = '[object Function]',\n\t genTag = '[object GeneratorFunction]',\n\t mapTag = '[object Map]',\n\t numberTag = '[object Number]',\n\t objectTag = '[object Object]',\n\t promiseTag = '[object Promise]',\n\t regexpTag = '[object RegExp]',\n\t setTag = '[object Set]',\n\t stringTag = '[object String]',\n\t symbolTag = '[object Symbol]',\n\t weakMapTag = '[object WeakMap]';\n\t\n\tvar arrayBufferTag = '[object ArrayBuffer]',\n\t dataViewTag = '[object DataView]',\n\t float32Tag = '[object Float32Array]',\n\t float64Tag = '[object Float64Array]',\n\t int8Tag = '[object Int8Array]',\n\t int16Tag = '[object Int16Array]',\n\t int32Tag = '[object Int32Array]',\n\t uint8Tag = '[object Uint8Array]',\n\t uint8ClampedTag = '[object Uint8ClampedArray]',\n\t uint16Tag = '[object Uint16Array]',\n\t uint32Tag = '[object Uint32Array]';\n\t\n\t/**\n\t * Used to match `RegExp`\n\t * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n\t */\n\tvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\t\n\t/** Used to detect host constructors (Safari). */\n\tvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\t\n\t/** Used to detect unsigned integer values. */\n\tvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\t\n\t/** Used to identify `toStringTag` values of typed arrays. */\n\tvar typedArrayTags = {};\n\ttypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n\ttypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n\ttypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n\ttypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n\ttypedArrayTags[uint32Tag] = true;\n\ttypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n\ttypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n\ttypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n\ttypedArrayTags[errorTag] = typedArrayTags[funcTag] =\n\ttypedArrayTags[mapTag] = typedArrayTags[numberTag] =\n\ttypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n\ttypedArrayTags[setTag] = typedArrayTags[stringTag] =\n\ttypedArrayTags[weakMapTag] = false;\n\t\n\t/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\t\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\t\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\t\n\t/** Detect free variable `exports`. */\n\tvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\t\n\t/** Detect free variable `module`. */\n\tvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\t\n\t/** Detect the popular CommonJS extension `module.exports`. */\n\tvar moduleExports = freeModule && freeModule.exports === freeExports;\n\t\n\t/** Detect free variable `process` from Node.js. */\n\tvar freeProcess = moduleExports && freeGlobal.process;\n\t\n\t/** Used to access faster Node.js helpers. */\n\tvar nodeUtil = (function() {\n\t try {\n\t return freeProcess && freeProcess.binding('util');\n\t } catch (e) {}\n\t}());\n\t\n\t/* Node.js helper references. */\n\tvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\t\n\t/**\n\t * A specialized version of `_.some` for arrays without support for iteratee\n\t * shorthands.\n\t *\n\t * @private\n\t * @param {Array} [array] The array to iterate over.\n\t * @param {Function} predicate The function invoked per iteration.\n\t * @returns {boolean} Returns `true` if any element passes the predicate check,\n\t * else `false`.\n\t */\n\tfunction arraySome(array, predicate) {\n\t var index = -1,\n\t length = array ? array.length : 0;\n\t\n\t while (++index < length) {\n\t if (predicate(array[index], index, array)) {\n\t return true;\n\t }\n\t }\n\t return false;\n\t}\n\t\n\t/**\n\t * The base implementation of `_.times` without support for iteratee shorthands\n\t * or max array length checks.\n\t *\n\t * @private\n\t * @param {number} n The number of times to invoke `iteratee`.\n\t * @param {Function} iteratee The function invoked per iteration.\n\t * @returns {Array} Returns the array of results.\n\t */\n\tfunction baseTimes(n, iteratee) {\n\t var index = -1,\n\t result = Array(n);\n\t\n\t while (++index < n) {\n\t result[index] = iteratee(index);\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * The base implementation of `_.unary` without support for storing metadata.\n\t *\n\t * @private\n\t * @param {Function} func The function to cap arguments for.\n\t * @returns {Function} Returns the new capped function.\n\t */\n\tfunction baseUnary(func) {\n\t return function(value) {\n\t return func(value);\n\t };\n\t}\n\t\n\t/**\n\t * Gets the value at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} [object] The object to query.\n\t * @param {string} key The key of the property to get.\n\t * @returns {*} Returns the property value.\n\t */\n\tfunction getValue(object, key) {\n\t return object == null ? undefined : object[key];\n\t}\n\t\n\t/**\n\t * Checks if `value` is a host object in IE < 9.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n\t */\n\tfunction isHostObject(value) {\n\t // Many host objects are `Object` objects that can coerce to strings\n\t // despite having improperly defined `toString` methods.\n\t var result = false;\n\t if (value != null && typeof value.toString != 'function') {\n\t try {\n\t result = !!(value + '');\n\t } catch (e) {}\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * Converts `map` to its key-value pairs.\n\t *\n\t * @private\n\t * @param {Object} map The map to convert.\n\t * @returns {Array} Returns the key-value pairs.\n\t */\n\tfunction mapToArray(map) {\n\t var index = -1,\n\t result = Array(map.size);\n\t\n\t map.forEach(function(value, key) {\n\t result[++index] = [key, value];\n\t });\n\t return result;\n\t}\n\t\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\t\n\t/**\n\t * Converts `set` to an array of its values.\n\t *\n\t * @private\n\t * @param {Object} set The set to convert.\n\t * @returns {Array} Returns the values.\n\t */\n\tfunction setToArray(set) {\n\t var index = -1,\n\t result = Array(set.size);\n\t\n\t set.forEach(function(value) {\n\t result[++index] = value;\n\t });\n\t return result;\n\t}\n\t\n\t/** Used for built-in method references. */\n\tvar arrayProto = Array.prototype,\n\t funcProto = Function.prototype,\n\t objectProto = Object.prototype;\n\t\n\t/** Used to detect overreaching core-js shims. */\n\tvar coreJsData = root['__core-js_shared__'];\n\t\n\t/** Used to detect methods masquerading as native. */\n\tvar maskSrcKey = (function() {\n\t var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n\t return uid ? ('Symbol(src)_1.' + uid) : '';\n\t}());\n\t\n\t/** Used to resolve the decompiled source of functions. */\n\tvar funcToString = funcProto.toString;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar objectToString = objectProto.toString;\n\t\n\t/** Used to detect if a method is native. */\n\tvar reIsNative = RegExp('^' +\n\t funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n\t .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n\t);\n\t\n\t/** Built-in value references. */\n\tvar Symbol = root.Symbol,\n\t Uint8Array = root.Uint8Array,\n\t propertyIsEnumerable = objectProto.propertyIsEnumerable,\n\t splice = arrayProto.splice;\n\t\n\t/* Built-in method references for those with the same name as other `lodash` methods. */\n\tvar nativeKeys = overArg(Object.keys, Object);\n\t\n\t/* Built-in method references that are verified to be native. */\n\tvar DataView = getNative(root, 'DataView'),\n\t Map = getNative(root, 'Map'),\n\t Promise = getNative(root, 'Promise'),\n\t Set = getNative(root, 'Set'),\n\t WeakMap = getNative(root, 'WeakMap'),\n\t nativeCreate = getNative(Object, 'create');\n\t\n\t/** Used to detect maps, sets, and weakmaps. */\n\tvar dataViewCtorString = toSource(DataView),\n\t mapCtorString = toSource(Map),\n\t promiseCtorString = toSource(Promise),\n\t setCtorString = toSource(Set),\n\t weakMapCtorString = toSource(WeakMap);\n\t\n\t/** Used to convert symbols to primitives and strings. */\n\tvar symbolProto = Symbol ? Symbol.prototype : undefined,\n\t symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\t\n\t/**\n\t * Creates a hash object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Hash(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\t\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\t\n\t/**\n\t * Removes all key-value entries from the hash.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Hash\n\t */\n\tfunction hashClear() {\n\t this.__data__ = nativeCreate ? nativeCreate(null) : {};\n\t}\n\t\n\t/**\n\t * Removes `key` and its value from the hash.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Hash\n\t * @param {Object} hash The hash to modify.\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction hashDelete(key) {\n\t return this.has(key) && delete this.__data__[key];\n\t}\n\t\n\t/**\n\t * Gets the hash value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction hashGet(key) {\n\t var data = this.__data__;\n\t if (nativeCreate) {\n\t var result = data[key];\n\t return result === HASH_UNDEFINED ? undefined : result;\n\t }\n\t return hasOwnProperty.call(data, key) ? data[key] : undefined;\n\t}\n\t\n\t/**\n\t * Checks if a hash value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Hash\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction hashHas(key) {\n\t var data = this.__data__;\n\t return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n\t}\n\t\n\t/**\n\t * Sets the hash `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Hash\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the hash instance.\n\t */\n\tfunction hashSet(key, value) {\n\t var data = this.__data__;\n\t data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n\t return this;\n\t}\n\t\n\t// Add methods to `Hash`.\n\tHash.prototype.clear = hashClear;\n\tHash.prototype['delete'] = hashDelete;\n\tHash.prototype.get = hashGet;\n\tHash.prototype.has = hashHas;\n\tHash.prototype.set = hashSet;\n\t\n\t/**\n\t * Creates an list cache object.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction ListCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\t\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\t\n\t/**\n\t * Removes all key-value entries from the list cache.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf ListCache\n\t */\n\tfunction listCacheClear() {\n\t this.__data__ = [];\n\t}\n\t\n\t/**\n\t * Removes `key` and its value from the list cache.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction listCacheDelete(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\t\n\t if (index < 0) {\n\t return false;\n\t }\n\t var lastIndex = data.length - 1;\n\t if (index == lastIndex) {\n\t data.pop();\n\t } else {\n\t splice.call(data, index, 1);\n\t }\n\t return true;\n\t}\n\t\n\t/**\n\t * Gets the list cache value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction listCacheGet(key) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\t\n\t return index < 0 ? undefined : data[index][1];\n\t}\n\t\n\t/**\n\t * Checks if a list cache value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf ListCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction listCacheHas(key) {\n\t return assocIndexOf(this.__data__, key) > -1;\n\t}\n\t\n\t/**\n\t * Sets the list cache `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf ListCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the list cache instance.\n\t */\n\tfunction listCacheSet(key, value) {\n\t var data = this.__data__,\n\t index = assocIndexOf(data, key);\n\t\n\t if (index < 0) {\n\t data.push([key, value]);\n\t } else {\n\t data[index][1] = value;\n\t }\n\t return this;\n\t}\n\t\n\t// Add methods to `ListCache`.\n\tListCache.prototype.clear = listCacheClear;\n\tListCache.prototype['delete'] = listCacheDelete;\n\tListCache.prototype.get = listCacheGet;\n\tListCache.prototype.has = listCacheHas;\n\tListCache.prototype.set = listCacheSet;\n\t\n\t/**\n\t * Creates a map cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction MapCache(entries) {\n\t var index = -1,\n\t length = entries ? entries.length : 0;\n\t\n\t this.clear();\n\t while (++index < length) {\n\t var entry = entries[index];\n\t this.set(entry[0], entry[1]);\n\t }\n\t}\n\t\n\t/**\n\t * Removes all key-value entries from the map.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf MapCache\n\t */\n\tfunction mapCacheClear() {\n\t this.__data__ = {\n\t 'hash': new Hash,\n\t 'map': new (Map || ListCache),\n\t 'string': new Hash\n\t };\n\t}\n\t\n\t/**\n\t * Removes `key` and its value from the map.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction mapCacheDelete(key) {\n\t return getMapData(this, key)['delete'](key);\n\t}\n\t\n\t/**\n\t * Gets the map value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction mapCacheGet(key) {\n\t return getMapData(this, key).get(key);\n\t}\n\t\n\t/**\n\t * Checks if a map value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf MapCache\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction mapCacheHas(key) {\n\t return getMapData(this, key).has(key);\n\t}\n\t\n\t/**\n\t * Sets the map `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf MapCache\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the map cache instance.\n\t */\n\tfunction mapCacheSet(key, value) {\n\t getMapData(this, key).set(key, value);\n\t return this;\n\t}\n\t\n\t// Add methods to `MapCache`.\n\tMapCache.prototype.clear = mapCacheClear;\n\tMapCache.prototype['delete'] = mapCacheDelete;\n\tMapCache.prototype.get = mapCacheGet;\n\tMapCache.prototype.has = mapCacheHas;\n\tMapCache.prototype.set = mapCacheSet;\n\t\n\t/**\n\t *\n\t * Creates an array cache object to store unique values.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [values] The values to cache.\n\t */\n\tfunction SetCache(values) {\n\t var index = -1,\n\t length = values ? values.length : 0;\n\t\n\t this.__data__ = new MapCache;\n\t while (++index < length) {\n\t this.add(values[index]);\n\t }\n\t}\n\t\n\t/**\n\t * Adds `value` to the array cache.\n\t *\n\t * @private\n\t * @name add\n\t * @memberOf SetCache\n\t * @alias push\n\t * @param {*} value The value to cache.\n\t * @returns {Object} Returns the cache instance.\n\t */\n\tfunction setCacheAdd(value) {\n\t this.__data__.set(value, HASH_UNDEFINED);\n\t return this;\n\t}\n\t\n\t/**\n\t * Checks if `value` is in the array cache.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf SetCache\n\t * @param {*} value The value to search for.\n\t * @returns {number} Returns `true` if `value` is found, else `false`.\n\t */\n\tfunction setCacheHas(value) {\n\t return this.__data__.has(value);\n\t}\n\t\n\t// Add methods to `SetCache`.\n\tSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n\tSetCache.prototype.has = setCacheHas;\n\t\n\t/**\n\t * Creates a stack cache object to store key-value pairs.\n\t *\n\t * @private\n\t * @constructor\n\t * @param {Array} [entries] The key-value pairs to cache.\n\t */\n\tfunction Stack(entries) {\n\t this.__data__ = new ListCache(entries);\n\t}\n\t\n\t/**\n\t * Removes all key-value entries from the stack.\n\t *\n\t * @private\n\t * @name clear\n\t * @memberOf Stack\n\t */\n\tfunction stackClear() {\n\t this.__data__ = new ListCache;\n\t}\n\t\n\t/**\n\t * Removes `key` and its value from the stack.\n\t *\n\t * @private\n\t * @name delete\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to remove.\n\t * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n\t */\n\tfunction stackDelete(key) {\n\t return this.__data__['delete'](key);\n\t}\n\t\n\t/**\n\t * Gets the stack value for `key`.\n\t *\n\t * @private\n\t * @name get\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to get.\n\t * @returns {*} Returns the entry value.\n\t */\n\tfunction stackGet(key) {\n\t return this.__data__.get(key);\n\t}\n\t\n\t/**\n\t * Checks if a stack value for `key` exists.\n\t *\n\t * @private\n\t * @name has\n\t * @memberOf Stack\n\t * @param {string} key The key of the entry to check.\n\t * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n\t */\n\tfunction stackHas(key) {\n\t return this.__data__.has(key);\n\t}\n\t\n\t/**\n\t * Sets the stack `key` to `value`.\n\t *\n\t * @private\n\t * @name set\n\t * @memberOf Stack\n\t * @param {string} key The key of the value to set.\n\t * @param {*} value The value to set.\n\t * @returns {Object} Returns the stack cache instance.\n\t */\n\tfunction stackSet(key, value) {\n\t var cache = this.__data__;\n\t if (cache instanceof ListCache) {\n\t var pairs = cache.__data__;\n\t if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n\t pairs.push([key, value]);\n\t return this;\n\t }\n\t cache = this.__data__ = new MapCache(pairs);\n\t }\n\t cache.set(key, value);\n\t return this;\n\t}\n\t\n\t// Add methods to `Stack`.\n\tStack.prototype.clear = stackClear;\n\tStack.prototype['delete'] = stackDelete;\n\tStack.prototype.get = stackGet;\n\tStack.prototype.has = stackHas;\n\tStack.prototype.set = stackSet;\n\t\n\t/**\n\t * Creates an array of the enumerable property names of the array-like `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @param {boolean} inherited Specify returning inherited property names.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction arrayLikeKeys(value, inherited) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t // Safari 9 makes `arguments.length` enumerable in strict mode.\n\t var result = (isArray(value) || isArguments(value))\n\t ? baseTimes(value.length, String)\n\t : [];\n\t\n\t var length = result.length,\n\t skipIndexes = !!length;\n\t\n\t for (var key in value) {\n\t if ((inherited || hasOwnProperty.call(value, key)) &&\n\t !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * Gets the index at which the `key` is found in `array` of key-value pairs.\n\t *\n\t * @private\n\t * @param {Array} array The array to inspect.\n\t * @param {*} key The key to search for.\n\t * @returns {number} Returns the index of the matched value, else `-1`.\n\t */\n\tfunction assocIndexOf(array, key) {\n\t var length = array.length;\n\t while (length--) {\n\t if (eq(array[length][0], key)) {\n\t return length;\n\t }\n\t }\n\t return -1;\n\t}\n\t\n\t/**\n\t * The base implementation of `getTag`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t return objectToString.call(value);\n\t}\n\t\n\t/**\n\t * The base implementation of `_.isEqual` which supports partial comparisons\n\t * and tracks traversed objects.\n\t *\n\t * @private\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @param {Function} [customizer] The function to customize comparisons.\n\t * @param {boolean} [bitmask] The bitmask of comparison flags.\n\t * The bitmask may be composed of the following flags:\n\t * 1 - Unordered comparison\n\t * 2 - Partial comparison\n\t * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t */\n\tfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n\t if (value === other) {\n\t return true;\n\t }\n\t if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n\t return value !== value && other !== other;\n\t }\n\t return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n\t}\n\t\n\t/**\n\t * A specialized version of `baseIsEqual` for arrays and objects which performs\n\t * deep comparisons and tracks traversed objects enabling objects with circular\n\t * references to be compared.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} [customizer] The function to customize comparisons.\n\t * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n\t * for more details.\n\t * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\tfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n\t var objIsArr = isArray(object),\n\t othIsArr = isArray(other),\n\t objTag = arrayTag,\n\t othTag = arrayTag;\n\t\n\t if (!objIsArr) {\n\t objTag = getTag(object);\n\t objTag = objTag == argsTag ? objectTag : objTag;\n\t }\n\t if (!othIsArr) {\n\t othTag = getTag(other);\n\t othTag = othTag == argsTag ? objectTag : othTag;\n\t }\n\t var objIsObj = objTag == objectTag && !isHostObject(object),\n\t othIsObj = othTag == objectTag && !isHostObject(other),\n\t isSameTag = objTag == othTag;\n\t\n\t if (isSameTag && !objIsObj) {\n\t stack || (stack = new Stack);\n\t return (objIsArr || isTypedArray(object))\n\t ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n\t : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n\t }\n\t if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n\t var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n\t othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\t\n\t if (objIsWrapped || othIsWrapped) {\n\t var objUnwrapped = objIsWrapped ? object.value() : object,\n\t othUnwrapped = othIsWrapped ? other.value() : other;\n\t\n\t stack || (stack = new Stack);\n\t return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n\t }\n\t }\n\t if (!isSameTag) {\n\t return false;\n\t }\n\t stack || (stack = new Stack);\n\t return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n\t}\n\t\n\t/**\n\t * The base implementation of `_.isNative` without bad shim checks.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a native function,\n\t * else `false`.\n\t */\n\tfunction baseIsNative(value) {\n\t if (!isObject(value) || isMasked(value)) {\n\t return false;\n\t }\n\t var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n\t return pattern.test(toSource(value));\n\t}\n\t\n\t/**\n\t * The base implementation of `_.isTypedArray` without Node.js optimizations.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n\t */\n\tfunction baseIsTypedArray(value) {\n\t return isObjectLike(value) &&\n\t isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n\t}\n\t\n\t/**\n\t * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t */\n\tfunction baseKeys(object) {\n\t if (!isPrototype(object)) {\n\t return nativeKeys(object);\n\t }\n\t var result = [];\n\t for (var key in Object(object)) {\n\t if (hasOwnProperty.call(object, key) && key != 'constructor') {\n\t result.push(key);\n\t }\n\t }\n\t return result;\n\t}\n\t\n\t/**\n\t * A specialized version of `baseIsEqualDeep` for arrays with support for\n\t * partial deep comparisons.\n\t *\n\t * @private\n\t * @param {Array} array The array to compare.\n\t * @param {Array} other The other array to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n\t * for more details.\n\t * @param {Object} stack Tracks traversed `array` and `other` objects.\n\t * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n\t */\n\tfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n\t var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n\t arrLength = array.length,\n\t othLength = other.length;\n\t\n\t if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n\t return false;\n\t }\n\t // Assume cyclic values are equal.\n\t var stacked = stack.get(array);\n\t if (stacked && stack.get(other)) {\n\t return stacked == other;\n\t }\n\t var index = -1,\n\t result = true,\n\t seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\t\n\t stack.set(array, other);\n\t stack.set(other, array);\n\t\n\t // Ignore non-index properties.\n\t while (++index < arrLength) {\n\t var arrValue = array[index],\n\t othValue = other[index];\n\t\n\t if (customizer) {\n\t var compared = isPartial\n\t ? customizer(othValue, arrValue, index, other, array, stack)\n\t : customizer(arrValue, othValue, index, array, other, stack);\n\t }\n\t if (compared !== undefined) {\n\t if (compared) {\n\t continue;\n\t }\n\t result = false;\n\t break;\n\t }\n\t // Recursively compare arrays (susceptible to call stack limits).\n\t if (seen) {\n\t if (!arraySome(other, function(othValue, othIndex) {\n\t if (!seen.has(othIndex) &&\n\t (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n\t return seen.add(othIndex);\n\t }\n\t })) {\n\t result = false;\n\t break;\n\t }\n\t } else if (!(\n\t arrValue === othValue ||\n\t equalFunc(arrValue, othValue, customizer, bitmask, stack)\n\t )) {\n\t result = false;\n\t break;\n\t }\n\t }\n\t stack['delete'](array);\n\t stack['delete'](other);\n\t return result;\n\t}\n\t\n\t/**\n\t * A specialized version of `baseIsEqualDeep` for comparing objects of\n\t * the same `toStringTag`.\n\t *\n\t * **Note:** This function only supports comparing values with tags of\n\t * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {string} tag The `toStringTag` of the objects to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n\t * for more details.\n\t * @param {Object} stack Tracks traversed `object` and `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\tfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n\t switch (tag) {\n\t case dataViewTag:\n\t if ((object.byteLength != other.byteLength) ||\n\t (object.byteOffset != other.byteOffset)) {\n\t return false;\n\t }\n\t object = object.buffer;\n\t other = other.buffer;\n\t\n\t case arrayBufferTag:\n\t if ((object.byteLength != other.byteLength) ||\n\t !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n\t return false;\n\t }\n\t return true;\n\t\n\t case boolTag:\n\t case dateTag:\n\t case numberTag:\n\t // Coerce booleans to `1` or `0` and dates to milliseconds.\n\t // Invalid dates are coerced to `NaN`.\n\t return eq(+object, +other);\n\t\n\t case errorTag:\n\t return object.name == other.name && object.message == other.message;\n\t\n\t case regexpTag:\n\t case stringTag:\n\t // Coerce regexes to strings and treat strings, primitives and objects,\n\t // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n\t // for more details.\n\t return object == (other + '');\n\t\n\t case mapTag:\n\t var convert = mapToArray;\n\t\n\t case setTag:\n\t var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n\t convert || (convert = setToArray);\n\t\n\t if (object.size != other.size && !isPartial) {\n\t return false;\n\t }\n\t // Assume cyclic values are equal.\n\t var stacked = stack.get(object);\n\t if (stacked) {\n\t return stacked == other;\n\t }\n\t bitmask |= UNORDERED_COMPARE_FLAG;\n\t\n\t // Recursively compare objects (susceptible to call stack limits).\n\t stack.set(object, other);\n\t var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n\t stack['delete'](object);\n\t return result;\n\t\n\t case symbolTag:\n\t if (symbolValueOf) {\n\t return symbolValueOf.call(object) == symbolValueOf.call(other);\n\t }\n\t }\n\t return false;\n\t}\n\t\n\t/**\n\t * A specialized version of `baseIsEqualDeep` for objects with support for\n\t * partial deep comparisons.\n\t *\n\t * @private\n\t * @param {Object} object The object to compare.\n\t * @param {Object} other The other object to compare.\n\t * @param {Function} equalFunc The function to determine equivalents of values.\n\t * @param {Function} customizer The function to customize comparisons.\n\t * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n\t * for more details.\n\t * @param {Object} stack Tracks traversed `object` and `other` objects.\n\t * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n\t */\n\tfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n\t var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n\t objProps = keys(object),\n\t objLength = objProps.length,\n\t othProps = keys(other),\n\t othLength = othProps.length;\n\t\n\t if (objLength != othLength && !isPartial) {\n\t return false;\n\t }\n\t var index = objLength;\n\t while (index--) {\n\t var key = objProps[index];\n\t if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n\t return false;\n\t }\n\t }\n\t // Assume cyclic values are equal.\n\t var stacked = stack.get(object);\n\t if (stacked && stack.get(other)) {\n\t return stacked == other;\n\t }\n\t var result = true;\n\t stack.set(object, other);\n\t stack.set(other, object);\n\t\n\t var skipCtor = isPartial;\n\t while (++index < objLength) {\n\t key = objProps[index];\n\t var objValue = object[key],\n\t othValue = other[key];\n\t\n\t if (customizer) {\n\t var compared = isPartial\n\t ? customizer(othValue, objValue, key, other, object, stack)\n\t : customizer(objValue, othValue, key, object, other, stack);\n\t }\n\t // Recursively compare objects (susceptible to call stack limits).\n\t if (!(compared === undefined\n\t ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n\t : compared\n\t )) {\n\t result = false;\n\t break;\n\t }\n\t skipCtor || (skipCtor = key == 'constructor');\n\t }\n\t if (result && !skipCtor) {\n\t var objCtor = object.constructor,\n\t othCtor = other.constructor;\n\t\n\t // Non `Object` object instances with different constructors are not equal.\n\t if (objCtor != othCtor &&\n\t ('constructor' in object && 'constructor' in other) &&\n\t !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n\t typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n\t result = false;\n\t }\n\t }\n\t stack['delete'](object);\n\t stack['delete'](other);\n\t return result;\n\t}\n\t\n\t/**\n\t * Gets the data for `map`.\n\t *\n\t * @private\n\t * @param {Object} map The map to query.\n\t * @param {string} key The reference key.\n\t * @returns {*} Returns the map data.\n\t */\n\tfunction getMapData(map, key) {\n\t var data = map.__data__;\n\t return isKeyable(key)\n\t ? data[typeof key == 'string' ? 'string' : 'hash']\n\t : data.map;\n\t}\n\t\n\t/**\n\t * Gets the native function at `key` of `object`.\n\t *\n\t * @private\n\t * @param {Object} object The object to query.\n\t * @param {string} key The key of the method to get.\n\t * @returns {*} Returns the function if it's native, else `undefined`.\n\t */\n\tfunction getNative(object, key) {\n\t var value = getValue(object, key);\n\t return baseIsNative(value) ? value : undefined;\n\t}\n\t\n\t/**\n\t * Gets the `toStringTag` of `value`.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tvar getTag = baseGetTag;\n\t\n\t// Fallback for data views, maps, sets, and weak maps in IE 11,\n\t// for data views in Edge < 14, and promises in Node.js.\n\tif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n\t (Map && getTag(new Map) != mapTag) ||\n\t (Promise && getTag(Promise.resolve()) != promiseTag) ||\n\t (Set && getTag(new Set) != setTag) ||\n\t (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n\t getTag = function(value) {\n\t var result = objectToString.call(value),\n\t Ctor = result == objectTag ? value.constructor : undefined,\n\t ctorString = Ctor ? toSource(Ctor) : undefined;\n\t\n\t if (ctorString) {\n\t switch (ctorString) {\n\t case dataViewCtorString: return dataViewTag;\n\t case mapCtorString: return mapTag;\n\t case promiseCtorString: return promiseTag;\n\t case setCtorString: return setTag;\n\t case weakMapCtorString: return weakMapTag;\n\t }\n\t }\n\t return result;\n\t };\n\t}\n\t\n\t/**\n\t * Checks if `value` is a valid array-like index.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n\t * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n\t */\n\tfunction isIndex(value, length) {\n\t length = length == null ? MAX_SAFE_INTEGER : length;\n\t return !!length &&\n\t (typeof value == 'number' || reIsUint.test(value)) &&\n\t (value > -1 && value % 1 == 0 && value < length);\n\t}\n\t\n\t/**\n\t * Checks if `value` is suitable for use as unique object key.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n\t */\n\tfunction isKeyable(value) {\n\t var type = typeof value;\n\t return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n\t ? (value !== '__proto__')\n\t : (value === null);\n\t}\n\t\n\t/**\n\t * Checks if `func` has its source masked.\n\t *\n\t * @private\n\t * @param {Function} func The function to check.\n\t * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n\t */\n\tfunction isMasked(func) {\n\t return !!maskSrcKey && (maskSrcKey in func);\n\t}\n\t\n\t/**\n\t * Checks if `value` is likely a prototype object.\n\t *\n\t * @private\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n\t */\n\tfunction isPrototype(value) {\n\t var Ctor = value && value.constructor,\n\t proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\t\n\t return value === proto;\n\t}\n\t\n\t/**\n\t * Converts `func` to its source code.\n\t *\n\t * @private\n\t * @param {Function} func The function to process.\n\t * @returns {string} Returns the source code.\n\t */\n\tfunction toSource(func) {\n\t if (func != null) {\n\t try {\n\t return funcToString.call(func);\n\t } catch (e) {}\n\t try {\n\t return (func + '');\n\t } catch (e) {}\n\t }\n\t return '';\n\t}\n\t\n\t/**\n\t * Performs a\n\t * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n\t * comparison between two values to determine if they are equivalent.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.eq(object, object);\n\t * // => true\n\t *\n\t * _.eq(object, other);\n\t * // => false\n\t *\n\t * _.eq('a', 'a');\n\t * // => true\n\t *\n\t * _.eq('a', Object('a'));\n\t * // => false\n\t *\n\t * _.eq(NaN, NaN);\n\t * // => true\n\t */\n\tfunction eq(value, other) {\n\t return value === other || (value !== value && other !== other);\n\t}\n\t\n\t/**\n\t * Checks if `value` is likely an `arguments` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArguments(function() { return arguments; }());\n\t * // => true\n\t *\n\t * _.isArguments([1, 2, 3]);\n\t * // => false\n\t */\n\tfunction isArguments(value) {\n\t // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n\t return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n\t (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as an `Array` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n\t * @example\n\t *\n\t * _.isArray([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArray(document.body.children);\n\t * // => false\n\t *\n\t * _.isArray('abc');\n\t * // => false\n\t *\n\t * _.isArray(_.noop);\n\t * // => false\n\t */\n\tvar isArray = Array.isArray;\n\t\n\t/**\n\t * Checks if `value` is array-like. A value is considered array-like if it's\n\t * not a function and has a `value.length` that's an integer greater than or\n\t * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n\t * @example\n\t *\n\t * _.isArrayLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLike(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLike('abc');\n\t * // => true\n\t *\n\t * _.isArrayLike(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLike(value) {\n\t return value != null && isLength(value.length) && !isFunction(value);\n\t}\n\t\n\t/**\n\t * This method is like `_.isArrayLike` except that it also checks if `value`\n\t * is an object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an array-like object,\n\t * else `false`.\n\t * @example\n\t *\n\t * _.isArrayLikeObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject(document.body.children);\n\t * // => true\n\t *\n\t * _.isArrayLikeObject('abc');\n\t * // => false\n\t *\n\t * _.isArrayLikeObject(_.noop);\n\t * // => false\n\t */\n\tfunction isArrayLikeObject(value) {\n\t return isObjectLike(value) && isArrayLike(value);\n\t}\n\t\n\t/**\n\t * Performs a deep comparison between two values to determine if they are\n\t * equivalent.\n\t *\n\t * **Note:** This method supports comparing arrays, array buffers, booleans,\n\t * date objects, error objects, maps, numbers, `Object` objects, regexes,\n\t * sets, strings, symbols, and typed arrays. `Object` objects are compared\n\t * by their own, not inherited, enumerable properties. Functions and DOM\n\t * nodes are **not** supported.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to compare.\n\t * @param {*} other The other value to compare.\n\t * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n\t * @example\n\t *\n\t * var object = { 'a': 1 };\n\t * var other = { 'a': 1 };\n\t *\n\t * _.isEqual(object, other);\n\t * // => true\n\t *\n\t * object === other;\n\t * // => false\n\t */\n\tfunction isEqual(value, other) {\n\t return baseIsEqual(value, other);\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as a `Function` object.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n\t * @example\n\t *\n\t * _.isFunction(_);\n\t * // => true\n\t *\n\t * _.isFunction(/abc/);\n\t * // => false\n\t */\n\tfunction isFunction(value) {\n\t // The use of `Object#toString` avoids issues with the `typeof` operator\n\t // in Safari 8-9 which returns 'object' for typed array and other constructors.\n\t var tag = isObject(value) ? objectToString.call(value) : '';\n\t return tag == funcTag || tag == genTag;\n\t}\n\t\n\t/**\n\t * Checks if `value` is a valid array-like length.\n\t *\n\t * **Note:** This method is loosely based on\n\t * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n\t * @example\n\t *\n\t * _.isLength(3);\n\t * // => true\n\t *\n\t * _.isLength(Number.MIN_VALUE);\n\t * // => false\n\t *\n\t * _.isLength(Infinity);\n\t * // => false\n\t *\n\t * _.isLength('3');\n\t * // => false\n\t */\n\tfunction isLength(value) {\n\t return typeof value == 'number' &&\n\t value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n\t}\n\t\n\t/**\n\t * Checks if `value` is the\n\t * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n\t * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 0.1.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n\t * @example\n\t *\n\t * _.isObject({});\n\t * // => true\n\t *\n\t * _.isObject([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObject(_.noop);\n\t * // => true\n\t *\n\t * _.isObject(null);\n\t * // => false\n\t */\n\tfunction isObject(value) {\n\t var type = typeof value;\n\t return !!value && (type == 'object' || type == 'function');\n\t}\n\t\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return !!value && typeof value == 'object';\n\t}\n\t\n\t/**\n\t * Checks if `value` is classified as a typed array.\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 3.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n\t * @example\n\t *\n\t * _.isTypedArray(new Uint8Array);\n\t * // => true\n\t *\n\t * _.isTypedArray([]);\n\t * // => false\n\t */\n\tvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\t\n\t/**\n\t * Creates an array of the own enumerable property names of `object`.\n\t *\n\t * **Note:** Non-object values are coerced to objects. See the\n\t * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n\t * for more details.\n\t *\n\t * @static\n\t * @since 0.1.0\n\t * @memberOf _\n\t * @category Object\n\t * @param {Object} object The object to query.\n\t * @returns {Array} Returns the array of property names.\n\t * @example\n\t *\n\t * function Foo() {\n\t * this.a = 1;\n\t * this.b = 2;\n\t * }\n\t *\n\t * Foo.prototype.c = 3;\n\t *\n\t * _.keys(new Foo);\n\t * // => ['a', 'b'] (iteration order is not guaranteed)\n\t *\n\t * _.keys('hi');\n\t * // => ['0', '1']\n\t */\n\tfunction keys(object) {\n\t return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n\t}\n\t\n\tmodule.exports = isEqual;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(164)(module)))\n\n/***/ },\n/* 265 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(117),\n\t getRawTag = __webpack_require__(268),\n\t objectToString = __webpack_require__(269);\n\t\n\t/** `Object#toString` result references. */\n\tvar nullTag = '[object Null]',\n\t undefinedTag = '[object Undefined]';\n\t\n\t/** Built-in value references. */\n\tvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\t\n\t/**\n\t * The base implementation of `getTag` without fallbacks for buggy environments.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the `toStringTag`.\n\t */\n\tfunction baseGetTag(value) {\n\t if (value == null) {\n\t return value === undefined ? undefinedTag : nullTag;\n\t }\n\t value = Object(value);\n\t return (symToStringTag && symToStringTag in value)\n\t ? getRawTag(value)\n\t : objectToString(value);\n\t}\n\t\n\tmodule.exports = baseGetTag;\n\n\n/***/ },\n/* 266 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\n\tvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\t\n\tmodule.exports = freeGlobal;\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 267 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar overArg = __webpack_require__(270);\n\t\n\t/** Built-in value references. */\n\tvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\t\n\tmodule.exports = getPrototype;\n\n\n/***/ },\n/* 268 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar Symbol = __webpack_require__(117);\n\t\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/** Used to check objects for own properties. */\n\tvar hasOwnProperty = objectProto.hasOwnProperty;\n\t\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar nativeObjectToString = objectProto.toString;\n\t\n\t/** Built-in value references. */\n\tvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\t\n\t/**\n\t * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n\t *\n\t * @private\n\t * @param {*} value The value to query.\n\t * @returns {string} Returns the raw `toStringTag`.\n\t */\n\tfunction getRawTag(value) {\n\t var isOwn = hasOwnProperty.call(value, symToStringTag),\n\t tag = value[symToStringTag];\n\t\n\t try {\n\t value[symToStringTag] = undefined;\n\t var unmasked = true;\n\t } catch (e) {}\n\t\n\t var result = nativeObjectToString.call(value);\n\t if (unmasked) {\n\t if (isOwn) {\n\t value[symToStringTag] = tag;\n\t } else {\n\t delete value[symToStringTag];\n\t }\n\t }\n\t return result;\n\t}\n\t\n\tmodule.exports = getRawTag;\n\n\n/***/ },\n/* 269 */\n/***/ function(module, exports) {\n\n\t/** Used for built-in method references. */\n\tvar objectProto = Object.prototype;\n\t\n\t/**\n\t * Used to resolve the\n\t * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n\t * of values.\n\t */\n\tvar nativeObjectToString = objectProto.toString;\n\t\n\t/**\n\t * Converts `value` to a string using `Object.prototype.toString`.\n\t *\n\t * @private\n\t * @param {*} value The value to convert.\n\t * @returns {string} Returns the converted string.\n\t */\n\tfunction objectToString(value) {\n\t return nativeObjectToString.call(value);\n\t}\n\t\n\tmodule.exports = objectToString;\n\n\n/***/ },\n/* 270 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Creates a unary function that invokes `func` with its argument transformed.\n\t *\n\t * @private\n\t * @param {Function} func The function to wrap.\n\t * @param {Function} transform The argument transform.\n\t * @returns {Function} Returns the new function.\n\t */\n\tfunction overArg(func, transform) {\n\t return function(arg) {\n\t return func(transform(arg));\n\t };\n\t}\n\t\n\tmodule.exports = overArg;\n\n\n/***/ },\n/* 271 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar freeGlobal = __webpack_require__(266);\n\t\n\t/** Detect free variable `self`. */\n\tvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\t\n\t/** Used as a reference to the global object. */\n\tvar root = freeGlobal || freeSelf || Function('return this')();\n\t\n\tmodule.exports = root;\n\n\n/***/ },\n/* 272 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Checks if `value` is object-like. A value is object-like if it's not `null`\n\t * and has a `typeof` result of \"object\".\n\t *\n\t * @static\n\t * @memberOf _\n\t * @since 4.0.0\n\t * @category Lang\n\t * @param {*} value The value to check.\n\t * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n\t * @example\n\t *\n\t * _.isObjectLike({});\n\t * // => true\n\t *\n\t * _.isObjectLike([1, 2, 3]);\n\t * // => true\n\t *\n\t * _.isObjectLike(_.noop);\n\t * // => false\n\t *\n\t * _.isObjectLike(null);\n\t * // => false\n\t */\n\tfunction isObjectLike(value) {\n\t return value != null && typeof value == 'object';\n\t}\n\t\n\tmodule.exports = isObjectLike;\n\n\n/***/ },\n/* 273 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Helpers.\n\t */\n\t\n\tvar s = 1000\n\tvar m = s * 60\n\tvar h = m * 60\n\tvar d = h * 24\n\tvar y = d * 365.25\n\t\n\t/**\n\t * Parse or format the given `val`.\n\t *\n\t * Options:\n\t *\n\t * - `long` verbose formatting [false]\n\t *\n\t * @param {String|Number} val\n\t * @param {Object} options\n\t * @throws {Error} throw an error if val is not a non-empty string or a number\n\t * @return {String|Number}\n\t * @api public\n\t */\n\t\n\tmodule.exports = function (val, options) {\n\t options = options || {}\n\t var type = typeof val\n\t if (type === 'string' && val.length > 0) {\n\t return parse(val)\n\t } else if (type === 'number' && isNaN(val) === false) {\n\t return options.long ?\n\t\t\t\tfmtLong(val) :\n\t\t\t\tfmtShort(val)\n\t }\n\t throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val))\n\t}\n\t\n\t/**\n\t * Parse the given `str` and return milliseconds.\n\t *\n\t * @param {String} str\n\t * @return {Number}\n\t * @api private\n\t */\n\t\n\tfunction parse(str) {\n\t str = String(str)\n\t if (str.length > 10000) {\n\t return\n\t }\n\t var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str)\n\t if (!match) {\n\t return\n\t }\n\t var n = parseFloat(match[1])\n\t var type = (match[2] || 'ms').toLowerCase()\n\t switch (type) {\n\t case 'years':\n\t case 'year':\n\t case 'yrs':\n\t case 'yr':\n\t case 'y':\n\t return n * y\n\t case 'days':\n\t case 'day':\n\t case 'd':\n\t return n * d\n\t case 'hours':\n\t case 'hour':\n\t case 'hrs':\n\t case 'hr':\n\t case 'h':\n\t return n * h\n\t case 'minutes':\n\t case 'minute':\n\t case 'mins':\n\t case 'min':\n\t case 'm':\n\t return n * m\n\t case 'seconds':\n\t case 'second':\n\t case 'secs':\n\t case 'sec':\n\t case 's':\n\t return n * s\n\t case 'milliseconds':\n\t case 'millisecond':\n\t case 'msecs':\n\t case 'msec':\n\t case 'ms':\n\t return n\n\t default:\n\t return undefined\n\t }\n\t}\n\t\n\t/**\n\t * Short format for `ms`.\n\t *\n\t * @param {Number} ms\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tfunction fmtShort(ms) {\n\t if (ms >= d) {\n\t return Math.round(ms / d) + 'd'\n\t }\n\t if (ms >= h) {\n\t return Math.round(ms / h) + 'h'\n\t }\n\t if (ms >= m) {\n\t return Math.round(ms / m) + 'm'\n\t }\n\t if (ms >= s) {\n\t return Math.round(ms / s) + 's'\n\t }\n\t return ms + 'ms'\n\t}\n\t\n\t/**\n\t * Long format for `ms`.\n\t *\n\t * @param {Number} ms\n\t * @return {String}\n\t * @api private\n\t */\n\t\n\tfunction fmtLong(ms) {\n\t return plural(ms, d, 'day') ||\n\t plural(ms, h, 'hour') ||\n\t plural(ms, m, 'minute') ||\n\t plural(ms, s, 'second') ||\n\t ms + ' ms'\n\t}\n\t\n\t/**\n\t * Pluralization helper.\n\t */\n\t\n\tfunction plural(ms, n, name) {\n\t if (ms < n) {\n\t return\n\t }\n\t if (ms < n * 1.5) {\n\t return Math.floor(ms / n) + ' ' + name\n\t }\n\t return Math.ceil(ms / n) + ' ' + name + 's'\n\t}\n\n\n/***/ },\n/* 274 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\tvar strictUriEncode = __webpack_require__(426);\n\tvar objectAssign = __webpack_require__(6);\n\t\n\tfunction encode(value, opts) {\n\t\tif (opts.encode) {\n\t\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t\t}\n\t\n\t\treturn value;\n\t}\n\t\n\texports.extract = function (str) {\n\t\treturn str.split('?')[1] || '';\n\t};\n\t\n\texports.parse = function (str) {\n\t\t// Create an object with no prototype\n\t\t// https://github.com/sindresorhus/query-string/issues/47\n\t\tvar ret = Object.create(null);\n\t\n\t\tif (typeof str !== 'string') {\n\t\t\treturn ret;\n\t\t}\n\t\n\t\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\t\n\t\tif (!str) {\n\t\t\treturn ret;\n\t\t}\n\t\n\t\tstr.split('&').forEach(function (param) {\n\t\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\t\tvar key = parts.shift();\n\t\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\t\n\t\t\tkey = decodeURIComponent(key);\n\t\n\t\t\t// missing `=` should be `null`:\n\t\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\t\tval = val === undefined ? null : decodeURIComponent(val);\n\t\n\t\t\tif (ret[key] === undefined) {\n\t\t\t\tret[key] = val;\n\t\t\t} else if (Array.isArray(ret[key])) {\n\t\t\t\tret[key].push(val);\n\t\t\t} else {\n\t\t\t\tret[key] = [ret[key], val];\n\t\t\t}\n\t\t});\n\t\n\t\treturn ret;\n\t};\n\t\n\texports.stringify = function (obj, opts) {\n\t\tvar defaults = {\n\t\t\tencode: true,\n\t\t\tstrict: true\n\t\t};\n\t\n\t\topts = objectAssign(defaults, opts);\n\t\n\t\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\t\tvar val = obj[key];\n\t\n\t\t\tif (val === undefined) {\n\t\t\t\treturn '';\n\t\t\t}\n\t\n\t\t\tif (val === null) {\n\t\t\t\treturn encode(key, opts);\n\t\t\t}\n\t\n\t\t\tif (Array.isArray(val)) {\n\t\t\t\tvar result = [];\n\t\n\t\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif (val2 === null) {\n\t\t\t\t\t\tresult.push(encode(key, opts));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.push(encode(key, opts) + '=' + encode(val2, opts));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\n\t\t\t\treturn result.join('&');\n\t\t\t}\n\t\n\t\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t\t}).filter(function (x) {\n\t\t\treturn x.length > 0;\n\t\t}).join('&') : '';\n\t};\n\n\n/***/ },\n/* 275 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ARIADOMPropertyConfig = {\n\t Properties: {\n\t // Global States and Properties\n\t 'aria-current': 0, // state\n\t 'aria-details': 0,\n\t 'aria-disabled': 0, // state\n\t 'aria-hidden': 0, // state\n\t 'aria-invalid': 0, // state\n\t 'aria-keyshortcuts': 0,\n\t 'aria-label': 0,\n\t 'aria-roledescription': 0,\n\t // Widget Attributes\n\t 'aria-autocomplete': 0,\n\t 'aria-checked': 0,\n\t 'aria-expanded': 0,\n\t 'aria-haspopup': 0,\n\t 'aria-level': 0,\n\t 'aria-modal': 0,\n\t 'aria-multiline': 0,\n\t 'aria-multiselectable': 0,\n\t 'aria-orientation': 0,\n\t 'aria-placeholder': 0,\n\t 'aria-pressed': 0,\n\t 'aria-readonly': 0,\n\t 'aria-required': 0,\n\t 'aria-selected': 0,\n\t 'aria-sort': 0,\n\t 'aria-valuemax': 0,\n\t 'aria-valuemin': 0,\n\t 'aria-valuenow': 0,\n\t 'aria-valuetext': 0,\n\t // Live Region Attributes\n\t 'aria-atomic': 0,\n\t 'aria-busy': 0,\n\t 'aria-live': 0,\n\t 'aria-relevant': 0,\n\t // Drag-and-Drop Attributes\n\t 'aria-dropeffect': 0,\n\t 'aria-grabbed': 0,\n\t // Relationship Attributes\n\t 'aria-activedescendant': 0,\n\t 'aria-colcount': 0,\n\t 'aria-colindex': 0,\n\t 'aria-colspan': 0,\n\t 'aria-controls': 0,\n\t 'aria-describedby': 0,\n\t 'aria-errormessage': 0,\n\t 'aria-flowto': 0,\n\t 'aria-labelledby': 0,\n\t 'aria-owns': 0,\n\t 'aria-posinset': 0,\n\t 'aria-rowcount': 0,\n\t 'aria-rowindex': 0,\n\t 'aria-rowspan': 0,\n\t 'aria-setsize': 0\n\t },\n\t DOMAttributeNames: {},\n\t DOMPropertyNames: {}\n\t};\n\t\n\tmodule.exports = ARIADOMPropertyConfig;\n\n/***/ },\n/* 276 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\t\n\tvar focusNode = __webpack_require__(110);\n\t\n\tvar AutoFocusUtils = {\n\t focusDOMComponent: function () {\n\t focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n\t }\n\t};\n\t\n\tmodule.exports = AutoFocusUtils;\n\n/***/ },\n/* 277 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar EventPropagators = __webpack_require__(41);\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\tvar FallbackCompositionState = __webpack_require__(283);\n\tvar SyntheticCompositionEvent = __webpack_require__(320);\n\tvar SyntheticInputEvent = __webpack_require__(323);\n\t\n\tvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\n\tvar START_KEYCODE = 229;\n\t\n\tvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\t\n\tvar documentMode = null;\n\tif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n\t documentMode = document.documentMode;\n\t}\n\t\n\t// Webkit offers a very useful `textInput` event that can be used to\n\t// directly represent `beforeInput`. The IE `textinput` event is not as\n\t// useful, so we don't use it.\n\tvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\t\n\t// In IE9+, we have access to composition events, but the data supplied\n\t// by the native compositionend event may be incorrect. Japanese ideographic\n\t// spaces, for instance (\\u3000) are not recorded correctly.\n\tvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\t\n\t/**\n\t * Opera <= 12 includes TextEvent in window, but does not fire\n\t * text input events. Rely on keypress instead.\n\t */\n\tfunction isPresto() {\n\t var opera = window.opera;\n\t return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n\t}\n\t\n\tvar SPACEBAR_CODE = 32;\n\tvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\t\n\t// Events and their corresponding property names.\n\tvar eventTypes = {\n\t beforeInput: {\n\t phasedRegistrationNames: {\n\t bubbled: 'onBeforeInput',\n\t captured: 'onBeforeInputCapture'\n\t },\n\t dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n\t },\n\t compositionEnd: {\n\t phasedRegistrationNames: {\n\t bubbled: 'onCompositionEnd',\n\t captured: 'onCompositionEndCapture'\n\t },\n\t dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n\t },\n\t compositionStart: {\n\t phasedRegistrationNames: {\n\t bubbled: 'onCompositionStart',\n\t captured: 'onCompositionStartCapture'\n\t },\n\t dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n\t },\n\t compositionUpdate: {\n\t phasedRegistrationNames: {\n\t bubbled: 'onCompositionUpdate',\n\t captured: 'onCompositionUpdateCapture'\n\t },\n\t dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n\t }\n\t};\n\t\n\t// Track whether we've ever handled a keypress on the space key.\n\tvar hasSpaceKeypress = false;\n\t\n\t/**\n\t * Return whether a native keypress event is assumed to be a command.\n\t * This is required because Firefox fires `keypress` events for key commands\n\t * (cut, copy, select-all, etc.) even though no character is inserted.\n\t */\n\tfunction isKeypressCommand(nativeEvent) {\n\t return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n\t // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n\t !(nativeEvent.ctrlKey && nativeEvent.altKey);\n\t}\n\t\n\t/**\n\t * Translate native top level events into event types.\n\t *\n\t * @param {string} topLevelType\n\t * @return {object}\n\t */\n\tfunction getCompositionEventType(topLevelType) {\n\t switch (topLevelType) {\n\t case 'topCompositionStart':\n\t return eventTypes.compositionStart;\n\t case 'topCompositionEnd':\n\t return eventTypes.compositionEnd;\n\t case 'topCompositionUpdate':\n\t return eventTypes.compositionUpdate;\n\t }\n\t}\n\t\n\t/**\n\t * Does our fallback best-guess model think this event signifies that\n\t * composition has begun?\n\t *\n\t * @param {string} topLevelType\n\t * @param {object} nativeEvent\n\t * @return {boolean}\n\t */\n\tfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n\t return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n\t}\n\t\n\t/**\n\t * Does our fallback mode think that this event is the end of composition?\n\t *\n\t * @param {string} topLevelType\n\t * @param {object} nativeEvent\n\t * @return {boolean}\n\t */\n\tfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n\t switch (topLevelType) {\n\t case 'topKeyUp':\n\t // Command keys insert or clear IME input.\n\t return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n\t case 'topKeyDown':\n\t // Expect IME keyCode on each keydown. If we get any other\n\t // code we must have exited earlier.\n\t return nativeEvent.keyCode !== START_KEYCODE;\n\t case 'topKeyPress':\n\t case 'topMouseDown':\n\t case 'topBlur':\n\t // Events are not possible without cancelling IME.\n\t return true;\n\t default:\n\t return false;\n\t }\n\t}\n\t\n\t/**\n\t * Google Input Tools provides composition data via a CustomEvent,\n\t * with the `data` property populated in the `detail` object. If this\n\t * is available on the event object, use it. If not, this is a plain\n\t * composition event and we have nothing special to extract.\n\t *\n\t * @param {object} nativeEvent\n\t * @return {?string}\n\t */\n\tfunction getDataFromCustomEvent(nativeEvent) {\n\t var detail = nativeEvent.detail;\n\t if (typeof detail === 'object' && 'data' in detail) {\n\t return detail.data;\n\t }\n\t return null;\n\t}\n\t\n\t// Track the current IME composition fallback object, if any.\n\tvar currentComposition = null;\n\t\n\t/**\n\t * @return {?object} A SyntheticCompositionEvent.\n\t */\n\tfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n\t var eventType;\n\t var fallbackData;\n\t\n\t if (canUseCompositionEvent) {\n\t eventType = getCompositionEventType(topLevelType);\n\t } else if (!currentComposition) {\n\t if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n\t eventType = eventTypes.compositionStart;\n\t }\n\t } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n\t eventType = eventTypes.compositionEnd;\n\t }\n\t\n\t if (!eventType) {\n\t return null;\n\t }\n\t\n\t if (useFallbackCompositionData) {\n\t // The current composition is stored statically and must not be\n\t // overwritten while composition continues.\n\t if (!currentComposition && eventType === eventTypes.compositionStart) {\n\t currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n\t } else if (eventType === eventTypes.compositionEnd) {\n\t if (currentComposition) {\n\t fallbackData = currentComposition.getData();\n\t }\n\t }\n\t }\n\t\n\t var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\t\n\t if (fallbackData) {\n\t // Inject data generated from fallback path into the synthetic event.\n\t // This matches the property of native CompositionEventInterface.\n\t event.data = fallbackData;\n\t } else {\n\t var customData = getDataFromCustomEvent(nativeEvent);\n\t if (customData !== null) {\n\t event.data = customData;\n\t }\n\t }\n\t\n\t EventPropagators.accumulateTwoPhaseDispatches(event);\n\t return event;\n\t}\n\t\n\t/**\n\t * @param {string} topLevelType Record from `EventConstants`.\n\t * @param {object} nativeEvent Native browser event.\n\t * @return {?string} The string corresponding to this `beforeInput` event.\n\t */\n\tfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n\t switch (topLevelType) {\n\t case 'topCompositionEnd':\n\t return getDataFromCustomEvent(nativeEvent);\n\t case 'topKeyPress':\n\t /**\n\t * If native `textInput` events are available, our goal is to make\n\t * use of them. However, there is a special case: the spacebar key.\n\t * In Webkit, preventing default on a spacebar `textInput` event\n\t * cancels character insertion, but it *also* causes the browser\n\t * to fall back to its default spacebar behavior of scrolling the\n\t * page.\n\t *\n\t * Tracking at:\n\t * https://code.google.com/p/chromium/issues/detail?id=355103\n\t *\n\t * To avoid this issue, use the keypress event as if no `textInput`\n\t * event is available.\n\t */\n\t var which = nativeEvent.which;\n\t if (which !== SPACEBAR_CODE) {\n\t return null;\n\t }\n\t\n\t hasSpaceKeypress = true;\n\t return SPACEBAR_CHAR;\n\t\n\t case 'topTextInput':\n\t // Record the characters to be added to the DOM.\n\t var chars = nativeEvent.data;\n\t\n\t // If it's a spacebar character, assume that we have already handled\n\t // it at the keypress level and bail immediately. Android Chrome\n\t // doesn't give us keycodes, so we need to blacklist it.\n\t if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n\t return null;\n\t }\n\t\n\t return chars;\n\t\n\t default:\n\t // For other native event types, do nothing.\n\t return null;\n\t }\n\t}\n\t\n\t/**\n\t * For browsers that do not provide the `textInput` event, extract the\n\t * appropriate string to use for SyntheticInputEvent.\n\t *\n\t * @param {string} topLevelType Record from `EventConstants`.\n\t * @param {object} nativeEvent Native browser event.\n\t * @return {?string} The fallback string for this `beforeInput` event.\n\t */\n\tfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n\t // If we are currently composing (IME) and using a fallback to do so,\n\t // try to extract the composed characters from the fallback object.\n\t // If composition event is available, we extract a string only at\n\t // compositionevent, otherwise extract it at fallback events.\n\t if (currentComposition) {\n\t if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n\t var chars = currentComposition.getData();\n\t FallbackCompositionState.release(currentComposition);\n\t currentComposition = null;\n\t return chars;\n\t }\n\t return null;\n\t }\n\t\n\t switch (topLevelType) {\n\t case 'topPaste':\n\t // If a paste event occurs after a keypress, throw out the input\n\t // chars. Paste events should not lead to BeforeInput events.\n\t return null;\n\t case 'topKeyPress':\n\t /**\n\t * As of v27, Firefox may fire keypress events even when no character\n\t * will be inserted. A few possibilities:\n\t *\n\t * - `which` is `0`. Arrow keys, Esc key, etc.\n\t *\n\t * - `which` is the pressed key code, but no char is available.\n\t * Ex: 'AltGr + d` in Polish. There is no modified character for\n\t * this key combination and no character is inserted into the\n\t * document, but FF fires the keypress for char code `100` anyway.\n\t * No `input` event will occur.\n\t *\n\t * - `which` is the pressed key code, but a command combination is\n\t * being used. Ex: `Cmd+C`. No character is inserted, and no\n\t * `input` event will occur.\n\t */\n\t if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n\t return String.fromCharCode(nativeEvent.which);\n\t }\n\t return null;\n\t case 'topCompositionEnd':\n\t return useFallbackCompositionData ? null : nativeEvent.data;\n\t default:\n\t return null;\n\t }\n\t}\n\t\n\t/**\n\t * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n\t * `textInput` or fallback behavior.\n\t *\n\t * @return {?object} A SyntheticInputEvent.\n\t */\n\tfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n\t var chars;\n\t\n\t if (canUseTextInputEvent) {\n\t chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n\t } else {\n\t chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n\t }\n\t\n\t // If no characters are being inserted, no BeforeInput event should\n\t // be fired.\n\t if (!chars) {\n\t return null;\n\t }\n\t\n\t var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\t\n\t event.data = chars;\n\t EventPropagators.accumulateTwoPhaseDispatches(event);\n\t return event;\n\t}\n\t\n\t/**\n\t * Create an `onBeforeInput` event to match\n\t * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n\t *\n\t * This event plugin is based on the native `textInput` event\n\t * available in Chrome, Safari, Opera, and IE. This event fires after\n\t * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n\t *\n\t * `beforeInput` is spec'd but not implemented in any browsers, and\n\t * the `input` event does not provide any useful information about what has\n\t * actually been added, contrary to the spec. Thus, `textInput` is the best\n\t * available event to identify the characters that have actually been inserted\n\t * into the target node.\n\t *\n\t * This plugin is also responsible for emitting `composition` events, thus\n\t * allowing us to share composition fallback code for both `beforeInput` and\n\t * `composition` event types.\n\t */\n\tvar BeforeInputEventPlugin = {\n\t\n\t eventTypes: eventTypes,\n\t\n\t extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n\t return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n\t }\n\t};\n\t\n\tmodule.exports = BeforeInputEventPlugin;\n\n/***/ },\n/* 278 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar CSSProperty = __webpack_require__(118);\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\tvar ReactInstrumentation = __webpack_require__(18);\n\t\n\tvar camelizeStyleName = __webpack_require__(247);\n\tvar dangerousStyleValue = __webpack_require__(329);\n\tvar hyphenateStyleName = __webpack_require__(254);\n\tvar memoizeStringOnly = __webpack_require__(257);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar processStyleName = memoizeStringOnly(function (styleName) {\n\t return hyphenateStyleName(styleName);\n\t});\n\t\n\tvar hasShorthandPropertyBug = false;\n\tvar styleFloatAccessor = 'cssFloat';\n\tif (ExecutionEnvironment.canUseDOM) {\n\t var tempStyle = document.createElement('div').style;\n\t try {\n\t // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n\t tempStyle.font = '';\n\t } catch (e) {\n\t hasShorthandPropertyBug = true;\n\t }\n\t // IE8 only supports accessing cssFloat (standard) as styleFloat\n\t if (document.documentElement.style.cssFloat === undefined) {\n\t styleFloatAccessor = 'styleFloat';\n\t }\n\t}\n\t\n\tif (false) {\n\t // 'msTransform' is correct, but the other prefixes should be capitalized\n\t var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\t\n\t // style values shouldn't contain a semicolon\n\t var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\t\n\t var warnedStyleNames = {};\n\t var warnedStyleValues = {};\n\t var warnedForNaNValue = false;\n\t\n\t var warnHyphenatedStyleName = function (name, owner) {\n\t if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n\t return;\n\t }\n\t\n\t warnedStyleNames[name] = true;\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n\t };\n\t\n\t var warnBadVendoredStyleName = function (name, owner) {\n\t if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n\t return;\n\t }\n\t\n\t warnedStyleNames[name] = true;\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n\t };\n\t\n\t var warnStyleValueWithSemicolon = function (name, value, owner) {\n\t if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n\t return;\n\t }\n\t\n\t warnedStyleValues[value] = true;\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\\'t contain a semicolon.%s ' + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n\t };\n\t\n\t var warnStyleValueIsNaN = function (name, value, owner) {\n\t if (warnedForNaNValue) {\n\t return;\n\t }\n\t\n\t warnedForNaNValue = true;\n\t process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n\t };\n\t\n\t var checkRenderMessage = function (owner) {\n\t if (owner) {\n\t var name = owner.getName();\n\t if (name) {\n\t return ' Check the render method of `' + name + '`.';\n\t }\n\t }\n\t return '';\n\t };\n\t\n\t /**\n\t * @param {string} name\n\t * @param {*} value\n\t * @param {ReactDOMComponent} component\n\t */\n\t var warnValidStyle = function (name, value, component) {\n\t var owner;\n\t if (component) {\n\t owner = component._currentElement._owner;\n\t }\n\t if (name.indexOf('-') > -1) {\n\t warnHyphenatedStyleName(name, owner);\n\t } else if (badVendoredStyleNamePattern.test(name)) {\n\t warnBadVendoredStyleName(name, owner);\n\t } else if (badStyleValueWithSemicolonPattern.test(value)) {\n\t warnStyleValueWithSemicolon(name, value, owner);\n\t }\n\t\n\t if (typeof value === 'number' && isNaN(value)) {\n\t warnStyleValueIsNaN(name, value, owner);\n\t }\n\t };\n\t}\n\t\n\t/**\n\t * Operations for dealing with CSS properties.\n\t */\n\tvar CSSPropertyOperations = {\n\t\n\t /**\n\t * Serializes a mapping of style properties for use as inline styles:\n\t *\n\t * > createMarkupForStyles({width: '200px', height: 0})\n\t * \"width:200px;height:0;\"\n\t *\n\t * Undefined values are ignored so that declarative programming is easier.\n\t * The result should be HTML-escaped before insertion into the DOM.\n\t *\n\t * @param {object} styles\n\t * @param {ReactDOMComponent} component\n\t * @return {?string}\n\t */\n\t createMarkupForStyles: function (styles, component) {\n\t var serialized = '';\n\t for (var styleName in styles) {\n\t if (!styles.hasOwnProperty(styleName)) {\n\t continue;\n\t }\n\t var styleValue = styles[styleName];\n\t if (false) {\n\t warnValidStyle(styleName, styleValue, component);\n\t }\n\t if (styleValue != null) {\n\t serialized += processStyleName(styleName) + ':';\n\t serialized += dangerousStyleValue(styleName, styleValue, component) + ';';\n\t }\n\t }\n\t return serialized || null;\n\t },\n\t\n\t /**\n\t * Sets the value for multiple styles on a node. If a value is specified as\n\t * '' (empty string), the corresponding style property will be unset.\n\t *\n\t * @param {DOMElement} node\n\t * @param {object} styles\n\t * @param {ReactDOMComponent} component\n\t */\n\t setValueForStyles: function (node, styles, component) {\n\t if (false) {\n\t ReactInstrumentation.debugTool.onHostOperation({\n\t instanceID: component._debugID,\n\t type: 'update styles',\n\t payload: styles\n\t });\n\t }\n\t\n\t var style = node.style;\n\t for (var styleName in styles) {\n\t if (!styles.hasOwnProperty(styleName)) {\n\t continue;\n\t }\n\t if (false) {\n\t warnValidStyle(styleName, styles[styleName], component);\n\t }\n\t var styleValue = dangerousStyleValue(styleName, styles[styleName], component);\n\t if (styleName === 'float' || styleName === 'cssFloat') {\n\t styleName = styleFloatAccessor;\n\t }\n\t if (styleValue) {\n\t style[styleName] = styleValue;\n\t } else {\n\t var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n\t if (expansion) {\n\t // Shorthand property that IE8 won't like unsetting, so unset each\n\t // component to placate it\n\t for (var individualStyleName in expansion) {\n\t style[individualStyleName] = '';\n\t }\n\t } else {\n\t style[styleName] = '';\n\t }\n\t }\n\t }\n\t }\n\t\n\t};\n\t\n\tmodule.exports = CSSPropertyOperations;\n\n/***/ },\n/* 279 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar EventPluginHub = __webpack_require__(40);\n\tvar EventPropagators = __webpack_require__(41);\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactUpdates = __webpack_require__(19);\n\tvar SyntheticEvent = __webpack_require__(20);\n\t\n\tvar getEventTarget = __webpack_require__(84);\n\tvar isEventSupported = __webpack_require__(85);\n\tvar isTextInputElement = __webpack_require__(135);\n\t\n\tvar eventTypes = {\n\t change: {\n\t phasedRegistrationNames: {\n\t bubbled: 'onChange',\n\t captured: 'onChangeCapture'\n\t },\n\t dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n\t }\n\t};\n\t\n\t/**\n\t * For IE shims\n\t */\n\tvar activeElement = null;\n\tvar activeElementInst = null;\n\tvar activeElementValue = null;\n\tvar activeElementValueProp = null;\n\t\n\t/**\n\t * SECTION: handle `change` event\n\t */\n\tfunction shouldUseChangeEvent(elem) {\n\t var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n\t return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n\t}\n\t\n\tvar doesChangeEventBubble = false;\n\tif (ExecutionEnvironment.canUseDOM) {\n\t // See `handleChange` comment below\n\t doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n\t}\n\t\n\tfunction manualDispatchChangeEvent(nativeEvent) {\n\t var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n\t EventPropagators.accumulateTwoPhaseDispatches(event);\n\t\n\t // If change and propertychange bubbled, we'd just bind to it like all the\n\t // other events and have it go through ReactBrowserEventEmitter. Since it\n\t // doesn't, we manually listen for the events and so we have to enqueue and\n\t // process the abstract event manually.\n\t //\n\t // Batching is necessary here in order to ensure that all event handlers run\n\t // before the next rerender (including event handlers attached to ancestor\n\t // elements instead of directly on the input). Without this, controlled\n\t // components don't work properly in conjunction with event bubbling because\n\t // the component is rerendered and the value reverted before all the event\n\t // handlers can run. See https://github.com/facebook/react/issues/708.\n\t ReactUpdates.batchedUpdates(runEventInBatch, event);\n\t}\n\t\n\tfunction runEventInBatch(event) {\n\t EventPluginHub.enqueueEvents(event);\n\t EventPluginHub.processEventQueue(false);\n\t}\n\t\n\tfunction startWatchingForChangeEventIE8(target, targetInst) {\n\t activeElement = target;\n\t activeElementInst = targetInst;\n\t activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n\t}\n\t\n\tfunction stopWatchingForChangeEventIE8() {\n\t if (!activeElement) {\n\t return;\n\t }\n\t activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n\t activeElement = null;\n\t activeElementInst = null;\n\t}\n\t\n\tfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n\t if (topLevelType === 'topChange') {\n\t return targetInst;\n\t }\n\t}\n\tfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n\t if (topLevelType === 'topFocus') {\n\t // stopWatching() should be a noop here but we call it just in case we\n\t // missed a blur event somehow.\n\t stopWatchingForChangeEventIE8();\n\t startWatchingForChangeEventIE8(target, targetInst);\n\t } else if (topLevelType === 'topBlur') {\n\t stopWatchingForChangeEventIE8();\n\t }\n\t}\n\t\n\t/**\n\t * SECTION: handle `input` event\n\t */\n\tvar isInputEventSupported = false;\n\tif (ExecutionEnvironment.canUseDOM) {\n\t // IE9 claims to support the input event but fails to trigger it when\n\t // deleting text, so we ignore its input events.\n\t // IE10+ fire input events to often, such when a placeholder\n\t // changes or when an input with a placeholder is focused.\n\t isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);\n\t}\n\t\n\t/**\n\t * (For IE <=11) Replacement getter/setter for the `value` property that gets\n\t * set on the active element.\n\t */\n\tvar newValueProp = {\n\t get: function () {\n\t return activeElementValueProp.get.call(this);\n\t },\n\t set: function (val) {\n\t // Cast to a string so we can do equality checks.\n\t activeElementValue = '' + val;\n\t activeElementValueProp.set.call(this, val);\n\t }\n\t};\n\t\n\t/**\n\t * (For IE <=11) Starts tracking propertychange events on the passed-in element\n\t * and override the value property so that we can distinguish user events from\n\t * value changes in JS.\n\t */\n\tfunction startWatchingForValueChange(target, targetInst) {\n\t activeElement = target;\n\t activeElementInst = targetInst;\n\t activeElementValue = target.value;\n\t activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');\n\t\n\t // Not guarded in a canDefineProperty check: IE8 supports defineProperty only\n\t // on DOM elements\n\t Object.defineProperty(activeElement, 'value', newValueProp);\n\t if (activeElement.attachEvent) {\n\t activeElement.attachEvent('onpropertychange', handlePropertyChange);\n\t } else {\n\t activeElement.addEventListener('propertychange', handlePropertyChange, false);\n\t }\n\t}\n\t\n\t/**\n\t * (For IE <=11) Removes the event listeners from the currently-tracked element,\n\t * if any exists.\n\t */\n\tfunction stopWatchingForValueChange() {\n\t if (!activeElement) {\n\t return;\n\t }\n\t\n\t // delete restores the original property definition\n\t delete activeElement.value;\n\t\n\t if (activeElement.detachEvent) {\n\t activeElement.detachEvent('onpropertychange', handlePropertyChange);\n\t } else {\n\t activeElement.removeEventListener('propertychange', handlePropertyChange, false);\n\t }\n\t\n\t activeElement = null;\n\t activeElementInst = null;\n\t activeElementValue = null;\n\t activeElementValueProp = null;\n\t}\n\t\n\t/**\n\t * (For IE <=11) Handles a propertychange event, sending a `change` event if\n\t * the value of the active element has changed.\n\t */\n\tfunction handlePropertyChange(nativeEvent) {\n\t if (nativeEvent.propertyName !== 'value') {\n\t return;\n\t }\n\t var value = nativeEvent.srcElement.value;\n\t if (value === activeElementValue) {\n\t return;\n\t }\n\t activeElementValue = value;\n\t\n\t manualDispatchChangeEvent(nativeEvent);\n\t}\n\t\n\t/**\n\t * If a `change` event should be fired, returns the target's ID.\n\t */\n\tfunction getTargetInstForInputEvent(topLevelType, targetInst) {\n\t if (topLevelType === 'topInput') {\n\t // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n\t // what we want so fall through here and trigger an abstract event\n\t return targetInst;\n\t }\n\t}\n\t\n\tfunction handleEventsForInputEventIE(topLevelType, target, targetInst) {\n\t if (topLevelType === 'topFocus') {\n\t // In IE8, we can capture almost all .value changes by adding a\n\t // propertychange handler and looking for events with propertyName\n\t // equal to 'value'\n\t // In IE9-11, propertychange fires for most input events but is buggy and\n\t // doesn't fire when text is deleted, but conveniently, selectionchange\n\t // appears to fire in all of the remaining cases so we catch those and\n\t // forward the event if the value has changed\n\t // In either case, we don't want to call the event handler if the value\n\t // is changed from JS so we redefine a setter for `.value` that updates\n\t // our activeElementValue variable, allowing us to ignore those changes\n\t //\n\t // stopWatching() should be a noop here but we call it just in case we\n\t // missed a blur event somehow.\n\t stopWatchingForValueChange();\n\t startWatchingForValueChange(target, targetInst);\n\t } else if (topLevelType === 'topBlur') {\n\t stopWatchingForValueChange();\n\t }\n\t}\n\t\n\t// For IE8 and IE9.\n\tfunction getTargetInstForInputEventIE(topLevelType, targetInst) {\n\t if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n\t // On the selectionchange event, the target is just document which isn't\n\t // helpful for us so just check activeElement instead.\n\t //\n\t // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n\t // propertychange on the first input event after setting `value` from a\n\t // script and fires only keydown, keypress, keyup. Catching keyup usually\n\t // gets it and catching keydown lets us fire an event for the first\n\t // keystroke if user does a key repeat (it'll be a little delayed: right\n\t // before the second keystroke). Other input methods (e.g., paste) seem to\n\t // fire selectionchange normally.\n\t if (activeElement && activeElement.value !== activeElementValue) {\n\t activeElementValue = activeElement.value;\n\t return activeElementInst;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * SECTION: handle `click` event\n\t */\n\tfunction shouldUseClickEvent(elem) {\n\t // Use the `click` event to detect changes to checkbox and radio inputs.\n\t // This approach works across all browsers, whereas `change` does not fire\n\t // until `blur` in IE8.\n\t return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n\t}\n\t\n\tfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n\t if (topLevelType === 'topClick') {\n\t return targetInst;\n\t }\n\t}\n\t\n\t/**\n\t * This plugin creates an `onChange` event that normalizes change events\n\t * across form elements. This event fires at a time when it's possible to\n\t * change the element's value without seeing a flicker.\n\t *\n\t * Supported elements are:\n\t * - input (see `isTextInputElement`)\n\t * - textarea\n\t * - select\n\t */\n\tvar ChangeEventPlugin = {\n\t\n\t eventTypes: eventTypes,\n\t\n\t extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n\t var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\t\n\t var getTargetInstFunc, handleEventFunc;\n\t if (shouldUseChangeEvent(targetNode)) {\n\t if (doesChangeEventBubble) {\n\t getTargetInstFunc = getTargetInstForChangeEvent;\n\t } else {\n\t handleEventFunc = handleEventsForChangeEventIE8;\n\t }\n\t } else if (isTextInputElement(targetNode)) {\n\t if (isInputEventSupported) {\n\t getTargetInstFunc = getTargetInstForInputEvent;\n\t } else {\n\t getTargetInstFunc = getTargetInstForInputEventIE;\n\t handleEventFunc = handleEventsForInputEventIE;\n\t }\n\t } else if (shouldUseClickEvent(targetNode)) {\n\t getTargetInstFunc = getTargetInstForClickEvent;\n\t }\n\t\n\t if (getTargetInstFunc) {\n\t var inst = getTargetInstFunc(topLevelType, targetInst);\n\t if (inst) {\n\t var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);\n\t event.type = 'change';\n\t EventPropagators.accumulateTwoPhaseDispatches(event);\n\t return event;\n\t }\n\t }\n\t\n\t if (handleEventFunc) {\n\t handleEventFunc(topLevelType, targetNode, targetInst);\n\t }\n\t }\n\t\n\t};\n\t\n\tmodule.exports = ChangeEventPlugin;\n\n/***/ },\n/* 280 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar DOMLazyTree = __webpack_require__(30);\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\t\n\tvar createNodesFromMarkup = __webpack_require__(250);\n\tvar emptyFunction = __webpack_require__(16);\n\tvar invariant = __webpack_require__(3);\n\t\n\tvar Danger = {\n\t\n\t /**\n\t * Replaces a node with a string of markup at its current position within its\n\t * parent. The markup must render into a single root node.\n\t *\n\t * @param {DOMElement} oldChild Child node to replace.\n\t * @param {string} markup Markup to render in place of the child node.\n\t * @internal\n\t */\n\t dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n\t !ExecutionEnvironment.canUseDOM ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n\t !markup ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n\t !(oldChild.nodeName !== 'HTML') ? false ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\t\n\t if (typeof markup === 'string') {\n\t var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n\t oldChild.parentNode.replaceChild(newChild, oldChild);\n\t } else {\n\t DOMLazyTree.replaceChildWithTree(oldChild, markup);\n\t }\n\t }\n\t\n\t};\n\t\n\tmodule.exports = Danger;\n\n/***/ },\n/* 281 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Module that is injectable into `EventPluginHub`, that specifies a\n\t * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n\t * plugins, without having to package every one of them. This is better than\n\t * having plugins be ordered in the same order that they are injected because\n\t * that ordering would be influenced by the packaging order.\n\t * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n\t * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n\t */\n\t\n\tvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\t\n\tmodule.exports = DefaultEventPluginOrder;\n\n/***/ },\n/* 282 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar EventPropagators = __webpack_require__(41);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar SyntheticMouseEvent = __webpack_require__(52);\n\t\n\tvar eventTypes = {\n\t mouseEnter: {\n\t registrationName: 'onMouseEnter',\n\t dependencies: ['topMouseOut', 'topMouseOver']\n\t },\n\t mouseLeave: {\n\t registrationName: 'onMouseLeave',\n\t dependencies: ['topMouseOut', 'topMouseOver']\n\t }\n\t};\n\t\n\tvar EnterLeaveEventPlugin = {\n\t\n\t eventTypes: eventTypes,\n\t\n\t /**\n\t * For almost every interaction we care about, there will be both a top-level\n\t * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n\t * we do not extract duplicate events. However, moving the mouse into the\n\t * browser from outside will not fire a `mouseout` event. In this case, we use\n\t * the `mouseover` top-level event.\n\t */\n\t extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n\t if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n\t return null;\n\t }\n\t if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n\t // Must not be a mouse in or mouse out - ignoring.\n\t return null;\n\t }\n\t\n\t var win;\n\t if (nativeEventTarget.window === nativeEventTarget) {\n\t // `nativeEventTarget` is probably a window object.\n\t win = nativeEventTarget;\n\t } else {\n\t // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n\t var doc = nativeEventTarget.ownerDocument;\n\t if (doc) {\n\t win = doc.defaultView || doc.parentWindow;\n\t } else {\n\t win = window;\n\t }\n\t }\n\t\n\t var from;\n\t var to;\n\t if (topLevelType === 'topMouseOut') {\n\t from = targetInst;\n\t var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n\t to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n\t } else {\n\t // Moving to a node from outside the window.\n\t from = null;\n\t to = targetInst;\n\t }\n\t\n\t if (from === to) {\n\t // Nothing pertains to our managed components.\n\t return null;\n\t }\n\t\n\t var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n\t var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\t\n\t var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n\t leave.type = 'mouseleave';\n\t leave.target = fromNode;\n\t leave.relatedTarget = toNode;\n\t\n\t var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n\t enter.type = 'mouseenter';\n\t enter.target = toNode;\n\t enter.relatedTarget = fromNode;\n\t\n\t EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\t\n\t return [leave, enter];\n\t }\n\t\n\t};\n\t\n\tmodule.exports = EnterLeaveEventPlugin;\n\n/***/ },\n/* 283 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar PooledClass = __webpack_require__(28);\n\t\n\tvar getTextContentAccessor = __webpack_require__(133);\n\t\n\t/**\n\t * This helper class stores information about text content of a target node,\n\t * allowing comparison of content before and after a given event.\n\t *\n\t * Identify the node where selection currently begins, then observe\n\t * both its text content and its current position in the DOM. Since the\n\t * browser may natively replace the target node during composition, we can\n\t * use its position to find its replacement.\n\t *\n\t * @param {DOMEventTarget} root\n\t */\n\tfunction FallbackCompositionState(root) {\n\t this._root = root;\n\t this._startText = this.getText();\n\t this._fallbackText = null;\n\t}\n\t\n\t_assign(FallbackCompositionState.prototype, {\n\t destructor: function () {\n\t this._root = null;\n\t this._startText = null;\n\t this._fallbackText = null;\n\t },\n\t\n\t /**\n\t * Get current text of input.\n\t *\n\t * @return {string}\n\t */\n\t getText: function () {\n\t if ('value' in this._root) {\n\t return this._root.value;\n\t }\n\t return this._root[getTextContentAccessor()];\n\t },\n\t\n\t /**\n\t * Determine the differing substring between the initially stored\n\t * text content and the current content.\n\t *\n\t * @return {string}\n\t */\n\t getData: function () {\n\t if (this._fallbackText) {\n\t return this._fallbackText;\n\t }\n\t\n\t var start;\n\t var startValue = this._startText;\n\t var startLength = startValue.length;\n\t var end;\n\t var endValue = this.getText();\n\t var endLength = endValue.length;\n\t\n\t for (start = 0; start < startLength; start++) {\n\t if (startValue[start] !== endValue[start]) {\n\t break;\n\t }\n\t }\n\t\n\t var minEnd = startLength - start;\n\t for (end = 1; end <= minEnd; end++) {\n\t if (startValue[startLength - end] !== endValue[endLength - end]) {\n\t break;\n\t }\n\t }\n\t\n\t var sliceTail = end > 1 ? 1 - end : undefined;\n\t this._fallbackText = endValue.slice(start, sliceTail);\n\t return this._fallbackText;\n\t }\n\t});\n\t\n\tPooledClass.addPoolingTo(FallbackCompositionState);\n\t\n\tmodule.exports = FallbackCompositionState;\n\n/***/ },\n/* 284 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar DOMProperty = __webpack_require__(31);\n\t\n\tvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\n\tvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\n\tvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\n\tvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\n\tvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\t\n\tvar HTMLDOMPropertyConfig = {\n\t isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n\t Properties: {\n\t /**\n\t * Standard Properties\n\t */\n\t accept: 0,\n\t acceptCharset: 0,\n\t accessKey: 0,\n\t action: 0,\n\t allowFullScreen: HAS_BOOLEAN_VALUE,\n\t allowTransparency: 0,\n\t alt: 0,\n\t // specifies target context for links with `preload` type\n\t as: 0,\n\t async: HAS_BOOLEAN_VALUE,\n\t autoComplete: 0,\n\t // autoFocus is polyfilled/normalized by AutoFocusUtils\n\t // autoFocus: HAS_BOOLEAN_VALUE,\n\t autoPlay: HAS_BOOLEAN_VALUE,\n\t capture: HAS_BOOLEAN_VALUE,\n\t cellPadding: 0,\n\t cellSpacing: 0,\n\t charSet: 0,\n\t challenge: 0,\n\t checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n\t cite: 0,\n\t classID: 0,\n\t className: 0,\n\t cols: HAS_POSITIVE_NUMERIC_VALUE,\n\t colSpan: 0,\n\t content: 0,\n\t contentEditable: 0,\n\t contextMenu: 0,\n\t controls: HAS_BOOLEAN_VALUE,\n\t coords: 0,\n\t crossOrigin: 0,\n\t data: 0, // For `<object />` acts as `src`.\n\t dateTime: 0,\n\t 'default': HAS_BOOLEAN_VALUE,\n\t defer: HAS_BOOLEAN_VALUE,\n\t dir: 0,\n\t disabled: HAS_BOOLEAN_VALUE,\n\t download: HAS_OVERLOADED_BOOLEAN_VALUE,\n\t draggable: 0,\n\t encType: 0,\n\t form: 0,\n\t formAction: 0,\n\t formEncType: 0,\n\t formMethod: 0,\n\t formNoValidate: HAS_BOOLEAN_VALUE,\n\t formTarget: 0,\n\t frameBorder: 0,\n\t headers: 0,\n\t height: 0,\n\t hidden: HAS_BOOLEAN_VALUE,\n\t high: 0,\n\t href: 0,\n\t hrefLang: 0,\n\t htmlFor: 0,\n\t httpEquiv: 0,\n\t icon: 0,\n\t id: 0,\n\t inputMode: 0,\n\t integrity: 0,\n\t is: 0,\n\t keyParams: 0,\n\t keyType: 0,\n\t kind: 0,\n\t label: 0,\n\t lang: 0,\n\t list: 0,\n\t loop: HAS_BOOLEAN_VALUE,\n\t low: 0,\n\t manifest: 0,\n\t marginHeight: 0,\n\t marginWidth: 0,\n\t max: 0,\n\t maxLength: 0,\n\t media: 0,\n\t mediaGroup: 0,\n\t method: 0,\n\t min: 0,\n\t minLength: 0,\n\t // Caution; `option.selected` is not updated if `select.multiple` is\n\t // disabled with `removeAttribute`.\n\t multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n\t muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n\t name: 0,\n\t nonce: 0,\n\t noValidate: HAS_BOOLEAN_VALUE,\n\t open: HAS_BOOLEAN_VALUE,\n\t optimum: 0,\n\t pattern: 0,\n\t placeholder: 0,\n\t playsInline: HAS_BOOLEAN_VALUE,\n\t poster: 0,\n\t preload: 0,\n\t profile: 0,\n\t radioGroup: 0,\n\t readOnly: HAS_BOOLEAN_VALUE,\n\t referrerPolicy: 0,\n\t rel: 0,\n\t required: HAS_BOOLEAN_VALUE,\n\t reversed: HAS_BOOLEAN_VALUE,\n\t role: 0,\n\t rows: HAS_POSITIVE_NUMERIC_VALUE,\n\t rowSpan: HAS_NUMERIC_VALUE,\n\t sandbox: 0,\n\t scope: 0,\n\t scoped: HAS_BOOLEAN_VALUE,\n\t scrolling: 0,\n\t seamless: HAS_BOOLEAN_VALUE,\n\t selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n\t shape: 0,\n\t size: HAS_POSITIVE_NUMERIC_VALUE,\n\t sizes: 0,\n\t span: HAS_POSITIVE_NUMERIC_VALUE,\n\t spellCheck: 0,\n\t src: 0,\n\t srcDoc: 0,\n\t srcLang: 0,\n\t srcSet: 0,\n\t start: HAS_NUMERIC_VALUE,\n\t step: 0,\n\t style: 0,\n\t summary: 0,\n\t tabIndex: 0,\n\t target: 0,\n\t title: 0,\n\t // Setting .type throws on non-<input> tags\n\t type: 0,\n\t useMap: 0,\n\t value: 0,\n\t width: 0,\n\t wmode: 0,\n\t wrap: 0,\n\t\n\t /**\n\t * RDFa Properties\n\t */\n\t about: 0,\n\t datatype: 0,\n\t inlist: 0,\n\t prefix: 0,\n\t // property is also supported for OpenGraph in meta tags.\n\t property: 0,\n\t resource: 0,\n\t 'typeof': 0,\n\t vocab: 0,\n\t\n\t /**\n\t * Non-standard Properties\n\t */\n\t // autoCapitalize and autoCorrect are supported in Mobile Safari for\n\t // keyboard hints.\n\t autoCapitalize: 0,\n\t autoCorrect: 0,\n\t // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n\t autoSave: 0,\n\t // color is for Safari mask-icon link\n\t color: 0,\n\t // itemProp, itemScope, itemType are for\n\t // Microdata support. See http://schema.org/docs/gs.html\n\t itemProp: 0,\n\t itemScope: HAS_BOOLEAN_VALUE,\n\t itemType: 0,\n\t // itemID and itemRef are for Microdata support as well but\n\t // only specified in the WHATWG spec document. See\n\t // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n\t itemID: 0,\n\t itemRef: 0,\n\t // results show looking glass icon and recent searches on input\n\t // search fields in WebKit/Blink\n\t results: 0,\n\t // IE-only attribute that specifies security restrictions on an iframe\n\t // as an alternative to the sandbox attribute on IE<10\n\t security: 0,\n\t // IE-only attribute that controls focus behavior\n\t unselectable: 0\n\t },\n\t DOMAttributeNames: {\n\t acceptCharset: 'accept-charset',\n\t className: 'class',\n\t htmlFor: 'for',\n\t httpEquiv: 'http-equiv'\n\t },\n\t DOMPropertyNames: {}\n\t};\n\t\n\tmodule.exports = HTMLDOMPropertyConfig;\n\n/***/ },\n/* 285 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2014-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactReconciler = __webpack_require__(32);\n\t\n\tvar instantiateReactComponent = __webpack_require__(134);\n\tvar KeyEscapeUtils = __webpack_require__(76);\n\tvar shouldUpdateReactComponent = __webpack_require__(86);\n\tvar traverseAllChildren = __webpack_require__(137);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar ReactComponentTreeHook;\n\t\n\tif (typeof process !== 'undefined' && ({\"NODE_ENV\":\"production\"}) && (\"production\") === 'test') {\n\t // Temporary hack.\n\t // Inline requires don't work well with Jest:\n\t // https://github.com/facebook/react/issues/7240\n\t // Remove the inline requires when we don't need them anymore:\n\t // https://github.com/facebook/react/pull/7178\n\t ReactComponentTreeHook = __webpack_require__(156);\n\t}\n\t\n\tfunction instantiateChild(childInstances, child, name, selfDebugID) {\n\t // We found a component instance.\n\t var keyUnique = childInstances[name] === undefined;\n\t if (false) {\n\t if (!ReactComponentTreeHook) {\n\t ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n\t }\n\t if (!keyUnique) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n\t }\n\t }\n\t if (child != null && keyUnique) {\n\t childInstances[name] = instantiateReactComponent(child, true);\n\t }\n\t}\n\t\n\t/**\n\t * ReactChildReconciler provides helpers for initializing or updating a set of\n\t * children. Its output is suitable for passing it onto ReactMultiChild which\n\t * does diffed reordering and insertion.\n\t */\n\tvar ReactChildReconciler = {\n\t /**\n\t * Generates a \"mount image\" for each of the supplied children. In the case\n\t * of `ReactDOMComponent`, a mount image is a string of markup.\n\t *\n\t * @param {?object} nestedChildNodes Nested child maps.\n\t * @return {?object} A set of child instances.\n\t * @internal\n\t */\n\t instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots\n\t ) {\n\t if (nestedChildNodes == null) {\n\t return null;\n\t }\n\t var childInstances = {};\n\t\n\t if (false) {\n\t traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n\t return instantiateChild(childInsts, child, name, selfDebugID);\n\t }, childInstances);\n\t } else {\n\t traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n\t }\n\t return childInstances;\n\t },\n\t\n\t /**\n\t * Updates the rendered children and returns a new set of children.\n\t *\n\t * @param {?object} prevChildren Previously initialized set of children.\n\t * @param {?object} nextChildren Flat child element maps.\n\t * @param {ReactReconcileTransaction} transaction\n\t * @param {object} context\n\t * @return {?object} A new set of child instances.\n\t * @internal\n\t */\n\t updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots\n\t ) {\n\t // We currently don't have a way to track moves here but if we use iterators\n\t // instead of for..in we can zip the iterators and check if an item has\n\t // moved.\n\t // TODO: If nothing has changed, return the prevChildren object so that we\n\t // can quickly bailout if nothing has changed.\n\t if (!nextChildren && !prevChildren) {\n\t return;\n\t }\n\t var name;\n\t var prevChild;\n\t for (name in nextChildren) {\n\t if (!nextChildren.hasOwnProperty(name)) {\n\t continue;\n\t }\n\t prevChild = prevChildren && prevChildren[name];\n\t var prevElement = prevChild && prevChild._currentElement;\n\t var nextElement = nextChildren[name];\n\t if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n\t ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n\t nextChildren[name] = prevChild;\n\t } else {\n\t if (prevChild) {\n\t removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n\t ReactReconciler.unmountComponent(prevChild, false);\n\t }\n\t // The child must be instantiated before it's mounted.\n\t var nextChildInstance = instantiateReactComponent(nextElement, true);\n\t nextChildren[name] = nextChildInstance;\n\t // Creating mount image now ensures refs are resolved in right order\n\t // (see https://github.com/facebook/react/pull/7101 for explanation).\n\t var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n\t mountImages.push(nextChildMountImage);\n\t }\n\t }\n\t // Unmount children that are no longer present.\n\t for (name in prevChildren) {\n\t if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n\t prevChild = prevChildren[name];\n\t removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n\t ReactReconciler.unmountComponent(prevChild, false);\n\t }\n\t }\n\t },\n\t\n\t /**\n\t * Unmounts all rendered children. This should be used to clean up children\n\t * when this component is unmounted.\n\t *\n\t * @param {?object} renderedChildren Previously initialized set of children.\n\t * @internal\n\t */\n\t unmountChildren: function (renderedChildren, safely) {\n\t for (var name in renderedChildren) {\n\t if (renderedChildren.hasOwnProperty(name)) {\n\t var renderedChild = renderedChildren[name];\n\t ReactReconciler.unmountComponent(renderedChild, safely);\n\t }\n\t }\n\t }\n\t\n\t};\n\t\n\tmodule.exports = ReactChildReconciler;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(71)))\n\n/***/ },\n/* 286 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar DOMChildrenOperations = __webpack_require__(72);\n\tvar ReactDOMIDOperations = __webpack_require__(293);\n\t\n\t/**\n\t * Abstracts away all functionality of the reconciler that requires knowledge of\n\t * the browser context. TODO: These callers should be refactored to avoid the\n\t * need for this injection.\n\t */\n\tvar ReactComponentBrowserEnvironment = {\n\t\n\t processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\t\n\t replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n\t\n\t};\n\t\n\tmodule.exports = ReactComponentBrowserEnvironment;\n\n/***/ },\n/* 287 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5),\n\t _assign = __webpack_require__(6);\n\t\n\tvar React = __webpack_require__(36);\n\tvar ReactComponentEnvironment = __webpack_require__(78);\n\tvar ReactCurrentOwner = __webpack_require__(21);\n\tvar ReactErrorUtils = __webpack_require__(79);\n\tvar ReactInstanceMap = __webpack_require__(42);\n\tvar ReactInstrumentation = __webpack_require__(18);\n\tvar ReactNodeTypes = __webpack_require__(128);\n\tvar ReactReconciler = __webpack_require__(32);\n\t\n\tif (false) {\n\t var checkReactTypeSpec = require('./checkReactTypeSpec');\n\t}\n\t\n\tvar emptyObject = __webpack_require__(39);\n\tvar invariant = __webpack_require__(3);\n\tvar shallowEqual = __webpack_require__(65);\n\tvar shouldUpdateReactComponent = __webpack_require__(86);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar CompositeTypes = {\n\t ImpureClass: 0,\n\t PureClass: 1,\n\t StatelessFunctional: 2\n\t};\n\t\n\tfunction StatelessComponent(Component) {}\n\tStatelessComponent.prototype.render = function () {\n\t var Component = ReactInstanceMap.get(this)._currentElement.type;\n\t var element = Component(this.props, this.context, this.updater);\n\t warnIfInvalidElement(Component, element);\n\t return element;\n\t};\n\t\n\tfunction warnIfInvalidElement(Component, element) {\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n\t process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n\t }\n\t}\n\t\n\tfunction shouldConstruct(Component) {\n\t return !!(Component.prototype && Component.prototype.isReactComponent);\n\t}\n\t\n\tfunction isPureComponent(Component) {\n\t return !!(Component.prototype && Component.prototype.isPureReactComponent);\n\t}\n\t\n\t// Separated into a function to contain deoptimizations caused by try/finally.\n\tfunction measureLifeCyclePerf(fn, debugID, timerType) {\n\t if (debugID === 0) {\n\t // Top-level wrappers (see ReactMount) and empty components (see\n\t // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n\t // Both are implementation details that should go away in the future.\n\t return fn();\n\t }\n\t\n\t ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n\t try {\n\t return fn();\n\t } finally {\n\t ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n\t }\n\t}\n\t\n\t/**\n\t * ------------------ The Life-Cycle of a Composite Component ------------------\n\t *\n\t * - constructor: Initialization of state. The instance is now retained.\n\t * - componentWillMount\n\t * - render\n\t * - [children's constructors]\n\t * - [children's componentWillMount and render]\n\t * - [children's componentDidMount]\n\t * - componentDidMount\n\t *\n\t * Update Phases:\n\t * - componentWillReceiveProps (only called if parent updated)\n\t * - shouldComponentUpdate\n\t * - componentWillUpdate\n\t * - render\n\t * - [children's constructors or receive props phases]\n\t * - componentDidUpdate\n\t *\n\t * - componentWillUnmount\n\t * - [children's componentWillUnmount]\n\t * - [children destroyed]\n\t * - (destroyed): The instance is now blank, released by React and ready for GC.\n\t *\n\t * -----------------------------------------------------------------------------\n\t */\n\t\n\t/**\n\t * An incrementing ID assigned to each component when it is mounted. This is\n\t * used to enforce the order in which `ReactUpdates` updates dirty components.\n\t *\n\t * @private\n\t */\n\tvar nextMountID = 1;\n\t\n\t/**\n\t * @lends {ReactCompositeComponent.prototype}\n\t */\n\tvar ReactCompositeComponent = {\n\t\n\t /**\n\t * Base constructor for all composite component.\n\t *\n\t * @param {ReactElement} element\n\t * @final\n\t * @internal\n\t */\n\t construct: function (element) {\n\t this._currentElement = element;\n\t this._rootNodeID = 0;\n\t this._compositeType = null;\n\t this._instance = null;\n\t this._hostParent = null;\n\t this._hostContainerInfo = null;\n\t\n\t // See ReactUpdateQueue\n\t this._updateBatchNumber = null;\n\t this._pendingElement = null;\n\t this._pendingStateQueue = null;\n\t this._pendingReplaceState = false;\n\t this._pendingForceUpdate = false;\n\t\n\t this._renderedNodeType = null;\n\t this._renderedComponent = null;\n\t this._context = null;\n\t this._mountOrder = 0;\n\t this._topLevelWrapper = null;\n\t\n\t // See ReactUpdates and ReactUpdateQueue.\n\t this._pendingCallbacks = null;\n\t\n\t // ComponentWillUnmount shall only be called once\n\t this._calledComponentWillUnmount = false;\n\t\n\t if (false) {\n\t this._warnedAboutRefsInRender = false;\n\t }\n\t },\n\t\n\t /**\n\t * Initializes the component, renders markup, and registers event listeners.\n\t *\n\t * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n\t * @param {?object} hostParent\n\t * @param {?object} hostContainerInfo\n\t * @param {?object} context\n\t * @return {?string} Rendered markup to be inserted into the DOM.\n\t * @final\n\t * @internal\n\t */\n\t mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n\t var _this = this;\n\t\n\t this._context = context;\n\t this._mountOrder = nextMountID++;\n\t this._hostParent = hostParent;\n\t this._hostContainerInfo = hostContainerInfo;\n\t\n\t var publicProps = this._currentElement.props;\n\t var publicContext = this._processContext(context);\n\t\n\t var Component = this._currentElement.type;\n\t\n\t var updateQueue = transaction.getUpdateQueue();\n\t\n\t // Initialize the public class\n\t var doConstruct = shouldConstruct(Component);\n\t var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n\t var renderedElement;\n\t\n\t // Support functional components\n\t if (!doConstruct && (inst == null || inst.render == null)) {\n\t renderedElement = inst;\n\t warnIfInvalidElement(Component, renderedElement);\n\t !(inst === null || inst === false || React.isValidElement(inst)) ? false ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n\t inst = new StatelessComponent(Component);\n\t this._compositeType = CompositeTypes.StatelessFunctional;\n\t } else {\n\t if (isPureComponent(Component)) {\n\t this._compositeType = CompositeTypes.PureClass;\n\t } else {\n\t this._compositeType = CompositeTypes.ImpureClass;\n\t }\n\t }\n\t\n\t if (false) {\n\t // This will throw later in _renderValidatedComponent, but add an early\n\t // warning now to help debugging\n\t if (inst.render == null) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n\t }\n\t\n\t var propsMutated = inst.props !== publicProps;\n\t var componentName = Component.displayName || Component.name || 'Component';\n\t\n\t process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\\'s constructor was passed.', componentName, componentName) : void 0;\n\t }\n\t\n\t // These should be set up in the constructor, but as a convenience for\n\t // simpler class abstractions, we set them up after the fact.\n\t inst.props = publicProps;\n\t inst.context = publicContext;\n\t inst.refs = emptyObject;\n\t inst.updater = updateQueue;\n\t\n\t this._instance = inst;\n\t\n\t // Store a reference from the instance back to the internal representation\n\t ReactInstanceMap.set(inst, this);\n\t\n\t if (false) {\n\t // Since plain JS classes are defined without any special initialization\n\t // logic, we can not catch common errors early. Therefore, we have to\n\t // catch them here, at initialization time, instead.\n\t process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n\t process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n\t process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n\t process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n\t process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n\t process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n\t process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n\t }\n\t\n\t var initialState = inst.state;\n\t if (initialState === undefined) {\n\t inst.state = initialState = null;\n\t }\n\t !(typeof initialState === 'object' && !Array.isArray(initialState)) ? false ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\t\n\t this._pendingStateQueue = null;\n\t this._pendingReplaceState = false;\n\t this._pendingForceUpdate = false;\n\t\n\t var markup;\n\t if (inst.unstable_handleError) {\n\t markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n\t } else {\n\t markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n\t }\n\t\n\t if (inst.componentDidMount) {\n\t if (false) {\n\t transaction.getReactMountReady().enqueue(function () {\n\t measureLifeCyclePerf(function () {\n\t return inst.componentDidMount();\n\t }, _this._debugID, 'componentDidMount');\n\t });\n\t } else {\n\t transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n\t }\n\t }\n\t\n\t return markup;\n\t },\n\t\n\t _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n\t if (false) {\n\t ReactCurrentOwner.current = this;\n\t try {\n\t return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n\t } finally {\n\t ReactCurrentOwner.current = null;\n\t }\n\t } else {\n\t return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n\t }\n\t },\n\t\n\t _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n\t var Component = this._currentElement.type;\n\t\n\t if (doConstruct) {\n\t if (false) {\n\t return measureLifeCyclePerf(function () {\n\t return new Component(publicProps, publicContext, updateQueue);\n\t }, this._debugID, 'ctor');\n\t } else {\n\t return new Component(publicProps, publicContext, updateQueue);\n\t }\n\t }\n\t\n\t // This can still be an instance in case of factory components\n\t // but we'll count this as time spent rendering as the more common case.\n\t if (false) {\n\t return measureLifeCyclePerf(function () {\n\t return Component(publicProps, publicContext, updateQueue);\n\t }, this._debugID, 'render');\n\t } else {\n\t return Component(publicProps, publicContext, updateQueue);\n\t }\n\t },\n\t\n\t performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n\t var markup;\n\t var checkpoint = transaction.checkpoint();\n\t try {\n\t markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n\t } catch (e) {\n\t // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n\t transaction.rollback(checkpoint);\n\t this._instance.unstable_handleError(e);\n\t if (this._pendingStateQueue) {\n\t this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n\t }\n\t checkpoint = transaction.checkpoint();\n\t\n\t this._renderedComponent.unmountComponent(true);\n\t transaction.rollback(checkpoint);\n\t\n\t // Try again - we've informed the component about the error, so they can render an error message this time.\n\t // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n\t markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n\t }\n\t return markup;\n\t },\n\t\n\t performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n\t var inst = this._instance;\n\t\n\t var debugID = 0;\n\t if (false) {\n\t debugID = this._debugID;\n\t }\n\t\n\t if (inst.componentWillMount) {\n\t if (false) {\n\t measureLifeCyclePerf(function () {\n\t return inst.componentWillMount();\n\t }, debugID, 'componentWillMount');\n\t } else {\n\t inst.componentWillMount();\n\t }\n\t // When mounting, calls to `setState` by `componentWillMount` will set\n\t // `this._pendingStateQueue` without triggering a re-render.\n\t if (this._pendingStateQueue) {\n\t inst.state = this._processPendingState(inst.props, inst.context);\n\t }\n\t }\n\t\n\t // If not a stateless component, we now render\n\t if (renderedElement === undefined) {\n\t renderedElement = this._renderValidatedComponent();\n\t }\n\t\n\t var nodeType = ReactNodeTypes.getType(renderedElement);\n\t this._renderedNodeType = nodeType;\n\t var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n\t );\n\t this._renderedComponent = child;\n\t\n\t var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\t\n\t if (false) {\n\t if (debugID !== 0) {\n\t var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n\t ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n\t }\n\t }\n\t\n\t return markup;\n\t },\n\t\n\t getHostNode: function () {\n\t return ReactReconciler.getHostNode(this._renderedComponent);\n\t },\n\t\n\t /**\n\t * Releases any resources allocated by `mountComponent`.\n\t *\n\t * @final\n\t * @internal\n\t */\n\t unmountComponent: function (safely) {\n\t if (!this._renderedComponent) {\n\t return;\n\t }\n\t\n\t var inst = this._instance;\n\t\n\t if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n\t inst._calledComponentWillUnmount = true;\n\t\n\t if (safely) {\n\t var name = this.getName() + '.componentWillUnmount()';\n\t ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n\t } else {\n\t if (false) {\n\t measureLifeCyclePerf(function () {\n\t return inst.componentWillUnmount();\n\t }, this._debugID, 'componentWillUnmount');\n\t } else {\n\t inst.componentWillUnmount();\n\t }\n\t }\n\t }\n\t\n\t if (this._renderedComponent) {\n\t ReactReconciler.unmountComponent(this._renderedComponent, safely);\n\t this._renderedNodeType = null;\n\t this._renderedComponent = null;\n\t this._instance = null;\n\t }\n\t\n\t // Reset pending fields\n\t // Even if this component is scheduled for another update in ReactUpdates,\n\t // it would still be ignored because these fields are reset.\n\t this._pendingStateQueue = null;\n\t this._pendingReplaceState = false;\n\t this._pendingForceUpdate = false;\n\t this._pendingCallbacks = null;\n\t this._pendingElement = null;\n\t\n\t // These fields do not really need to be reset since this object is no\n\t // longer accessible.\n\t this._context = null;\n\t this._rootNodeID = 0;\n\t this._topLevelWrapper = null;\n\t\n\t // Delete the reference from the instance to this internal representation\n\t // which allow the internals to be properly cleaned up even if the user\n\t // leaks a reference to the public instance.\n\t ReactInstanceMap.remove(inst);\n\t\n\t // Some existing components rely on inst.props even after they've been\n\t // destroyed (in event handlers).\n\t // TODO: inst.props = null;\n\t // TODO: inst.state = null;\n\t // TODO: inst.context = null;\n\t },\n\t\n\t /**\n\t * Filters the context object to only contain keys specified in\n\t * `contextTypes`\n\t *\n\t * @param {object} context\n\t * @return {?object}\n\t * @private\n\t */\n\t _maskContext: function (context) {\n\t var Component = this._currentElement.type;\n\t var contextTypes = Component.contextTypes;\n\t if (!contextTypes) {\n\t return emptyObject;\n\t }\n\t var maskedContext = {};\n\t for (var contextName in contextTypes) {\n\t maskedContext[contextName] = context[contextName];\n\t }\n\t return maskedContext;\n\t },\n\t\n\t /**\n\t * Filters the context object to only contain keys specified in\n\t * `contextTypes`, and asserts that they are valid.\n\t *\n\t * @param {object} context\n\t * @return {?object}\n\t * @private\n\t */\n\t _processContext: function (context) {\n\t var maskedContext = this._maskContext(context);\n\t if (false) {\n\t var Component = this._currentElement.type;\n\t if (Component.contextTypes) {\n\t this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n\t }\n\t }\n\t return maskedContext;\n\t },\n\t\n\t /**\n\t * @param {object} currentContext\n\t * @return {object}\n\t * @private\n\t */\n\t _processChildContext: function (currentContext) {\n\t var Component = this._currentElement.type;\n\t var inst = this._instance;\n\t var childContext;\n\t\n\t if (inst.getChildContext) {\n\t if (false) {\n\t ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n\t try {\n\t childContext = inst.getChildContext();\n\t } finally {\n\t ReactInstrumentation.debugTool.onEndProcessingChildContext();\n\t }\n\t } else {\n\t childContext = inst.getChildContext();\n\t }\n\t }\n\t\n\t if (childContext) {\n\t !(typeof Component.childContextTypes === 'object') ? false ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n\t if (false) {\n\t this._checkContextTypes(Component.childContextTypes, childContext, 'childContext');\n\t }\n\t for (var name in childContext) {\n\t !(name in Component.childContextTypes) ? false ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n\t }\n\t return _assign({}, currentContext, childContext);\n\t }\n\t return currentContext;\n\t },\n\t\n\t /**\n\t * Assert that the context types are valid\n\t *\n\t * @param {object} typeSpecs Map of context field to a ReactPropType\n\t * @param {object} values Runtime values that need to be type-checked\n\t * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n\t * @private\n\t */\n\t _checkContextTypes: function (typeSpecs, values, location) {\n\t if (false) {\n\t checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n\t }\n\t },\n\t\n\t receiveComponent: function (nextElement, transaction, nextContext) {\n\t var prevElement = this._currentElement;\n\t var prevContext = this._context;\n\t\n\t this._pendingElement = null;\n\t\n\t this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n\t },\n\t\n\t /**\n\t * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n\t * is set, update the component.\n\t *\n\t * @param {ReactReconcileTransaction} transaction\n\t * @internal\n\t */\n\t performUpdateIfNecessary: function (transaction) {\n\t if (this._pendingElement != null) {\n\t ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n\t } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n\t this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n\t } else {\n\t this._updateBatchNumber = null;\n\t }\n\t },\n\t\n\t /**\n\t * Perform an update to a mounted component. The componentWillReceiveProps and\n\t * shouldComponentUpdate methods are called, then (assuming the update isn't\n\t * skipped) the remaining update lifecycle methods are called and the DOM\n\t * representation is updated.\n\t *\n\t * By default, this implements React's rendering and reconciliation algorithm.\n\t * Sophisticated clients may wish to override this.\n\t *\n\t * @param {ReactReconcileTransaction} transaction\n\t * @param {ReactElement} prevParentElement\n\t * @param {ReactElement} nextParentElement\n\t * @internal\n\t * @overridable\n\t */\n\t updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n\t var inst = this._instance;\n\t !(inst != null) ? false ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\t\n\t var willReceive = false;\n\t var nextContext;\n\t\n\t // Determine if the context has changed or not\n\t if (this._context === nextUnmaskedContext) {\n\t nextContext = inst.context;\n\t } else {\n\t nextContext = this._processContext(nextUnmaskedContext);\n\t willReceive = true;\n\t }\n\t\n\t var prevProps = prevParentElement.props;\n\t var nextProps = nextParentElement.props;\n\t\n\t // Not a simple state update but a props update\n\t if (prevParentElement !== nextParentElement) {\n\t willReceive = true;\n\t }\n\t\n\t // An update here will schedule an update but immediately set\n\t // _pendingStateQueue which will ensure that any state updates gets\n\t // immediately reconciled instead of waiting for the next batch.\n\t if (willReceive && inst.componentWillReceiveProps) {\n\t if (false) {\n\t measureLifeCyclePerf(function () {\n\t return inst.componentWillReceiveProps(nextProps, nextContext);\n\t }, this._debugID, 'componentWillReceiveProps');\n\t } else {\n\t inst.componentWillReceiveProps(nextProps, nextContext);\n\t }\n\t }\n\t\n\t var nextState = this._processPendingState(nextProps, nextContext);\n\t var shouldUpdate = true;\n\t\n\t if (!this._pendingForceUpdate) {\n\t if (inst.shouldComponentUpdate) {\n\t if (false) {\n\t shouldUpdate = measureLifeCyclePerf(function () {\n\t return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n\t }, this._debugID, 'shouldComponentUpdate');\n\t } else {\n\t shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n\t }\n\t } else {\n\t if (this._compositeType === CompositeTypes.PureClass) {\n\t shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n\t }\n\t }\n\t }\n\t\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n\t }\n\t\n\t this._updateBatchNumber = null;\n\t if (shouldUpdate) {\n\t this._pendingForceUpdate = false;\n\t // Will set `this.props`, `this.state` and `this.context`.\n\t this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n\t } else {\n\t // If it's determined that a component should not update, we still want\n\t // to set props and state but we shortcut the rest of the update.\n\t this._currentElement = nextParentElement;\n\t this._context = nextUnmaskedContext;\n\t inst.props = nextProps;\n\t inst.state = nextState;\n\t inst.context = nextContext;\n\t }\n\t },\n\t\n\t _processPendingState: function (props, context) {\n\t var inst = this._instance;\n\t var queue = this._pendingStateQueue;\n\t var replace = this._pendingReplaceState;\n\t this._pendingReplaceState = false;\n\t this._pendingStateQueue = null;\n\t\n\t if (!queue) {\n\t return inst.state;\n\t }\n\t\n\t if (replace && queue.length === 1) {\n\t return queue[0];\n\t }\n\t\n\t var nextState = _assign({}, replace ? queue[0] : inst.state);\n\t for (var i = replace ? 1 : 0; i < queue.length; i++) {\n\t var partial = queue[i];\n\t _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n\t }\n\t\n\t return nextState;\n\t },\n\t\n\t /**\n\t * Merges new props and state, notifies delegate methods of update and\n\t * performs update.\n\t *\n\t * @param {ReactElement} nextElement Next element\n\t * @param {object} nextProps Next public object to set as properties.\n\t * @param {?object} nextState Next object to set as state.\n\t * @param {?object} nextContext Next public object to set as context.\n\t * @param {ReactReconcileTransaction} transaction\n\t * @param {?object} unmaskedContext\n\t * @private\n\t */\n\t _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n\t var _this2 = this;\n\t\n\t var inst = this._instance;\n\t\n\t var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n\t var prevProps;\n\t var prevState;\n\t var prevContext;\n\t if (hasComponentDidUpdate) {\n\t prevProps = inst.props;\n\t prevState = inst.state;\n\t prevContext = inst.context;\n\t }\n\t\n\t if (inst.componentWillUpdate) {\n\t if (false) {\n\t measureLifeCyclePerf(function () {\n\t return inst.componentWillUpdate(nextProps, nextState, nextContext);\n\t }, this._debugID, 'componentWillUpdate');\n\t } else {\n\t inst.componentWillUpdate(nextProps, nextState, nextContext);\n\t }\n\t }\n\t\n\t this._currentElement = nextElement;\n\t this._context = unmaskedContext;\n\t inst.props = nextProps;\n\t inst.state = nextState;\n\t inst.context = nextContext;\n\t\n\t this._updateRenderedComponent(transaction, unmaskedContext);\n\t\n\t if (hasComponentDidUpdate) {\n\t if (false) {\n\t transaction.getReactMountReady().enqueue(function () {\n\t measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n\t });\n\t } else {\n\t transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n\t }\n\t }\n\t },\n\t\n\t /**\n\t * Call the component's `render` method and update the DOM accordingly.\n\t *\n\t * @param {ReactReconcileTransaction} transaction\n\t * @internal\n\t */\n\t _updateRenderedComponent: function (transaction, context) {\n\t var prevComponentInstance = this._renderedComponent;\n\t var prevRenderedElement = prevComponentInstance._currentElement;\n\t var nextRenderedElement = this._renderValidatedComponent();\n\t\n\t var debugID = 0;\n\t if (false) {\n\t debugID = this._debugID;\n\t }\n\t\n\t if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n\t ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n\t } else {\n\t var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n\t ReactReconciler.unmountComponent(prevComponentInstance, false);\n\t\n\t var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n\t this._renderedNodeType = nodeType;\n\t var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n\t );\n\t this._renderedComponent = child;\n\t\n\t var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\t\n\t if (false) {\n\t if (debugID !== 0) {\n\t var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n\t ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n\t }\n\t }\n\t\n\t this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n\t }\n\t },\n\t\n\t /**\n\t * Overridden in shallow rendering.\n\t *\n\t * @protected\n\t */\n\t _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n\t ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n\t },\n\t\n\t /**\n\t * @protected\n\t */\n\t _renderValidatedComponentWithoutOwnerOrContext: function () {\n\t var inst = this._instance;\n\t var renderedElement;\n\t\n\t if (false) {\n\t renderedElement = measureLifeCyclePerf(function () {\n\t return inst.render();\n\t }, this._debugID, 'render');\n\t } else {\n\t renderedElement = inst.render();\n\t }\n\t\n\t if (false) {\n\t // We allow auto-mocks to proceed as if they're returning null.\n\t if (renderedElement === undefined && inst.render._isMockFunction) {\n\t // This is probably bad practice. Consider warning here and\n\t // deprecating this convenience.\n\t renderedElement = null;\n\t }\n\t }\n\t\n\t return renderedElement;\n\t },\n\t\n\t /**\n\t * @private\n\t */\n\t _renderValidatedComponent: function () {\n\t var renderedElement;\n\t if ((\"production\") !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n\t ReactCurrentOwner.current = this;\n\t try {\n\t renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n\t } finally {\n\t ReactCurrentOwner.current = null;\n\t }\n\t } else {\n\t renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n\t }\n\t !(\n\t // TODO: An `isValidNode` function would probably be more appropriate\n\t renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? false ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\t\n\t return renderedElement;\n\t },\n\t\n\t /**\n\t * Lazily allocates the refs object and stores `component` as `ref`.\n\t *\n\t * @param {string} ref Reference name.\n\t * @param {component} component Component to store as `ref`.\n\t * @final\n\t * @private\n\t */\n\t attachRef: function (ref, component) {\n\t var inst = this.getPublicInstance();\n\t !(inst != null) ? false ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n\t var publicComponentInstance = component.getPublicInstance();\n\t if (false) {\n\t var componentName = component && component.getName ? component.getName() : 'a component';\n\t process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n\t }\n\t var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n\t refs[ref] = publicComponentInstance;\n\t },\n\t\n\t /**\n\t * Detaches a reference name.\n\t *\n\t * @param {string} ref Name to dereference.\n\t * @final\n\t * @private\n\t */\n\t detachRef: function (ref) {\n\t var refs = this.getPublicInstance().refs;\n\t delete refs[ref];\n\t },\n\t\n\t /**\n\t * Get a text description of the component that can be used to identify it\n\t * in error messages.\n\t * @return {string} The name or null.\n\t * @internal\n\t */\n\t getName: function () {\n\t var type = this._currentElement.type;\n\t var constructor = this._instance && this._instance.constructor;\n\t return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n\t },\n\t\n\t /**\n\t * Get the publicly accessible representation of this component - i.e. what\n\t * is exposed by refs and returned by render. Can be null for stateless\n\t * components.\n\t *\n\t * @return {ReactComponent} the public component instance.\n\t * @internal\n\t */\n\t getPublicInstance: function () {\n\t var inst = this._instance;\n\t if (this._compositeType === CompositeTypes.StatelessFunctional) {\n\t return null;\n\t }\n\t return inst;\n\t },\n\t\n\t // Stub\n\t _instantiateReactComponent: null\n\t\n\t};\n\t\n\tmodule.exports = ReactCompositeComponent;\n\n/***/ },\n/* 288 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\t\n\t'use strict';\n\t\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactDefaultInjection = __webpack_require__(301);\n\tvar ReactMount = __webpack_require__(127);\n\tvar ReactReconciler = __webpack_require__(32);\n\tvar ReactUpdates = __webpack_require__(19);\n\tvar ReactVersion = __webpack_require__(314);\n\t\n\tvar findDOMNode = __webpack_require__(330);\n\tvar getHostComponentFromComposite = __webpack_require__(132);\n\tvar renderSubtreeIntoContainer = __webpack_require__(338);\n\tvar warning = __webpack_require__(4);\n\t\n\tReactDefaultInjection.inject();\n\t\n\tvar ReactDOM = {\n\t findDOMNode: findDOMNode,\n\t render: ReactMount.render,\n\t unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n\t version: ReactVersion,\n\t\n\t /* eslint-disable camelcase */\n\t unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n\t unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n\t};\n\t\n\t// Inject the runtime into a devtools global hook regardless of browser.\n\t// Allows for debugging when the hook is injected on the page.\n\tif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n\t __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n\t ComponentTree: {\n\t getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n\t getNodeFromInstance: function (inst) {\n\t // inst is an internal instance (but could be a composite)\n\t if (inst._renderedComponent) {\n\t inst = getHostComponentFromComposite(inst);\n\t }\n\t if (inst) {\n\t return ReactDOMComponentTree.getNodeFromInstance(inst);\n\t } else {\n\t return null;\n\t }\n\t }\n\t },\n\t Mount: ReactMount,\n\t Reconciler: ReactReconciler\n\t });\n\t}\n\t\n\tif (false) {\n\t var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\t if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n\t\n\t // First check if devtools is not installed\n\t if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n\t // If we're in Chrome or Firefox, provide a download link if not installed.\n\t if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n\t // Firefox does not have the issue with devtools loaded over file://\n\t var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n\t console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n\t }\n\t }\n\t\n\t var testFunc = function testFn() {};\n\t process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, 'It looks like you\\'re using a minified copy of the development build ' + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0;\n\t\n\t // If we're in IE8, check to see if we are in compatibility mode and provide\n\t // information on preventing compatibility mode\n\t var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\t\n\t process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\t\n\t var expectedFeatures = [\n\t // shims\n\t Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\t\n\t for (var i = 0; i < expectedFeatures.length; i++) {\n\t if (!expectedFeatures[i]) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n\t break;\n\t }\n\t }\n\t }\n\t}\n\t\n\tif (false) {\n\t var ReactInstrumentation = require('./ReactInstrumentation');\n\t var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n\t var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n\t var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\t\n\t ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n\t ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n\t ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n\t}\n\t\n\tmodule.exports = ReactDOM;\n\n/***/ },\n/* 289 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t/* global hasOwnProperty:true */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5),\n\t _assign = __webpack_require__(6);\n\t\n\tvar AutoFocusUtils = __webpack_require__(276);\n\tvar CSSPropertyOperations = __webpack_require__(278);\n\tvar DOMLazyTree = __webpack_require__(30);\n\tvar DOMNamespaces = __webpack_require__(73);\n\tvar DOMProperty = __webpack_require__(31);\n\tvar DOMPropertyOperations = __webpack_require__(120);\n\tvar EventPluginHub = __webpack_require__(40);\n\tvar EventPluginRegistry = __webpack_require__(74);\n\tvar ReactBrowserEventEmitter = __webpack_require__(51);\n\tvar ReactDOMComponentFlags = __webpack_require__(121);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactDOMInput = __webpack_require__(294);\n\tvar ReactDOMOption = __webpack_require__(295);\n\tvar ReactDOMSelect = __webpack_require__(122);\n\tvar ReactDOMTextarea = __webpack_require__(298);\n\tvar ReactInstrumentation = __webpack_require__(18);\n\tvar ReactMultiChild = __webpack_require__(307);\n\tvar ReactServerRenderingTransaction = __webpack_require__(312);\n\t\n\tvar emptyFunction = __webpack_require__(16);\n\tvar escapeTextContentForBrowser = __webpack_require__(54);\n\tvar invariant = __webpack_require__(3);\n\tvar isEventSupported = __webpack_require__(85);\n\tvar shallowEqual = __webpack_require__(65);\n\tvar validateDOMNesting = __webpack_require__(87);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar Flags = ReactDOMComponentFlags;\n\tvar deleteListener = EventPluginHub.deleteListener;\n\tvar getNode = ReactDOMComponentTree.getNodeFromInstance;\n\tvar listenTo = ReactBrowserEventEmitter.listenTo;\n\tvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\t\n\t// For quickly matching children type, to test if can be treated as content.\n\tvar CONTENT_TYPES = { 'string': true, 'number': true };\n\t\n\tvar STYLE = 'style';\n\tvar HTML = '__html';\n\tvar RESERVED_PROPS = {\n\t children: null,\n\t dangerouslySetInnerHTML: null,\n\t suppressContentEditableWarning: null\n\t};\n\t\n\t// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\n\tvar DOC_FRAGMENT_TYPE = 11;\n\t\n\tfunction getDeclarationErrorAddendum(internalInstance) {\n\t if (internalInstance) {\n\t var owner = internalInstance._currentElement._owner || null;\n\t if (owner) {\n\t var name = owner.getName();\n\t if (name) {\n\t return ' This DOM node was rendered by `' + name + '`.';\n\t }\n\t }\n\t }\n\t return '';\n\t}\n\t\n\tfunction friendlyStringify(obj) {\n\t if (typeof obj === 'object') {\n\t if (Array.isArray(obj)) {\n\t return '[' + obj.map(friendlyStringify).join(', ') + ']';\n\t } else {\n\t var pairs = [];\n\t for (var key in obj) {\n\t if (Object.prototype.hasOwnProperty.call(obj, key)) {\n\t var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n\t pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n\t }\n\t }\n\t return '{' + pairs.join(', ') + '}';\n\t }\n\t } else if (typeof obj === 'string') {\n\t return JSON.stringify(obj);\n\t } else if (typeof obj === 'function') {\n\t return '[function object]';\n\t }\n\t // Differs from JSON.stringify in that undefined because undefined and that\n\t // inf and nan don't become null\n\t return String(obj);\n\t}\n\t\n\tvar styleMutationWarning = {};\n\t\n\tfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n\t if (style1 == null || style2 == null) {\n\t return;\n\t }\n\t if (shallowEqual(style1, style2)) {\n\t return;\n\t }\n\t\n\t var componentName = component._tag;\n\t var owner = component._currentElement._owner;\n\t var ownerName;\n\t if (owner) {\n\t ownerName = owner.getName();\n\t }\n\t\n\t var hash = ownerName + '|' + componentName;\n\t\n\t if (styleMutationWarning.hasOwnProperty(hash)) {\n\t return;\n\t }\n\t\n\t styleMutationWarning[hash] = true;\n\t\n\t false ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n\t}\n\t\n\t/**\n\t * @param {object} component\n\t * @param {?object} props\n\t */\n\tfunction assertValidProps(component, props) {\n\t if (!props) {\n\t return;\n\t }\n\t // Note the use of `==` which checks for null or undefined.\n\t if (voidElementTags[component._tag]) {\n\t !(props.children == null && props.dangerouslySetInnerHTML == null) ? false ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n\t }\n\t if (props.dangerouslySetInnerHTML != null) {\n\t !(props.children == null) ? false ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n\t !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? false ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n\t }\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n\t process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n\t process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n\t }\n\t !(props.style == null || typeof props.style === 'object') ? false ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n\t}\n\t\n\tfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n\t if (transaction instanceof ReactServerRenderingTransaction) {\n\t return;\n\t }\n\t if (false) {\n\t // IE8 has no API for event capturing and the `onScroll` event doesn't\n\t // bubble.\n\t process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\\'t support the `onScroll` event') : void 0;\n\t }\n\t var containerInfo = inst._hostContainerInfo;\n\t var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n\t var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n\t listenTo(registrationName, doc);\n\t transaction.getReactMountReady().enqueue(putListener, {\n\t inst: inst,\n\t registrationName: registrationName,\n\t listener: listener\n\t });\n\t}\n\t\n\tfunction putListener() {\n\t var listenerToPut = this;\n\t EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n\t}\n\t\n\tfunction inputPostMount() {\n\t var inst = this;\n\t ReactDOMInput.postMountWrapper(inst);\n\t}\n\t\n\tfunction textareaPostMount() {\n\t var inst = this;\n\t ReactDOMTextarea.postMountWrapper(inst);\n\t}\n\t\n\tfunction optionPostMount() {\n\t var inst = this;\n\t ReactDOMOption.postMountWrapper(inst);\n\t}\n\t\n\tvar setAndValidateContentChildDev = emptyFunction;\n\tif (false) {\n\t setAndValidateContentChildDev = function (content) {\n\t var hasExistingContent = this._contentDebugID != null;\n\t var debugID = this._debugID;\n\t // This ID represents the inlined child that has no backing instance:\n\t var contentDebugID = -debugID;\n\t\n\t if (content == null) {\n\t if (hasExistingContent) {\n\t ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n\t }\n\t this._contentDebugID = null;\n\t return;\n\t }\n\t\n\t validateDOMNesting(null, String(content), this, this._ancestorInfo);\n\t this._contentDebugID = contentDebugID;\n\t if (hasExistingContent) {\n\t ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n\t ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n\t } else {\n\t ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n\t ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n\t ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n\t }\n\t };\n\t}\n\t\n\t// There are so many media events, it makes sense to just\n\t// maintain a list rather than create a `trapBubbledEvent` for each\n\tvar mediaEvents = {\n\t topAbort: 'abort',\n\t topCanPlay: 'canplay',\n\t topCanPlayThrough: 'canplaythrough',\n\t topDurationChange: 'durationchange',\n\t topEmptied: 'emptied',\n\t topEncrypted: 'encrypted',\n\t topEnded: 'ended',\n\t topError: 'error',\n\t topLoadedData: 'loadeddata',\n\t topLoadedMetadata: 'loadedmetadata',\n\t topLoadStart: 'loadstart',\n\t topPause: 'pause',\n\t topPlay: 'play',\n\t topPlaying: 'playing',\n\t topProgress: 'progress',\n\t topRateChange: 'ratechange',\n\t topSeeked: 'seeked',\n\t topSeeking: 'seeking',\n\t topStalled: 'stalled',\n\t topSuspend: 'suspend',\n\t topTimeUpdate: 'timeupdate',\n\t topVolumeChange: 'volumechange',\n\t topWaiting: 'waiting'\n\t};\n\t\n\tfunction trapBubbledEventsLocal() {\n\t var inst = this;\n\t // If a component renders to null or if another component fatals and causes\n\t // the state of the tree to be corrupted, `node` here can be null.\n\t !inst._rootNodeID ? false ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n\t var node = getNode(inst);\n\t !node ? false ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\t\n\t switch (inst._tag) {\n\t case 'iframe':\n\t case 'object':\n\t inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n\t break;\n\t case 'video':\n\t case 'audio':\n\t\n\t inst._wrapperState.listeners = [];\n\t // Create listener for each media event\n\t for (var event in mediaEvents) {\n\t if (mediaEvents.hasOwnProperty(event)) {\n\t inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n\t }\n\t }\n\t break;\n\t case 'source':\n\t inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n\t break;\n\t case 'img':\n\t inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n\t break;\n\t case 'form':\n\t inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n\t break;\n\t case 'input':\n\t case 'select':\n\t case 'textarea':\n\t inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n\t break;\n\t }\n\t}\n\t\n\tfunction postUpdateSelectWrapper() {\n\t ReactDOMSelect.postUpdateWrapper(this);\n\t}\n\t\n\t// For HTML, certain tags should omit their close tag. We keep a whitelist for\n\t// those special-case tags.\n\t\n\tvar omittedCloseTags = {\n\t 'area': true,\n\t 'base': true,\n\t 'br': true,\n\t 'col': true,\n\t 'embed': true,\n\t 'hr': true,\n\t 'img': true,\n\t 'input': true,\n\t 'keygen': true,\n\t 'link': true,\n\t 'meta': true,\n\t 'param': true,\n\t 'source': true,\n\t 'track': true,\n\t 'wbr': true\n\t};\n\t\n\tvar newlineEatingTags = {\n\t 'listing': true,\n\t 'pre': true,\n\t 'textarea': true\n\t};\n\t\n\t// For HTML, certain tags cannot have children. This has the same purpose as\n\t// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\t\n\tvar voidElementTags = _assign({\n\t 'menuitem': true\n\t}, omittedCloseTags);\n\t\n\t// We accept any tag to be rendered but since this gets injected into arbitrary\n\t// HTML, we want to make sure that it's a safe tag.\n\t// http://www.w3.org/TR/REC-xml/#NT-Name\n\t\n\tvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\n\tvar validatedTagCache = {};\n\tvar hasOwnProperty = {}.hasOwnProperty;\n\t\n\tfunction validateDangerousTag(tag) {\n\t if (!hasOwnProperty.call(validatedTagCache, tag)) {\n\t !VALID_TAG_REGEX.test(tag) ? false ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n\t validatedTagCache[tag] = true;\n\t }\n\t}\n\t\n\tfunction isCustomComponent(tagName, props) {\n\t return tagName.indexOf('-') >= 0 || props.is != null;\n\t}\n\t\n\tvar globalIdCounter = 1;\n\t\n\t/**\n\t * Creates a new React class that is idempotent and capable of containing other\n\t * React components. It accepts event listeners and DOM properties that are\n\t * valid according to `DOMProperty`.\n\t *\n\t * - Event listeners: `onClick`, `onMouseDown`, etc.\n\t * - DOM properties: `className`, `name`, `title`, etc.\n\t *\n\t * The `style` property functions differently from the DOM API. It accepts an\n\t * object mapping of style properties to values.\n\t *\n\t * @constructor ReactDOMComponent\n\t * @extends ReactMultiChild\n\t */\n\tfunction ReactDOMComponent(element) {\n\t var tag = element.type;\n\t validateDangerousTag(tag);\n\t this._currentElement = element;\n\t this._tag = tag.toLowerCase();\n\t this._namespaceURI = null;\n\t this._renderedChildren = null;\n\t this._previousStyle = null;\n\t this._previousStyleCopy = null;\n\t this._hostNode = null;\n\t this._hostParent = null;\n\t this._rootNodeID = 0;\n\t this._domID = 0;\n\t this._hostContainerInfo = null;\n\t this._wrapperState = null;\n\t this._topLevelWrapper = null;\n\t this._flags = 0;\n\t if (false) {\n\t this._ancestorInfo = null;\n\t setAndValidateContentChildDev.call(this, null);\n\t }\n\t}\n\t\n\tReactDOMComponent.displayName = 'ReactDOMComponent';\n\t\n\tReactDOMComponent.Mixin = {\n\t\n\t /**\n\t * Generates root tag markup then recurses. This method has side effects and\n\t * is not idempotent.\n\t *\n\t * @internal\n\t * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n\t * @param {?ReactDOMComponent} the parent component instance\n\t * @param {?object} info about the host container\n\t * @param {object} context\n\t * @return {string} The computed markup.\n\t */\n\t mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n\t this._rootNodeID = globalIdCounter++;\n\t this._domID = hostContainerInfo._idCounter++;\n\t this._hostParent = hostParent;\n\t this._hostContainerInfo = hostContainerInfo;\n\t\n\t var props = this._currentElement.props;\n\t\n\t switch (this._tag) {\n\t case 'audio':\n\t case 'form':\n\t case 'iframe':\n\t case 'img':\n\t case 'link':\n\t case 'object':\n\t case 'source':\n\t case 'video':\n\t this._wrapperState = {\n\t listeners: null\n\t };\n\t transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n\t break;\n\t case 'input':\n\t ReactDOMInput.mountWrapper(this, props, hostParent);\n\t props = ReactDOMInput.getHostProps(this, props);\n\t transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n\t break;\n\t case 'option':\n\t ReactDOMOption.mountWrapper(this, props, hostParent);\n\t props = ReactDOMOption.getHostProps(this, props);\n\t break;\n\t case 'select':\n\t ReactDOMSelect.mountWrapper(this, props, hostParent);\n\t props = ReactDOMSelect.getHostProps(this, props);\n\t transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n\t break;\n\t case 'textarea':\n\t ReactDOMTextarea.mountWrapper(this, props, hostParent);\n\t props = ReactDOMTextarea.getHostProps(this, props);\n\t transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n\t break;\n\t }\n\t\n\t assertValidProps(this, props);\n\t\n\t // We create tags in the namespace of their parent container, except HTML\n\t // tags get no namespace.\n\t var namespaceURI;\n\t var parentTag;\n\t if (hostParent != null) {\n\t namespaceURI = hostParent._namespaceURI;\n\t parentTag = hostParent._tag;\n\t } else if (hostContainerInfo._tag) {\n\t namespaceURI = hostContainerInfo._namespaceURI;\n\t parentTag = hostContainerInfo._tag;\n\t }\n\t if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n\t namespaceURI = DOMNamespaces.html;\n\t }\n\t if (namespaceURI === DOMNamespaces.html) {\n\t if (this._tag === 'svg') {\n\t namespaceURI = DOMNamespaces.svg;\n\t } else if (this._tag === 'math') {\n\t namespaceURI = DOMNamespaces.mathml;\n\t }\n\t }\n\t this._namespaceURI = namespaceURI;\n\t\n\t if (false) {\n\t var parentInfo;\n\t if (hostParent != null) {\n\t parentInfo = hostParent._ancestorInfo;\n\t } else if (hostContainerInfo._tag) {\n\t parentInfo = hostContainerInfo._ancestorInfo;\n\t }\n\t if (parentInfo) {\n\t // parentInfo should always be present except for the top-level\n\t // component when server rendering\n\t validateDOMNesting(this._tag, null, this, parentInfo);\n\t }\n\t this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n\t }\n\t\n\t var mountImage;\n\t if (transaction.useCreateElement) {\n\t var ownerDocument = hostContainerInfo._ownerDocument;\n\t var el;\n\t if (namespaceURI === DOMNamespaces.html) {\n\t if (this._tag === 'script') {\n\t // Create the script via .innerHTML so its \"parser-inserted\" flag is\n\t // set to true and it does not execute\n\t var div = ownerDocument.createElement('div');\n\t var type = this._currentElement.type;\n\t div.innerHTML = '<' + type + '></' + type + '>';\n\t el = div.removeChild(div.firstChild);\n\t } else if (props.is) {\n\t el = ownerDocument.createElement(this._currentElement.type, props.is);\n\t } else {\n\t // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n\t // See discussion in https://github.com/facebook/react/pull/6896\n\t // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n\t el = ownerDocument.createElement(this._currentElement.type);\n\t }\n\t } else {\n\t el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n\t }\n\t ReactDOMComponentTree.precacheNode(this, el);\n\t this._flags |= Flags.hasCachedChildNodes;\n\t if (!this._hostParent) {\n\t DOMPropertyOperations.setAttributeForRoot(el);\n\t }\n\t this._updateDOMProperties(null, props, transaction);\n\t var lazyTree = DOMLazyTree(el);\n\t this._createInitialChildren(transaction, props, context, lazyTree);\n\t mountImage = lazyTree;\n\t } else {\n\t var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n\t var tagContent = this._createContentMarkup(transaction, props, context);\n\t if (!tagContent && omittedCloseTags[this._tag]) {\n\t mountImage = tagOpen + '/>';\n\t } else {\n\t mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n\t }\n\t }\n\t\n\t switch (this._tag) {\n\t case 'input':\n\t transaction.getReactMountReady().enqueue(inputPostMount, this);\n\t if (props.autoFocus) {\n\t transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n\t }\n\t break;\n\t case 'textarea':\n\t transaction.getReactMountReady().enqueue(textareaPostMount, this);\n\t if (props.autoFocus) {\n\t transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n\t }\n\t break;\n\t case 'select':\n\t if (props.autoFocus) {\n\t transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n\t }\n\t break;\n\t case 'button':\n\t if (props.autoFocus) {\n\t transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n\t }\n\t break;\n\t case 'option':\n\t transaction.getReactMountReady().enqueue(optionPostMount, this);\n\t break;\n\t }\n\t\n\t return mountImage;\n\t },\n\t\n\t /**\n\t * Creates markup for the open tag and all attributes.\n\t *\n\t * This method has side effects because events get registered.\n\t *\n\t * Iterating over object properties is faster than iterating over arrays.\n\t * @see http://jsperf.com/obj-vs-arr-iteration\n\t *\n\t * @private\n\t * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n\t * @param {object} props\n\t * @return {string} Markup of opening tag.\n\t */\n\t _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n\t var ret = '<' + this._currentElement.type;\n\t\n\t for (var propKey in props) {\n\t if (!props.hasOwnProperty(propKey)) {\n\t continue;\n\t }\n\t var propValue = props[propKey];\n\t if (propValue == null) {\n\t continue;\n\t }\n\t if (registrationNameModules.hasOwnProperty(propKey)) {\n\t if (propValue) {\n\t enqueuePutListener(this, propKey, propValue, transaction);\n\t }\n\t } else {\n\t if (propKey === STYLE) {\n\t if (propValue) {\n\t if (false) {\n\t // See `_updateDOMProperties`. style block\n\t this._previousStyle = propValue;\n\t }\n\t propValue = this._previousStyleCopy = _assign({}, props.style);\n\t }\n\t propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n\t }\n\t var markup = null;\n\t if (this._tag != null && isCustomComponent(this._tag, props)) {\n\t if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n\t markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n\t }\n\t } else {\n\t markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n\t }\n\t if (markup) {\n\t ret += ' ' + markup;\n\t }\n\t }\n\t }\n\t\n\t // For static pages, no need to put React ID and checksum. Saves lots of\n\t // bytes.\n\t if (transaction.renderToStaticMarkup) {\n\t return ret;\n\t }\n\t\n\t if (!this._hostParent) {\n\t ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n\t }\n\t ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n\t return ret;\n\t },\n\t\n\t /**\n\t * Creates markup for the content between the tags.\n\t *\n\t * @private\n\t * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n\t * @param {object} props\n\t * @param {object} context\n\t * @return {string} Content markup.\n\t */\n\t _createContentMarkup: function (transaction, props, context) {\n\t var ret = '';\n\t\n\t // Intentional use of != to avoid catching zero/false.\n\t var innerHTML = props.dangerouslySetInnerHTML;\n\t if (innerHTML != null) {\n\t if (innerHTML.__html != null) {\n\t ret = innerHTML.__html;\n\t }\n\t } else {\n\t var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n\t var childrenToUse = contentToUse != null ? null : props.children;\n\t if (contentToUse != null) {\n\t // TODO: Validate that text is allowed as a child of this node\n\t ret = escapeTextContentForBrowser(contentToUse);\n\t if (false) {\n\t setAndValidateContentChildDev.call(this, contentToUse);\n\t }\n\t } else if (childrenToUse != null) {\n\t var mountImages = this.mountChildren(childrenToUse, transaction, context);\n\t ret = mountImages.join('');\n\t }\n\t }\n\t if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n\t // text/html ignores the first character in these tags if it's a newline\n\t // Prefer to break application/xml over text/html (for now) by adding\n\t // a newline specifically to get eaten by the parser. (Alternately for\n\t // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n\t // \\r is normalized out by HTMLTextAreaElement#value.)\n\t // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n\t // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n\t // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n\t // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n\t // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n\t return '\\n' + ret;\n\t } else {\n\t return ret;\n\t }\n\t },\n\t\n\t _createInitialChildren: function (transaction, props, context, lazyTree) {\n\t // Intentional use of != to avoid catching zero/false.\n\t var innerHTML = props.dangerouslySetInnerHTML;\n\t if (innerHTML != null) {\n\t if (innerHTML.__html != null) {\n\t DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n\t }\n\t } else {\n\t var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n\t var childrenToUse = contentToUse != null ? null : props.children;\n\t if (contentToUse != null) {\n\t // TODO: Validate that text is allowed as a child of this node\n\t if (false) {\n\t setAndValidateContentChildDev.call(this, contentToUse);\n\t }\n\t DOMLazyTree.queueText(lazyTree, contentToUse);\n\t } else if (childrenToUse != null) {\n\t var mountImages = this.mountChildren(childrenToUse, transaction, context);\n\t for (var i = 0; i < mountImages.length; i++) {\n\t DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n\t }\n\t }\n\t }\n\t },\n\t\n\t /**\n\t * Receives a next element and updates the component.\n\t *\n\t * @internal\n\t * @param {ReactElement} nextElement\n\t * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n\t * @param {object} context\n\t */\n\t receiveComponent: function (nextElement, transaction, context) {\n\t var prevElement = this._currentElement;\n\t this._currentElement = nextElement;\n\t this.updateComponent(transaction, prevElement, nextElement, context);\n\t },\n\t\n\t /**\n\t * Updates a DOM component after it has already been allocated and\n\t * attached to the DOM. Reconciles the root DOM node, then recurses.\n\t *\n\t * @param {ReactReconcileTransaction} transaction\n\t * @param {ReactElement} prevElement\n\t * @param {ReactElement} nextElement\n\t * @internal\n\t * @overridable\n\t */\n\t updateComponent: function (transaction, prevElement, nextElement, context) {\n\t var lastProps = prevElement.props;\n\t var nextProps = this._currentElement.props;\n\t\n\t switch (this._tag) {\n\t case 'input':\n\t lastProps = ReactDOMInput.getHostProps(this, lastProps);\n\t nextProps = ReactDOMInput.getHostProps(this, nextProps);\n\t break;\n\t case 'option':\n\t lastProps = ReactDOMOption.getHostProps(this, lastProps);\n\t nextProps = ReactDOMOption.getHostProps(this, nextProps);\n\t break;\n\t case 'select':\n\t lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n\t nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n\t break;\n\t case 'textarea':\n\t lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n\t nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n\t break;\n\t }\n\t\n\t assertValidProps(this, nextProps);\n\t this._updateDOMProperties(lastProps, nextProps, transaction);\n\t this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\t\n\t switch (this._tag) {\n\t case 'input':\n\t // Update the wrapper around inputs *after* updating props. This has to\n\t // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n\t // raise warnings and prevent the new value from being assigned.\n\t ReactDOMInput.updateWrapper(this);\n\t break;\n\t case 'textarea':\n\t ReactDOMTextarea.updateWrapper(this);\n\t break;\n\t case 'select':\n\t // <select> value update needs to occur after <option> children\n\t // reconciliation\n\t transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n\t break;\n\t }\n\t },\n\t\n\t /**\n\t * Reconciles the properties by detecting differences in property values and\n\t * updating the DOM as necessary. This function is probably the single most\n\t * critical path for performance optimization.\n\t *\n\t * TODO: Benchmark whether checking for changed values in memory actually\n\t * improves performance (especially statically positioned elements).\n\t * TODO: Benchmark the effects of putting this at the top since 99% of props\n\t * do not change for a given reconciliation.\n\t * TODO: Benchmark areas that can be improved with caching.\n\t *\n\t * @private\n\t * @param {object} lastProps\n\t * @param {object} nextProps\n\t * @param {?DOMElement} node\n\t */\n\t _updateDOMProperties: function (lastProps, nextProps, transaction) {\n\t var propKey;\n\t var styleName;\n\t var styleUpdates;\n\t for (propKey in lastProps) {\n\t if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n\t continue;\n\t }\n\t if (propKey === STYLE) {\n\t var lastStyle = this._previousStyleCopy;\n\t for (styleName in lastStyle) {\n\t if (lastStyle.hasOwnProperty(styleName)) {\n\t styleUpdates = styleUpdates || {};\n\t styleUpdates[styleName] = '';\n\t }\n\t }\n\t this._previousStyleCopy = null;\n\t } else if (registrationNameModules.hasOwnProperty(propKey)) {\n\t if (lastProps[propKey]) {\n\t // Only call deleteListener if there was a listener previously or\n\t // else willDeleteListener gets called when there wasn't actually a\n\t // listener (e.g., onClick={null})\n\t deleteListener(this, propKey);\n\t }\n\t } else if (isCustomComponent(this._tag, lastProps)) {\n\t if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n\t DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n\t }\n\t } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n\t DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n\t }\n\t }\n\t for (propKey in nextProps) {\n\t var nextProp = nextProps[propKey];\n\t var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n\t if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n\t continue;\n\t }\n\t if (propKey === STYLE) {\n\t if (nextProp) {\n\t if (false) {\n\t checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n\t this._previousStyle = nextProp;\n\t }\n\t nextProp = this._previousStyleCopy = _assign({}, nextProp);\n\t } else {\n\t this._previousStyleCopy = null;\n\t }\n\t if (lastProp) {\n\t // Unset styles on `lastProp` but not on `nextProp`.\n\t for (styleName in lastProp) {\n\t if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n\t styleUpdates = styleUpdates || {};\n\t styleUpdates[styleName] = '';\n\t }\n\t }\n\t // Update styles that changed since `lastProp`.\n\t for (styleName in nextProp) {\n\t if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n\t styleUpdates = styleUpdates || {};\n\t styleUpdates[styleName] = nextProp[styleName];\n\t }\n\t }\n\t } else {\n\t // Relies on `updateStylesByID` not mutating `styleUpdates`.\n\t styleUpdates = nextProp;\n\t }\n\t } else if (registrationNameModules.hasOwnProperty(propKey)) {\n\t if (nextProp) {\n\t enqueuePutListener(this, propKey, nextProp, transaction);\n\t } else if (lastProp) {\n\t deleteListener(this, propKey);\n\t }\n\t } else if (isCustomComponent(this._tag, nextProps)) {\n\t if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n\t DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n\t }\n\t } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n\t var node = getNode(this);\n\t // If we're updating to null or undefined, we should remove the property\n\t // from the DOM node instead of inadvertently setting to a string. This\n\t // brings us in line with the same behavior we have on initial render.\n\t if (nextProp != null) {\n\t DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n\t } else {\n\t DOMPropertyOperations.deleteValueForProperty(node, propKey);\n\t }\n\t }\n\t }\n\t if (styleUpdates) {\n\t CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n\t }\n\t },\n\t\n\t /**\n\t * Reconciles the children with the various properties that affect the\n\t * children content.\n\t *\n\t * @param {object} lastProps\n\t * @param {object} nextProps\n\t * @param {ReactReconcileTransaction} transaction\n\t * @param {object} context\n\t */\n\t _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n\t var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n\t var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\t\n\t var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n\t var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\t\n\t // Note the use of `!=` which checks for null or undefined.\n\t var lastChildren = lastContent != null ? null : lastProps.children;\n\t var nextChildren = nextContent != null ? null : nextProps.children;\n\t\n\t // If we're switching from children to content/html or vice versa, remove\n\t // the old content\n\t var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n\t var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n\t if (lastChildren != null && nextChildren == null) {\n\t this.updateChildren(null, transaction, context);\n\t } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n\t this.updateTextContent('');\n\t if (false) {\n\t ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n\t }\n\t }\n\t\n\t if (nextContent != null) {\n\t if (lastContent !== nextContent) {\n\t this.updateTextContent('' + nextContent);\n\t if (false) {\n\t setAndValidateContentChildDev.call(this, nextContent);\n\t }\n\t }\n\t } else if (nextHtml != null) {\n\t if (lastHtml !== nextHtml) {\n\t this.updateMarkup('' + nextHtml);\n\t }\n\t if (false) {\n\t ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n\t }\n\t } else if (nextChildren != null) {\n\t if (false) {\n\t setAndValidateContentChildDev.call(this, null);\n\t }\n\t\n\t this.updateChildren(nextChildren, transaction, context);\n\t }\n\t },\n\t\n\t getHostNode: function () {\n\t return getNode(this);\n\t },\n\t\n\t /**\n\t * Destroys all event registrations for this instance. Does not remove from\n\t * the DOM. That must be done by the parent.\n\t *\n\t * @internal\n\t */\n\t unmountComponent: function (safely) {\n\t switch (this._tag) {\n\t case 'audio':\n\t case 'form':\n\t case 'iframe':\n\t case 'img':\n\t case 'link':\n\t case 'object':\n\t case 'source':\n\t case 'video':\n\t var listeners = this._wrapperState.listeners;\n\t if (listeners) {\n\t for (var i = 0; i < listeners.length; i++) {\n\t listeners[i].remove();\n\t }\n\t }\n\t break;\n\t case 'html':\n\t case 'head':\n\t case 'body':\n\t /**\n\t * Components like <html> <head> and <body> can't be removed or added\n\t * easily in a cross-browser way, however it's valuable to be able to\n\t * take advantage of React's reconciliation for styling and <title>\n\t * management. So we just document it and throw in dangerous cases.\n\t */\n\t true ? false ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n\t break;\n\t }\n\t\n\t this.unmountChildren(safely);\n\t ReactDOMComponentTree.uncacheNode(this);\n\t EventPluginHub.deleteAllListeners(this);\n\t this._rootNodeID = 0;\n\t this._domID = 0;\n\t this._wrapperState = null;\n\t\n\t if (false) {\n\t setAndValidateContentChildDev.call(this, null);\n\t }\n\t },\n\t\n\t getPublicInstance: function () {\n\t return getNode(this);\n\t }\n\t\n\t};\n\t\n\t_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\t\n\tmodule.exports = ReactDOMComponent;\n\n/***/ },\n/* 290 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar validateDOMNesting = __webpack_require__(87);\n\t\n\tvar DOC_NODE_TYPE = 9;\n\t\n\tfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n\t var info = {\n\t _topLevelWrapper: topLevelWrapper,\n\t _idCounter: 1,\n\t _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n\t _node: node,\n\t _tag: node ? node.nodeName.toLowerCase() : null,\n\t _namespaceURI: node ? node.namespaceURI : null\n\t };\n\t if (false) {\n\t info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n\t }\n\t return info;\n\t}\n\t\n\tmodule.exports = ReactDOMContainerInfo;\n\n/***/ },\n/* 291 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar DOMLazyTree = __webpack_require__(30);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\t\n\tvar ReactDOMEmptyComponent = function (instantiate) {\n\t // ReactCompositeComponent uses this:\n\t this._currentElement = null;\n\t // ReactDOMComponentTree uses these:\n\t this._hostNode = null;\n\t this._hostParent = null;\n\t this._hostContainerInfo = null;\n\t this._domID = 0;\n\t};\n\t_assign(ReactDOMEmptyComponent.prototype, {\n\t mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n\t var domID = hostContainerInfo._idCounter++;\n\t this._domID = domID;\n\t this._hostParent = hostParent;\n\t this._hostContainerInfo = hostContainerInfo;\n\t\n\t var nodeValue = ' react-empty: ' + this._domID + ' ';\n\t if (transaction.useCreateElement) {\n\t var ownerDocument = hostContainerInfo._ownerDocument;\n\t var node = ownerDocument.createComment(nodeValue);\n\t ReactDOMComponentTree.precacheNode(this, node);\n\t return DOMLazyTree(node);\n\t } else {\n\t if (transaction.renderToStaticMarkup) {\n\t // Normally we'd insert a comment node, but since this is a situation\n\t // where React won't take over (static pages), we can simply return\n\t // nothing.\n\t return '';\n\t }\n\t return '<!--' + nodeValue + '-->';\n\t }\n\t },\n\t receiveComponent: function () {},\n\t getHostNode: function () {\n\t return ReactDOMComponentTree.getNodeFromInstance(this);\n\t },\n\t unmountComponent: function () {\n\t ReactDOMComponentTree.uncacheNode(this);\n\t }\n\t});\n\t\n\tmodule.exports = ReactDOMEmptyComponent;\n\n/***/ },\n/* 292 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactDOMFeatureFlags = {\n\t useCreateElement: true,\n\t useFiber: false\n\t};\n\t\n\tmodule.exports = ReactDOMFeatureFlags;\n\n/***/ },\n/* 293 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar DOMChildrenOperations = __webpack_require__(72);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\t\n\t/**\n\t * Operations used to process updates to DOM nodes.\n\t */\n\tvar ReactDOMIDOperations = {\n\t\n\t /**\n\t * Updates a component's children by processing a series of updates.\n\t *\n\t * @param {array<object>} updates List of update configurations.\n\t * @internal\n\t */\n\t dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n\t var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n\t DOMChildrenOperations.processUpdates(node, updates);\n\t }\n\t};\n\t\n\tmodule.exports = ReactDOMIDOperations;\n\n/***/ },\n/* 294 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5),\n\t _assign = __webpack_require__(6);\n\t\n\tvar DOMPropertyOperations = __webpack_require__(120);\n\tvar LinkedValueUtils = __webpack_require__(77);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactUpdates = __webpack_require__(19);\n\t\n\tvar invariant = __webpack_require__(3);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar didWarnValueLink = false;\n\tvar didWarnCheckedLink = false;\n\tvar didWarnValueDefaultValue = false;\n\tvar didWarnCheckedDefaultChecked = false;\n\tvar didWarnControlledToUncontrolled = false;\n\tvar didWarnUncontrolledToControlled = false;\n\t\n\tfunction forceUpdateIfMounted() {\n\t if (this._rootNodeID) {\n\t // DOM component is still mounted; update\n\t ReactDOMInput.updateWrapper(this);\n\t }\n\t}\n\t\n\tfunction isControlled(props) {\n\t var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n\t return usesChecked ? props.checked != null : props.value != null;\n\t}\n\t\n\t/**\n\t * Implements an <input> host component that allows setting these optional\n\t * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n\t *\n\t * If `checked` or `value` are not supplied (or null/undefined), user actions\n\t * that affect the checked state or value will trigger updates to the element.\n\t *\n\t * If they are supplied (and not null/undefined), the rendered element will not\n\t * trigger updates to the element. Instead, the props must change in order for\n\t * the rendered element to be updated.\n\t *\n\t * The rendered element will be initialized as unchecked (or `defaultChecked`)\n\t * with an empty value (or `defaultValue`).\n\t *\n\t * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n\t */\n\tvar ReactDOMInput = {\n\t getHostProps: function (inst, props) {\n\t var value = LinkedValueUtils.getValue(props);\n\t var checked = LinkedValueUtils.getChecked(props);\n\t\n\t var hostProps = _assign({\n\t // Make sure we set .type before any other properties (setting .value\n\t // before .type means .value is lost in IE11 and below)\n\t type: undefined,\n\t // Make sure we set .step before .value (setting .value before .step\n\t // means .value is rounded on mount, based upon step precision)\n\t step: undefined,\n\t // Make sure we set .min & .max before .value (to ensure proper order\n\t // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n\t min: undefined,\n\t max: undefined\n\t }, props, {\n\t defaultChecked: undefined,\n\t defaultValue: undefined,\n\t value: value != null ? value : inst._wrapperState.initialValue,\n\t checked: checked != null ? checked : inst._wrapperState.initialChecked,\n\t onChange: inst._wrapperState.onChange\n\t });\n\t\n\t return hostProps;\n\t },\n\t\n\t mountWrapper: function (inst, props) {\n\t if (false) {\n\t LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\t\n\t var owner = inst._currentElement._owner;\n\t\n\t if (props.valueLink !== undefined && !didWarnValueLink) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n\t didWarnValueLink = true;\n\t }\n\t if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n\t didWarnCheckedLink = true;\n\t }\n\t if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n\t didWarnCheckedDefaultChecked = true;\n\t }\n\t if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n\t didWarnValueDefaultValue = true;\n\t }\n\t }\n\t\n\t var defaultValue = props.defaultValue;\n\t inst._wrapperState = {\n\t initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n\t initialValue: props.value != null ? props.value : defaultValue,\n\t listeners: null,\n\t onChange: _handleChange.bind(inst)\n\t };\n\t\n\t if (false) {\n\t inst._wrapperState.controlled = isControlled(props);\n\t }\n\t },\n\t\n\t updateWrapper: function (inst) {\n\t var props = inst._currentElement.props;\n\t\n\t if (false) {\n\t var controlled = isControlled(props);\n\t var owner = inst._currentElement._owner;\n\t\n\t if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n\t didWarnUncontrolledToControlled = true;\n\t }\n\t if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n\t didWarnControlledToUncontrolled = true;\n\t }\n\t }\n\t\n\t // TODO: Shouldn't this be getChecked(props)?\n\t var checked = props.checked;\n\t if (checked != null) {\n\t DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n\t }\n\t\n\t var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\t var value = LinkedValueUtils.getValue(props);\n\t if (value != null) {\n\t\n\t // Cast `value` to a string to ensure the value is set correctly. While\n\t // browsers typically do this as necessary, jsdom doesn't.\n\t var newValue = '' + value;\n\t\n\t // To avoid side effects (such as losing text selection), only set value if changed\n\t if (newValue !== node.value) {\n\t node.value = newValue;\n\t }\n\t } else {\n\t if (props.value == null && props.defaultValue != null) {\n\t node.defaultValue = '' + props.defaultValue;\n\t }\n\t if (props.checked == null && props.defaultChecked != null) {\n\t node.defaultChecked = !!props.defaultChecked;\n\t }\n\t }\n\t },\n\t\n\t postMountWrapper: function (inst) {\n\t var props = inst._currentElement.props;\n\t\n\t // This is in postMount because we need access to the DOM node, which is not\n\t // available until after the component has mounted.\n\t var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\t\n\t // Detach value from defaultValue. We won't do anything if we're working on\n\t // submit or reset inputs as those values & defaultValues are linked. They\n\t // are not resetable nodes so this operation doesn't matter and actually\n\t // removes browser-default values (eg \"Submit Query\") when no value is\n\t // provided.\n\t\n\t switch (props.type) {\n\t case 'submit':\n\t case 'reset':\n\t break;\n\t case 'color':\n\t case 'date':\n\t case 'datetime':\n\t case 'datetime-local':\n\t case 'month':\n\t case 'time':\n\t case 'week':\n\t // This fixes the no-show issue on iOS Safari and Android Chrome:\n\t // https://github.com/facebook/react/issues/7233\n\t node.value = '';\n\t node.value = node.defaultValue;\n\t break;\n\t default:\n\t node.value = node.value;\n\t break;\n\t }\n\t\n\t // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n\t // this is needed to work around a chrome bug where setting defaultChecked\n\t // will sometimes influence the value of checked (even after detachment).\n\t // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n\t // We need to temporarily unset name to avoid disrupting radio button groups.\n\t var name = node.name;\n\t if (name !== '') {\n\t node.name = '';\n\t }\n\t node.defaultChecked = !node.defaultChecked;\n\t node.defaultChecked = !node.defaultChecked;\n\t if (name !== '') {\n\t node.name = name;\n\t }\n\t }\n\t};\n\t\n\tfunction _handleChange(event) {\n\t var props = this._currentElement.props;\n\t\n\t var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\t\n\t // Here we use asap to wait until all updates have propagated, which\n\t // is important when using controlled components within layers:\n\t // https://github.com/facebook/react/issues/1698\n\t ReactUpdates.asap(forceUpdateIfMounted, this);\n\t\n\t var name = props.name;\n\t if (props.type === 'radio' && name != null) {\n\t var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n\t var queryRoot = rootNode;\n\t\n\t while (queryRoot.parentNode) {\n\t queryRoot = queryRoot.parentNode;\n\t }\n\t\n\t // If `rootNode.form` was non-null, then we could try `form.elements`,\n\t // but that sometimes behaves strangely in IE8. We could also try using\n\t // `form.getElementsByName`, but that will only return direct children\n\t // and won't include inputs that use the HTML5 `form=` attribute. Since\n\t // the input might not even be in a form, let's just use the global\n\t // `querySelectorAll` to ensure we don't miss anything.\n\t var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\t\n\t for (var i = 0; i < group.length; i++) {\n\t var otherNode = group[i];\n\t if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n\t continue;\n\t }\n\t // This will throw if radio buttons rendered by different copies of React\n\t // and the same name are rendered into the same form (same as #1939).\n\t // That's probably okay; we don't support it just as we don't support\n\t // mixing React radio buttons with non-React ones.\n\t var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n\t !otherInstance ? false ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n\t // If this is a controlled radio button group, forcing the input that\n\t // was previously checked to update will cause it to be come re-checked\n\t // as appropriate.\n\t ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n\t }\n\t }\n\t\n\t return returnValue;\n\t}\n\t\n\tmodule.exports = ReactDOMInput;\n\n/***/ },\n/* 295 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar React = __webpack_require__(36);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactDOMSelect = __webpack_require__(122);\n\t\n\tvar warning = __webpack_require__(4);\n\tvar didWarnInvalidOptionChildren = false;\n\t\n\tfunction flattenChildren(children) {\n\t var content = '';\n\t\n\t // Flatten children and warn if they aren't strings or numbers;\n\t // invalid types are ignored.\n\t React.Children.forEach(children, function (child) {\n\t if (child == null) {\n\t return;\n\t }\n\t if (typeof child === 'string' || typeof child === 'number') {\n\t content += child;\n\t } else if (!didWarnInvalidOptionChildren) {\n\t didWarnInvalidOptionChildren = true;\n\t false ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n\t }\n\t });\n\t\n\t return content;\n\t}\n\t\n\t/**\n\t * Implements an <option> host component that warns when `selected` is set.\n\t */\n\tvar ReactDOMOption = {\n\t mountWrapper: function (inst, props, hostParent) {\n\t // TODO (yungsters): Remove support for `selected` in <option>.\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n\t }\n\t\n\t // Look up whether this option is 'selected'\n\t var selectValue = null;\n\t if (hostParent != null) {\n\t var selectParent = hostParent;\n\t\n\t if (selectParent._tag === 'optgroup') {\n\t selectParent = selectParent._hostParent;\n\t }\n\t\n\t if (selectParent != null && selectParent._tag === 'select') {\n\t selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n\t }\n\t }\n\t\n\t // If the value is null (e.g., no specified value or after initial mount)\n\t // or missing (e.g., for <datalist>), we don't change props.selected\n\t var selected = null;\n\t if (selectValue != null) {\n\t var value;\n\t if (props.value != null) {\n\t value = props.value + '';\n\t } else {\n\t value = flattenChildren(props.children);\n\t }\n\t selected = false;\n\t if (Array.isArray(selectValue)) {\n\t // multiple\n\t for (var i = 0; i < selectValue.length; i++) {\n\t if ('' + selectValue[i] === value) {\n\t selected = true;\n\t break;\n\t }\n\t }\n\t } else {\n\t selected = '' + selectValue === value;\n\t }\n\t }\n\t\n\t inst._wrapperState = { selected: selected };\n\t },\n\t\n\t postMountWrapper: function (inst) {\n\t // value=\"\" should make a value attribute (#6219)\n\t var props = inst._currentElement.props;\n\t if (props.value != null) {\n\t var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\t node.setAttribute('value', props.value);\n\t }\n\t },\n\t\n\t getHostProps: function (inst, props) {\n\t var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\t\n\t // Read state only from initial mount because <select> updates value\n\t // manually; we need the initial state only for server rendering\n\t if (inst._wrapperState.selected != null) {\n\t hostProps.selected = inst._wrapperState.selected;\n\t }\n\t\n\t var content = flattenChildren(props.children);\n\t\n\t if (content) {\n\t hostProps.children = content;\n\t }\n\t\n\t return hostProps;\n\t }\n\t\n\t};\n\t\n\tmodule.exports = ReactDOMOption;\n\n/***/ },\n/* 296 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\t\n\tvar getNodeForCharacterOffset = __webpack_require__(335);\n\tvar getTextContentAccessor = __webpack_require__(133);\n\t\n\t/**\n\t * While `isCollapsed` is available on the Selection object and `collapsed`\n\t * is available on the Range object, IE11 sometimes gets them wrong.\n\t * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n\t */\n\tfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n\t return anchorNode === focusNode && anchorOffset === focusOffset;\n\t}\n\t\n\t/**\n\t * Get the appropriate anchor and focus node/offset pairs for IE.\n\t *\n\t * The catch here is that IE's selection API doesn't provide information\n\t * about whether the selection is forward or backward, so we have to\n\t * behave as though it's always forward.\n\t *\n\t * IE text differs from modern selection in that it behaves as though\n\t * block elements end with a new line. This means character offsets will\n\t * differ between the two APIs.\n\t *\n\t * @param {DOMElement} node\n\t * @return {object}\n\t */\n\tfunction getIEOffsets(node) {\n\t var selection = document.selection;\n\t var selectedRange = selection.createRange();\n\t var selectedLength = selectedRange.text.length;\n\t\n\t // Duplicate selection so we can move range without breaking user selection.\n\t var fromStart = selectedRange.duplicate();\n\t fromStart.moveToElementText(node);\n\t fromStart.setEndPoint('EndToStart', selectedRange);\n\t\n\t var startOffset = fromStart.text.length;\n\t var endOffset = startOffset + selectedLength;\n\t\n\t return {\n\t start: startOffset,\n\t end: endOffset\n\t };\n\t}\n\t\n\t/**\n\t * @param {DOMElement} node\n\t * @return {?object}\n\t */\n\tfunction getModernOffsets(node) {\n\t var selection = window.getSelection && window.getSelection();\n\t\n\t if (!selection || selection.rangeCount === 0) {\n\t return null;\n\t }\n\t\n\t var anchorNode = selection.anchorNode;\n\t var anchorOffset = selection.anchorOffset;\n\t var focusNode = selection.focusNode;\n\t var focusOffset = selection.focusOffset;\n\t\n\t var currentRange = selection.getRangeAt(0);\n\t\n\t // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n\t // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n\t // divs do not seem to expose properties, triggering a \"Permission denied\n\t // error\" if any of its properties are accessed. The only seemingly possible\n\t // way to avoid erroring is to access a property that typically works for\n\t // non-anonymous divs and catch any error that may otherwise arise. See\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n\t try {\n\t /* eslint-disable no-unused-expressions */\n\t currentRange.startContainer.nodeType;\n\t currentRange.endContainer.nodeType;\n\t /* eslint-enable no-unused-expressions */\n\t } catch (e) {\n\t return null;\n\t }\n\t\n\t // If the node and offset values are the same, the selection is collapsed.\n\t // `Selection.isCollapsed` is available natively, but IE sometimes gets\n\t // this value wrong.\n\t var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\t\n\t var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\t\n\t var tempRange = currentRange.cloneRange();\n\t tempRange.selectNodeContents(node);\n\t tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\t\n\t var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\t\n\t var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n\t var end = start + rangeLength;\n\t\n\t // Detect whether the selection is backward.\n\t var detectionRange = document.createRange();\n\t detectionRange.setStart(anchorNode, anchorOffset);\n\t detectionRange.setEnd(focusNode, focusOffset);\n\t var isBackward = detectionRange.collapsed;\n\t\n\t return {\n\t start: isBackward ? end : start,\n\t end: isBackward ? start : end\n\t };\n\t}\n\t\n\t/**\n\t * @param {DOMElement|DOMTextNode} node\n\t * @param {object} offsets\n\t */\n\tfunction setIEOffsets(node, offsets) {\n\t var range = document.selection.createRange().duplicate();\n\t var start, end;\n\t\n\t if (offsets.end === undefined) {\n\t start = offsets.start;\n\t end = start;\n\t } else if (offsets.start > offsets.end) {\n\t start = offsets.end;\n\t end = offsets.start;\n\t } else {\n\t start = offsets.start;\n\t end = offsets.end;\n\t }\n\t\n\t range.moveToElementText(node);\n\t range.moveStart('character', start);\n\t range.setEndPoint('EndToStart', range);\n\t range.moveEnd('character', end - start);\n\t range.select();\n\t}\n\t\n\t/**\n\t * In modern non-IE browsers, we can support both forward and backward\n\t * selections.\n\t *\n\t * Note: IE10+ supports the Selection object, but it does not support\n\t * the `extend` method, which means that even in modern IE, it's not possible\n\t * to programmatically create a backward selection. Thus, for all IE\n\t * versions, we use the old IE API to create our selections.\n\t *\n\t * @param {DOMElement|DOMTextNode} node\n\t * @param {object} offsets\n\t */\n\tfunction setModernOffsets(node, offsets) {\n\t if (!window.getSelection) {\n\t return;\n\t }\n\t\n\t var selection = window.getSelection();\n\t var length = node[getTextContentAccessor()].length;\n\t var start = Math.min(offsets.start, length);\n\t var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\t\n\t // IE 11 uses modern selection, but doesn't support the extend method.\n\t // Flip backward selections, so we can set with a single range.\n\t if (!selection.extend && start > end) {\n\t var temp = end;\n\t end = start;\n\t start = temp;\n\t }\n\t\n\t var startMarker = getNodeForCharacterOffset(node, start);\n\t var endMarker = getNodeForCharacterOffset(node, end);\n\t\n\t if (startMarker && endMarker) {\n\t var range = document.createRange();\n\t range.setStart(startMarker.node, startMarker.offset);\n\t selection.removeAllRanges();\n\t\n\t if (start > end) {\n\t selection.addRange(range);\n\t selection.extend(endMarker.node, endMarker.offset);\n\t } else {\n\t range.setEnd(endMarker.node, endMarker.offset);\n\t selection.addRange(range);\n\t }\n\t }\n\t}\n\t\n\tvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\t\n\tvar ReactDOMSelection = {\n\t /**\n\t * @param {DOMElement} node\n\t */\n\t getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\t\n\t /**\n\t * @param {DOMElement|DOMTextNode} node\n\t * @param {object} offsets\n\t */\n\t setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n\t};\n\t\n\tmodule.exports = ReactDOMSelection;\n\n/***/ },\n/* 297 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5),\n\t _assign = __webpack_require__(6);\n\t\n\tvar DOMChildrenOperations = __webpack_require__(72);\n\tvar DOMLazyTree = __webpack_require__(30);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\t\n\tvar escapeTextContentForBrowser = __webpack_require__(54);\n\tvar invariant = __webpack_require__(3);\n\tvar validateDOMNesting = __webpack_require__(87);\n\t\n\t/**\n\t * Text nodes violate a couple assumptions that React makes about components:\n\t *\n\t * - When mounting text into the DOM, adjacent text nodes are merged.\n\t * - Text nodes cannot be assigned a React root ID.\n\t *\n\t * This component is used to wrap strings between comment nodes so that they\n\t * can undergo the same reconciliation that is applied to elements.\n\t *\n\t * TODO: Investigate representing React components in the DOM with text nodes.\n\t *\n\t * @class ReactDOMTextComponent\n\t * @extends ReactComponent\n\t * @internal\n\t */\n\tvar ReactDOMTextComponent = function (text) {\n\t // TODO: This is really a ReactText (ReactNode), not a ReactElement\n\t this._currentElement = text;\n\t this._stringText = '' + text;\n\t // ReactDOMComponentTree uses these:\n\t this._hostNode = null;\n\t this._hostParent = null;\n\t\n\t // Properties\n\t this._domID = 0;\n\t this._mountIndex = 0;\n\t this._closingComment = null;\n\t this._commentNodes = null;\n\t};\n\t\n\t_assign(ReactDOMTextComponent.prototype, {\n\t\n\t /**\n\t * Creates the markup for this text node. This node is not intended to have\n\t * any features besides containing text content.\n\t *\n\t * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n\t * @return {string} Markup for this text node.\n\t * @internal\n\t */\n\t mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n\t if (false) {\n\t var parentInfo;\n\t if (hostParent != null) {\n\t parentInfo = hostParent._ancestorInfo;\n\t } else if (hostContainerInfo != null) {\n\t parentInfo = hostContainerInfo._ancestorInfo;\n\t }\n\t if (parentInfo) {\n\t // parentInfo should always be present except for the top-level\n\t // component when server rendering\n\t validateDOMNesting(null, this._stringText, this, parentInfo);\n\t }\n\t }\n\t\n\t var domID = hostContainerInfo._idCounter++;\n\t var openingValue = ' react-text: ' + domID + ' ';\n\t var closingValue = ' /react-text ';\n\t this._domID = domID;\n\t this._hostParent = hostParent;\n\t if (transaction.useCreateElement) {\n\t var ownerDocument = hostContainerInfo._ownerDocument;\n\t var openingComment = ownerDocument.createComment(openingValue);\n\t var closingComment = ownerDocument.createComment(closingValue);\n\t var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n\t DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n\t if (this._stringText) {\n\t DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n\t }\n\t DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n\t ReactDOMComponentTree.precacheNode(this, openingComment);\n\t this._closingComment = closingComment;\n\t return lazyTree;\n\t } else {\n\t var escapedText = escapeTextContentForBrowser(this._stringText);\n\t\n\t if (transaction.renderToStaticMarkup) {\n\t // Normally we'd wrap this between comment nodes for the reasons stated\n\t // above, but since this is a situation where React won't take over\n\t // (static pages), we can simply return the text as it is.\n\t return escapedText;\n\t }\n\t\n\t return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n\t }\n\t },\n\t\n\t /**\n\t * Updates this component by updating the text content.\n\t *\n\t * @param {ReactText} nextText The next text content\n\t * @param {ReactReconcileTransaction} transaction\n\t * @internal\n\t */\n\t receiveComponent: function (nextText, transaction) {\n\t if (nextText !== this._currentElement) {\n\t this._currentElement = nextText;\n\t var nextStringText = '' + nextText;\n\t if (nextStringText !== this._stringText) {\n\t // TODO: Save this as pending props and use performUpdateIfNecessary\n\t // and/or updateComponent to do the actual update for consistency with\n\t // other component types?\n\t this._stringText = nextStringText;\n\t var commentNodes = this.getHostNode();\n\t DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n\t }\n\t }\n\t },\n\t\n\t getHostNode: function () {\n\t var hostNode = this._commentNodes;\n\t if (hostNode) {\n\t return hostNode;\n\t }\n\t if (!this._closingComment) {\n\t var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n\t var node = openingComment.nextSibling;\n\t while (true) {\n\t !(node != null) ? false ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n\t if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n\t this._closingComment = node;\n\t break;\n\t }\n\t node = node.nextSibling;\n\t }\n\t }\n\t hostNode = [this._hostNode, this._closingComment];\n\t this._commentNodes = hostNode;\n\t return hostNode;\n\t },\n\t\n\t unmountComponent: function () {\n\t this._closingComment = null;\n\t this._commentNodes = null;\n\t ReactDOMComponentTree.uncacheNode(this);\n\t }\n\t\n\t});\n\t\n\tmodule.exports = ReactDOMTextComponent;\n\n/***/ },\n/* 298 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5),\n\t _assign = __webpack_require__(6);\n\t\n\tvar LinkedValueUtils = __webpack_require__(77);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactUpdates = __webpack_require__(19);\n\t\n\tvar invariant = __webpack_require__(3);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar didWarnValueLink = false;\n\tvar didWarnValDefaultVal = false;\n\t\n\tfunction forceUpdateIfMounted() {\n\t if (this._rootNodeID) {\n\t // DOM component is still mounted; update\n\t ReactDOMTextarea.updateWrapper(this);\n\t }\n\t}\n\t\n\t/**\n\t * Implements a <textarea> host component that allows setting `value`, and\n\t * `defaultValue`. This differs from the traditional DOM API because value is\n\t * usually set as PCDATA children.\n\t *\n\t * If `value` is not supplied (or null/undefined), user actions that affect the\n\t * value will trigger updates to the element.\n\t *\n\t * If `value` is supplied (and not null/undefined), the rendered element will\n\t * not trigger updates to the element. Instead, the `value` prop must change in\n\t * order for the rendered element to be updated.\n\t *\n\t * The rendered element will be initialized with an empty value, the prop\n\t * `defaultValue` if specified, or the children content (deprecated).\n\t */\n\tvar ReactDOMTextarea = {\n\t getHostProps: function (inst, props) {\n\t !(props.dangerouslySetInnerHTML == null) ? false ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\t\n\t // Always set children to the same thing. In IE9, the selection range will\n\t // get reset if `textContent` is mutated. We could add a check in setTextContent\n\t // to only set the value if/when the value differs from the node value (which would\n\t // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n\t // The value can be a boolean or object so that's why it's forced to be a string.\n\t var hostProps = _assign({}, props, {\n\t value: undefined,\n\t defaultValue: undefined,\n\t children: '' + inst._wrapperState.initialValue,\n\t onChange: inst._wrapperState.onChange\n\t });\n\t\n\t return hostProps;\n\t },\n\t\n\t mountWrapper: function (inst, props) {\n\t if (false) {\n\t LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n\t if (props.valueLink !== undefined && !didWarnValueLink) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n\t didWarnValueLink = true;\n\t }\n\t if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n\t didWarnValDefaultVal = true;\n\t }\n\t }\n\t\n\t var value = LinkedValueUtils.getValue(props);\n\t var initialValue = value;\n\t\n\t // Only bother fetching default value if we're going to use it\n\t if (value == null) {\n\t var defaultValue = props.defaultValue;\n\t // TODO (yungsters): Remove support for children content in <textarea>.\n\t var children = props.children;\n\t if (children != null) {\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n\t }\n\t !(defaultValue == null) ? false ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n\t if (Array.isArray(children)) {\n\t !(children.length <= 1) ? false ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n\t children = children[0];\n\t }\n\t\n\t defaultValue = '' + children;\n\t }\n\t if (defaultValue == null) {\n\t defaultValue = '';\n\t }\n\t initialValue = defaultValue;\n\t }\n\t\n\t inst._wrapperState = {\n\t initialValue: '' + initialValue,\n\t listeners: null,\n\t onChange: _handleChange.bind(inst)\n\t };\n\t },\n\t\n\t updateWrapper: function (inst) {\n\t var props = inst._currentElement.props;\n\t\n\t var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\t var value = LinkedValueUtils.getValue(props);\n\t if (value != null) {\n\t // Cast `value` to a string to ensure the value is set correctly. While\n\t // browsers typically do this as necessary, jsdom doesn't.\n\t var newValue = '' + value;\n\t\n\t // To avoid side effects (such as losing text selection), only set value if changed\n\t if (newValue !== node.value) {\n\t node.value = newValue;\n\t }\n\t if (props.defaultValue == null) {\n\t node.defaultValue = newValue;\n\t }\n\t }\n\t if (props.defaultValue != null) {\n\t node.defaultValue = props.defaultValue;\n\t }\n\t },\n\t\n\t postMountWrapper: function (inst) {\n\t // This is in postMount because we need access to the DOM node, which is not\n\t // available until after the component has mounted.\n\t var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\t\n\t // Warning: node.value may be the empty string at this point (IE11) if placeholder is set.\n\t node.value = node.textContent; // Detach value from defaultValue\n\t }\n\t};\n\t\n\tfunction _handleChange(event) {\n\t var props = this._currentElement.props;\n\t var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\t ReactUpdates.asap(forceUpdateIfMounted, this);\n\t return returnValue;\n\t}\n\t\n\tmodule.exports = ReactDOMTextarea;\n\n/***/ },\n/* 299 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * Return the lowest common ancestor of A and B, or null if they are in\n\t * different trees.\n\t */\n\tfunction getLowestCommonAncestor(instA, instB) {\n\t !('_hostNode' in instA) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\t !('_hostNode' in instB) ? false ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\t\n\t var depthA = 0;\n\t for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n\t depthA++;\n\t }\n\t var depthB = 0;\n\t for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n\t depthB++;\n\t }\n\t\n\t // If A is deeper, crawl up.\n\t while (depthA - depthB > 0) {\n\t instA = instA._hostParent;\n\t depthA--;\n\t }\n\t\n\t // If B is deeper, crawl up.\n\t while (depthB - depthA > 0) {\n\t instB = instB._hostParent;\n\t depthB--;\n\t }\n\t\n\t // Walk in lockstep until we find a match.\n\t var depth = depthA;\n\t while (depth--) {\n\t if (instA === instB) {\n\t return instA;\n\t }\n\t instA = instA._hostParent;\n\t instB = instB._hostParent;\n\t }\n\t return null;\n\t}\n\t\n\t/**\n\t * Return if A is an ancestor of B.\n\t */\n\tfunction isAncestor(instA, instB) {\n\t !('_hostNode' in instA) ? false ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\t !('_hostNode' in instB) ? false ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\t\n\t while (instB) {\n\t if (instB === instA) {\n\t return true;\n\t }\n\t instB = instB._hostParent;\n\t }\n\t return false;\n\t}\n\t\n\t/**\n\t * Return the parent instance of the passed-in instance.\n\t */\n\tfunction getParentInstance(inst) {\n\t !('_hostNode' in inst) ? false ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\t\n\t return inst._hostParent;\n\t}\n\t\n\t/**\n\t * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n\t */\n\tfunction traverseTwoPhase(inst, fn, arg) {\n\t var path = [];\n\t while (inst) {\n\t path.push(inst);\n\t inst = inst._hostParent;\n\t }\n\t var i;\n\t for (i = path.length; i-- > 0;) {\n\t fn(path[i], 'captured', arg);\n\t }\n\t for (i = 0; i < path.length; i++) {\n\t fn(path[i], 'bubbled', arg);\n\t }\n\t}\n\t\n\t/**\n\t * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n\t * should would receive a `mouseEnter` or `mouseLeave` event.\n\t *\n\t * Does not invoke the callback on the nearest common ancestor because nothing\n\t * \"entered\" or \"left\" that element.\n\t */\n\tfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n\t var common = from && to ? getLowestCommonAncestor(from, to) : null;\n\t var pathFrom = [];\n\t while (from && from !== common) {\n\t pathFrom.push(from);\n\t from = from._hostParent;\n\t }\n\t var pathTo = [];\n\t while (to && to !== common) {\n\t pathTo.push(to);\n\t to = to._hostParent;\n\t }\n\t var i;\n\t for (i = 0; i < pathFrom.length; i++) {\n\t fn(pathFrom[i], 'bubbled', argFrom);\n\t }\n\t for (i = pathTo.length; i-- > 0;) {\n\t fn(pathTo[i], 'captured', argTo);\n\t }\n\t}\n\t\n\tmodule.exports = {\n\t isAncestor: isAncestor,\n\t getLowestCommonAncestor: getLowestCommonAncestor,\n\t getParentInstance: getParentInstance,\n\t traverseTwoPhase: traverseTwoPhase,\n\t traverseEnterLeave: traverseEnterLeave\n\t};\n\n/***/ },\n/* 300 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar ReactUpdates = __webpack_require__(19);\n\tvar Transaction = __webpack_require__(53);\n\t\n\tvar emptyFunction = __webpack_require__(16);\n\t\n\tvar RESET_BATCHED_UPDATES = {\n\t initialize: emptyFunction,\n\t close: function () {\n\t ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n\t }\n\t};\n\t\n\tvar FLUSH_BATCHED_UPDATES = {\n\t initialize: emptyFunction,\n\t close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n\t};\n\t\n\tvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\t\n\tfunction ReactDefaultBatchingStrategyTransaction() {\n\t this.reinitializeTransaction();\n\t}\n\t\n\t_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n\t getTransactionWrappers: function () {\n\t return TRANSACTION_WRAPPERS;\n\t }\n\t});\n\t\n\tvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\t\n\tvar ReactDefaultBatchingStrategy = {\n\t isBatchingUpdates: false,\n\t\n\t /**\n\t * Call the provided function in a context within which calls to `setState`\n\t * and friends are batched such that components aren't updated unnecessarily.\n\t */\n\t batchedUpdates: function (callback, a, b, c, d, e) {\n\t var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\t\n\t ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\t\n\t // The code is written this way to avoid extra allocations\n\t if (alreadyBatchingUpdates) {\n\t return callback(a, b, c, d, e);\n\t } else {\n\t return transaction.perform(callback, null, a, b, c, d, e);\n\t }\n\t }\n\t};\n\t\n\tmodule.exports = ReactDefaultBatchingStrategy;\n\n/***/ },\n/* 301 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ARIADOMPropertyConfig = __webpack_require__(275);\n\tvar BeforeInputEventPlugin = __webpack_require__(277);\n\tvar ChangeEventPlugin = __webpack_require__(279);\n\tvar DefaultEventPluginOrder = __webpack_require__(281);\n\tvar EnterLeaveEventPlugin = __webpack_require__(282);\n\tvar HTMLDOMPropertyConfig = __webpack_require__(284);\n\tvar ReactComponentBrowserEnvironment = __webpack_require__(286);\n\tvar ReactDOMComponent = __webpack_require__(289);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactDOMEmptyComponent = __webpack_require__(291);\n\tvar ReactDOMTreeTraversal = __webpack_require__(299);\n\tvar ReactDOMTextComponent = __webpack_require__(297);\n\tvar ReactDefaultBatchingStrategy = __webpack_require__(300);\n\tvar ReactEventListener = __webpack_require__(304);\n\tvar ReactInjection = __webpack_require__(305);\n\tvar ReactReconcileTransaction = __webpack_require__(310);\n\tvar SVGDOMPropertyConfig = __webpack_require__(315);\n\tvar SelectEventPlugin = __webpack_require__(316);\n\tvar SimpleEventPlugin = __webpack_require__(317);\n\t\n\tvar alreadyInjected = false;\n\t\n\tfunction inject() {\n\t if (alreadyInjected) {\n\t // TODO: This is currently true because these injections are shared between\n\t // the client and the server package. They should be built independently\n\t // and not share any injection state. Then this problem will be solved.\n\t return;\n\t }\n\t alreadyInjected = true;\n\t\n\t ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\t\n\t /**\n\t * Inject modules for resolving DOM hierarchy and plugin ordering.\n\t */\n\t ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n\t ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n\t ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\t\n\t /**\n\t * Some important event plugins included by default (without having to require\n\t * them).\n\t */\n\t ReactInjection.EventPluginHub.injectEventPluginsByName({\n\t SimpleEventPlugin: SimpleEventPlugin,\n\t EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n\t ChangeEventPlugin: ChangeEventPlugin,\n\t SelectEventPlugin: SelectEventPlugin,\n\t BeforeInputEventPlugin: BeforeInputEventPlugin\n\t });\n\t\n\t ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\t\n\t ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\t\n\t ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n\t ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n\t ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\t\n\t ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n\t return new ReactDOMEmptyComponent(instantiate);\n\t });\n\t\n\t ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n\t ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\t\n\t ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n\t}\n\t\n\tmodule.exports = {\n\t inject: inject\n\t};\n\n/***/ },\n/* 302 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2014-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\t// The Symbol used to tag the ReactElement type. If there is no native Symbol\n\t// nor polyfill, then a plain number is used for performance.\n\t\n\tvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\t\n\tmodule.exports = REACT_ELEMENT_TYPE;\n\n/***/ },\n/* 303 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar EventPluginHub = __webpack_require__(40);\n\t\n\tfunction runEventQueueInBatch(events) {\n\t EventPluginHub.enqueueEvents(events);\n\t EventPluginHub.processEventQueue(false);\n\t}\n\t\n\tvar ReactEventEmitterMixin = {\n\t\n\t /**\n\t * Streams a fired top-level event to `EventPluginHub` where plugins have the\n\t * opportunity to create `ReactEvent`s to be dispatched.\n\t */\n\t handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n\t var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n\t runEventQueueInBatch(events);\n\t }\n\t};\n\t\n\tmodule.exports = ReactEventEmitterMixin;\n\n/***/ },\n/* 304 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar EventListener = __webpack_require__(109);\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\tvar PooledClass = __webpack_require__(28);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactUpdates = __webpack_require__(19);\n\t\n\tvar getEventTarget = __webpack_require__(84);\n\tvar getUnboundedScrollPosition = __webpack_require__(252);\n\t\n\t/**\n\t * Find the deepest React component completely containing the root of the\n\t * passed-in instance (for use when entire React trees are nested within each\n\t * other). If React trees are not nested, returns null.\n\t */\n\tfunction findParent(inst) {\n\t // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n\t // traversal, but caching is difficult to do correctly without using a\n\t // mutation observer to listen for all DOM changes.\n\t while (inst._hostParent) {\n\t inst = inst._hostParent;\n\t }\n\t var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n\t var container = rootNode.parentNode;\n\t return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n\t}\n\t\n\t// Used to store ancestor hierarchy in top level callback\n\tfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n\t this.topLevelType = topLevelType;\n\t this.nativeEvent = nativeEvent;\n\t this.ancestors = [];\n\t}\n\t_assign(TopLevelCallbackBookKeeping.prototype, {\n\t destructor: function () {\n\t this.topLevelType = null;\n\t this.nativeEvent = null;\n\t this.ancestors.length = 0;\n\t }\n\t});\n\tPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\t\n\tfunction handleTopLevelImpl(bookKeeping) {\n\t var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n\t var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\t\n\t // Loop through the hierarchy, in case there's any nested components.\n\t // It's important that we build the array of ancestors before calling any\n\t // event handlers, because event handlers can modify the DOM, leading to\n\t // inconsistencies with ReactMount's node cache. See #1105.\n\t var ancestor = targetInst;\n\t do {\n\t bookKeeping.ancestors.push(ancestor);\n\t ancestor = ancestor && findParent(ancestor);\n\t } while (ancestor);\n\t\n\t for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n\t targetInst = bookKeeping.ancestors[i];\n\t ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n\t }\n\t}\n\t\n\tfunction scrollValueMonitor(cb) {\n\t var scrollPosition = getUnboundedScrollPosition(window);\n\t cb(scrollPosition);\n\t}\n\t\n\tvar ReactEventListener = {\n\t _enabled: true,\n\t _handleTopLevel: null,\n\t\n\t WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\t\n\t setHandleTopLevel: function (handleTopLevel) {\n\t ReactEventListener._handleTopLevel = handleTopLevel;\n\t },\n\t\n\t setEnabled: function (enabled) {\n\t ReactEventListener._enabled = !!enabled;\n\t },\n\t\n\t isEnabled: function () {\n\t return ReactEventListener._enabled;\n\t },\n\t\n\t /**\n\t * Traps top-level events by using event bubbling.\n\t *\n\t * @param {string} topLevelType Record from `EventConstants`.\n\t * @param {string} handlerBaseName Event name (e.g. \"click\").\n\t * @param {object} element Element on which to attach listener.\n\t * @return {?object} An object with a remove function which will forcefully\n\t * remove the listener.\n\t * @internal\n\t */\n\t trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n\t if (!element) {\n\t return null;\n\t }\n\t return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n\t },\n\t\n\t /**\n\t * Traps a top-level event by using event capturing.\n\t *\n\t * @param {string} topLevelType Record from `EventConstants`.\n\t * @param {string} handlerBaseName Event name (e.g. \"click\").\n\t * @param {object} element Element on which to attach listener.\n\t * @return {?object} An object with a remove function which will forcefully\n\t * remove the listener.\n\t * @internal\n\t */\n\t trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n\t if (!element) {\n\t return null;\n\t }\n\t return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n\t },\n\t\n\t monitorScrollValue: function (refresh) {\n\t var callback = scrollValueMonitor.bind(null, refresh);\n\t EventListener.listen(window, 'scroll', callback);\n\t },\n\t\n\t dispatchEvent: function (topLevelType, nativeEvent) {\n\t if (!ReactEventListener._enabled) {\n\t return;\n\t }\n\t\n\t var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n\t try {\n\t // Event queue being processed in the same cycle allows\n\t // `preventDefault`.\n\t ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n\t } finally {\n\t TopLevelCallbackBookKeeping.release(bookKeeping);\n\t }\n\t }\n\t};\n\t\n\tmodule.exports = ReactEventListener;\n\n/***/ },\n/* 305 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar DOMProperty = __webpack_require__(31);\n\tvar EventPluginHub = __webpack_require__(40);\n\tvar EventPluginUtils = __webpack_require__(75);\n\tvar ReactComponentEnvironment = __webpack_require__(78);\n\tvar ReactEmptyComponent = __webpack_require__(123);\n\tvar ReactBrowserEventEmitter = __webpack_require__(51);\n\tvar ReactHostComponent = __webpack_require__(125);\n\tvar ReactUpdates = __webpack_require__(19);\n\t\n\tvar ReactInjection = {\n\t Component: ReactComponentEnvironment.injection,\n\t DOMProperty: DOMProperty.injection,\n\t EmptyComponent: ReactEmptyComponent.injection,\n\t EventPluginHub: EventPluginHub.injection,\n\t EventPluginUtils: EventPluginUtils.injection,\n\t EventEmitter: ReactBrowserEventEmitter.injection,\n\t HostComponent: ReactHostComponent.injection,\n\t Updates: ReactUpdates.injection\n\t};\n\t\n\tmodule.exports = ReactInjection;\n\n/***/ },\n/* 306 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar adler32 = __webpack_require__(328);\n\t\n\tvar TAG_END = /\\/?>/;\n\tvar COMMENT_START = /^<\\!\\-\\-/;\n\t\n\tvar ReactMarkupChecksum = {\n\t CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\t\n\t /**\n\t * @param {string} markup Markup string\n\t * @return {string} Markup string with checksum attribute attached\n\t */\n\t addChecksumToMarkup: function (markup) {\n\t var checksum = adler32(markup);\n\t\n\t // Add checksum (handle both parent tags, comments and self-closing tags)\n\t if (COMMENT_START.test(markup)) {\n\t return markup;\n\t } else {\n\t return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n\t }\n\t },\n\t\n\t /**\n\t * @param {string} markup to use\n\t * @param {DOMElement} element root React element\n\t * @returns {boolean} whether or not the markup is the same\n\t */\n\t canReuseMarkup: function (markup, element) {\n\t var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\t existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n\t var markupChecksum = adler32(markup);\n\t return markupChecksum === existingChecksum;\n\t }\n\t};\n\t\n\tmodule.exports = ReactMarkupChecksum;\n\n/***/ },\n/* 307 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar ReactComponentEnvironment = __webpack_require__(78);\n\tvar ReactInstanceMap = __webpack_require__(42);\n\tvar ReactInstrumentation = __webpack_require__(18);\n\t\n\tvar ReactCurrentOwner = __webpack_require__(21);\n\tvar ReactReconciler = __webpack_require__(32);\n\tvar ReactChildReconciler = __webpack_require__(285);\n\t\n\tvar emptyFunction = __webpack_require__(16);\n\tvar flattenChildren = __webpack_require__(331);\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * Make an update for markup to be rendered and inserted at a supplied index.\n\t *\n\t * @param {string} markup Markup that renders into an element.\n\t * @param {number} toIndex Destination index.\n\t * @private\n\t */\n\tfunction makeInsertMarkup(markup, afterNode, toIndex) {\n\t // NOTE: Null values reduce hidden classes.\n\t return {\n\t type: 'INSERT_MARKUP',\n\t content: markup,\n\t fromIndex: null,\n\t fromNode: null,\n\t toIndex: toIndex,\n\t afterNode: afterNode\n\t };\n\t}\n\t\n\t/**\n\t * Make an update for moving an existing element to another index.\n\t *\n\t * @param {number} fromIndex Source index of the existing element.\n\t * @param {number} toIndex Destination index of the element.\n\t * @private\n\t */\n\tfunction makeMove(child, afterNode, toIndex) {\n\t // NOTE: Null values reduce hidden classes.\n\t return {\n\t type: 'MOVE_EXISTING',\n\t content: null,\n\t fromIndex: child._mountIndex,\n\t fromNode: ReactReconciler.getHostNode(child),\n\t toIndex: toIndex,\n\t afterNode: afterNode\n\t };\n\t}\n\t\n\t/**\n\t * Make an update for removing an element at an index.\n\t *\n\t * @param {number} fromIndex Index of the element to remove.\n\t * @private\n\t */\n\tfunction makeRemove(child, node) {\n\t // NOTE: Null values reduce hidden classes.\n\t return {\n\t type: 'REMOVE_NODE',\n\t content: null,\n\t fromIndex: child._mountIndex,\n\t fromNode: node,\n\t toIndex: null,\n\t afterNode: null\n\t };\n\t}\n\t\n\t/**\n\t * Make an update for setting the markup of a node.\n\t *\n\t * @param {string} markup Markup that renders into an element.\n\t * @private\n\t */\n\tfunction makeSetMarkup(markup) {\n\t // NOTE: Null values reduce hidden classes.\n\t return {\n\t type: 'SET_MARKUP',\n\t content: markup,\n\t fromIndex: null,\n\t fromNode: null,\n\t toIndex: null,\n\t afterNode: null\n\t };\n\t}\n\t\n\t/**\n\t * Make an update for setting the text content.\n\t *\n\t * @param {string} textContent Text content to set.\n\t * @private\n\t */\n\tfunction makeTextContent(textContent) {\n\t // NOTE: Null values reduce hidden classes.\n\t return {\n\t type: 'TEXT_CONTENT',\n\t content: textContent,\n\t fromIndex: null,\n\t fromNode: null,\n\t toIndex: null,\n\t afterNode: null\n\t };\n\t}\n\t\n\t/**\n\t * Push an update, if any, onto the queue. Creates a new queue if none is\n\t * passed and always returns the queue. Mutative.\n\t */\n\tfunction enqueue(queue, update) {\n\t if (update) {\n\t queue = queue || [];\n\t queue.push(update);\n\t }\n\t return queue;\n\t}\n\t\n\t/**\n\t * Processes any enqueued updates.\n\t *\n\t * @private\n\t */\n\tfunction processQueue(inst, updateQueue) {\n\t ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n\t}\n\t\n\tvar setChildrenForInstrumentation = emptyFunction;\n\tif (false) {\n\t var getDebugID = function (inst) {\n\t if (!inst._debugID) {\n\t // Check for ART-like instances. TODO: This is silly/gross.\n\t var internal;\n\t if (internal = ReactInstanceMap.get(inst)) {\n\t inst = internal;\n\t }\n\t }\n\t return inst._debugID;\n\t };\n\t setChildrenForInstrumentation = function (children) {\n\t var debugID = getDebugID(this);\n\t // TODO: React Native empty components are also multichild.\n\t // This means they still get into this method but don't have _debugID.\n\t if (debugID !== 0) {\n\t ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n\t return children[key]._debugID;\n\t }) : []);\n\t }\n\t };\n\t}\n\t\n\t/**\n\t * ReactMultiChild are capable of reconciling multiple children.\n\t *\n\t * @class ReactMultiChild\n\t * @internal\n\t */\n\tvar ReactMultiChild = {\n\t\n\t /**\n\t * Provides common functionality for components that must reconcile multiple\n\t * children. This is used by `ReactDOMComponent` to mount, update, and\n\t * unmount child components.\n\t *\n\t * @lends {ReactMultiChild.prototype}\n\t */\n\t Mixin: {\n\t\n\t _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n\t if (false) {\n\t var selfDebugID = getDebugID(this);\n\t if (this._currentElement) {\n\t try {\n\t ReactCurrentOwner.current = this._currentElement._owner;\n\t return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n\t } finally {\n\t ReactCurrentOwner.current = null;\n\t }\n\t }\n\t }\n\t return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n\t },\n\t\n\t _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n\t var nextChildren;\n\t var selfDebugID = 0;\n\t if (false) {\n\t selfDebugID = getDebugID(this);\n\t if (this._currentElement) {\n\t try {\n\t ReactCurrentOwner.current = this._currentElement._owner;\n\t nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n\t } finally {\n\t ReactCurrentOwner.current = null;\n\t }\n\t ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n\t return nextChildren;\n\t }\n\t }\n\t nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n\t ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n\t return nextChildren;\n\t },\n\t\n\t /**\n\t * Generates a \"mount image\" for each of the supplied children. In the case\n\t * of `ReactDOMComponent`, a mount image is a string of markup.\n\t *\n\t * @param {?object} nestedChildren Nested child maps.\n\t * @return {array} An array of mounted representations.\n\t * @internal\n\t */\n\t mountChildren: function (nestedChildren, transaction, context) {\n\t var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n\t this._renderedChildren = children;\n\t\n\t var mountImages = [];\n\t var index = 0;\n\t for (var name in children) {\n\t if (children.hasOwnProperty(name)) {\n\t var child = children[name];\n\t var selfDebugID = 0;\n\t if (false) {\n\t selfDebugID = getDebugID(this);\n\t }\n\t var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n\t child._mountIndex = index++;\n\t mountImages.push(mountImage);\n\t }\n\t }\n\t\n\t if (false) {\n\t setChildrenForInstrumentation.call(this, children);\n\t }\n\t\n\t return mountImages;\n\t },\n\t\n\t /**\n\t * Replaces any rendered children with a text content string.\n\t *\n\t * @param {string} nextContent String of content.\n\t * @internal\n\t */\n\t updateTextContent: function (nextContent) {\n\t var prevChildren = this._renderedChildren;\n\t // Remove any rendered children.\n\t ReactChildReconciler.unmountChildren(prevChildren, false);\n\t for (var name in prevChildren) {\n\t if (prevChildren.hasOwnProperty(name)) {\n\t true ? false ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n\t }\n\t }\n\t // Set new text content.\n\t var updates = [makeTextContent(nextContent)];\n\t processQueue(this, updates);\n\t },\n\t\n\t /**\n\t * Replaces any rendered children with a markup string.\n\t *\n\t * @param {string} nextMarkup String of markup.\n\t * @internal\n\t */\n\t updateMarkup: function (nextMarkup) {\n\t var prevChildren = this._renderedChildren;\n\t // Remove any rendered children.\n\t ReactChildReconciler.unmountChildren(prevChildren, false);\n\t for (var name in prevChildren) {\n\t if (prevChildren.hasOwnProperty(name)) {\n\t true ? false ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n\t }\n\t }\n\t var updates = [makeSetMarkup(nextMarkup)];\n\t processQueue(this, updates);\n\t },\n\t\n\t /**\n\t * Updates the rendered children with new children.\n\t *\n\t * @param {?object} nextNestedChildrenElements Nested child element maps.\n\t * @param {ReactReconcileTransaction} transaction\n\t * @internal\n\t */\n\t updateChildren: function (nextNestedChildrenElements, transaction, context) {\n\t // Hook used by React ART\n\t this._updateChildren(nextNestedChildrenElements, transaction, context);\n\t },\n\t\n\t /**\n\t * @param {?object} nextNestedChildrenElements Nested child element maps.\n\t * @param {ReactReconcileTransaction} transaction\n\t * @final\n\t * @protected\n\t */\n\t _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n\t var prevChildren = this._renderedChildren;\n\t var removedNodes = {};\n\t var mountImages = [];\n\t var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n\t if (!nextChildren && !prevChildren) {\n\t return;\n\t }\n\t var updates = null;\n\t var name;\n\t // `nextIndex` will increment for each child in `nextChildren`, but\n\t // `lastIndex` will be the last index visited in `prevChildren`.\n\t var nextIndex = 0;\n\t var lastIndex = 0;\n\t // `nextMountIndex` will increment for each newly mounted child.\n\t var nextMountIndex = 0;\n\t var lastPlacedNode = null;\n\t for (name in nextChildren) {\n\t if (!nextChildren.hasOwnProperty(name)) {\n\t continue;\n\t }\n\t var prevChild = prevChildren && prevChildren[name];\n\t var nextChild = nextChildren[name];\n\t if (prevChild === nextChild) {\n\t updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n\t lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n\t prevChild._mountIndex = nextIndex;\n\t } else {\n\t if (prevChild) {\n\t // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n\t lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n\t // The `removedNodes` loop below will actually remove the child.\n\t }\n\t // The child must be instantiated before it's mounted.\n\t updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n\t nextMountIndex++;\n\t }\n\t nextIndex++;\n\t lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n\t }\n\t // Remove children that are no longer present.\n\t for (name in removedNodes) {\n\t if (removedNodes.hasOwnProperty(name)) {\n\t updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n\t }\n\t }\n\t if (updates) {\n\t processQueue(this, updates);\n\t }\n\t this._renderedChildren = nextChildren;\n\t\n\t if (false) {\n\t setChildrenForInstrumentation.call(this, nextChildren);\n\t }\n\t },\n\t\n\t /**\n\t * Unmounts all rendered children. This should be used to clean up children\n\t * when this component is unmounted. It does not actually perform any\n\t * backend operations.\n\t *\n\t * @internal\n\t */\n\t unmountChildren: function (safely) {\n\t var renderedChildren = this._renderedChildren;\n\t ReactChildReconciler.unmountChildren(renderedChildren, safely);\n\t this._renderedChildren = null;\n\t },\n\t\n\t /**\n\t * Moves a child component to the supplied index.\n\t *\n\t * @param {ReactComponent} child Component to move.\n\t * @param {number} toIndex Destination index of the element.\n\t * @param {number} lastIndex Last index visited of the siblings of `child`.\n\t * @protected\n\t */\n\t moveChild: function (child, afterNode, toIndex, lastIndex) {\n\t // If the index of `child` is less than `lastIndex`, then it needs to\n\t // be moved. Otherwise, we do not need to move it because a child will be\n\t // inserted or moved before `child`.\n\t if (child._mountIndex < lastIndex) {\n\t return makeMove(child, afterNode, toIndex);\n\t }\n\t },\n\t\n\t /**\n\t * Creates a child component.\n\t *\n\t * @param {ReactComponent} child Component to create.\n\t * @param {string} mountImage Markup to insert.\n\t * @protected\n\t */\n\t createChild: function (child, afterNode, mountImage) {\n\t return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n\t },\n\t\n\t /**\n\t * Removes a child component.\n\t *\n\t * @param {ReactComponent} child Child to remove.\n\t * @protected\n\t */\n\t removeChild: function (child, node) {\n\t return makeRemove(child, node);\n\t },\n\t\n\t /**\n\t * Mounts a child with the supplied name.\n\t *\n\t * NOTE: This is part of `updateChildren` and is here for readability.\n\t *\n\t * @param {ReactComponent} child Component to mount.\n\t * @param {string} name Name of the child.\n\t * @param {number} index Index at which to insert the child.\n\t * @param {ReactReconcileTransaction} transaction\n\t * @private\n\t */\n\t _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n\t child._mountIndex = index;\n\t return this.createChild(child, afterNode, mountImage);\n\t },\n\t\n\t /**\n\t * Unmounts a rendered child.\n\t *\n\t * NOTE: This is part of `updateChildren` and is here for readability.\n\t *\n\t * @param {ReactComponent} child Component to unmount.\n\t * @private\n\t */\n\t _unmountChild: function (child, node) {\n\t var update = this.removeChild(child, node);\n\t child._mountIndex = null;\n\t return update;\n\t }\n\t\n\t }\n\t\n\t};\n\t\n\tmodule.exports = ReactMultiChild;\n\n/***/ },\n/* 308 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * @param {?object} object\n\t * @return {boolean} True if `object` is a valid owner.\n\t * @final\n\t */\n\tfunction isValidOwner(object) {\n\t return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n\t}\n\t\n\t/**\n\t * ReactOwners are capable of storing references to owned components.\n\t *\n\t * All components are capable of //being// referenced by owner components, but\n\t * only ReactOwner components are capable of //referencing// owned components.\n\t * The named reference is known as a \"ref\".\n\t *\n\t * Refs are available when mounted and updated during reconciliation.\n\t *\n\t * var MyComponent = React.createClass({\n\t * render: function() {\n\t * return (\n\t * <div onClick={this.handleClick}>\n\t * <CustomComponent ref=\"custom\" />\n\t * </div>\n\t * );\n\t * },\n\t * handleClick: function() {\n\t * this.refs.custom.handleClick();\n\t * },\n\t * componentDidMount: function() {\n\t * this.refs.custom.initialize();\n\t * }\n\t * });\n\t *\n\t * Refs should rarely be used. When refs are used, they should only be done to\n\t * control data that is not handled by React's data flow.\n\t *\n\t * @class ReactOwner\n\t */\n\tvar ReactOwner = {\n\t /**\n\t * Adds a component by ref to an owner component.\n\t *\n\t * @param {ReactComponent} component Component to reference.\n\t * @param {string} ref Name by which to refer to the component.\n\t * @param {ReactOwner} owner Component on which to record the ref.\n\t * @final\n\t * @internal\n\t */\n\t addComponentAsRefTo: function (component, ref, owner) {\n\t !isValidOwner(owner) ? false ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n\t owner.attachRef(ref, component);\n\t },\n\t\n\t /**\n\t * Removes a component by ref from an owner component.\n\t *\n\t * @param {ReactComponent} component Component to dereference.\n\t * @param {string} ref Name of the ref to remove.\n\t * @param {ReactOwner} owner Component on which the ref is recorded.\n\t * @final\n\t * @internal\n\t */\n\t removeComponentAsRefFrom: function (component, ref, owner) {\n\t !isValidOwner(owner) ? false ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n\t var ownerPublicInstance = owner.getPublicInstance();\n\t // Check that `component`'s owner is still alive and that `component` is still the current ref\n\t // because we do not want to detach the ref if another component stole it.\n\t if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n\t owner.detachRef(ref);\n\t }\n\t }\n\t\n\t};\n\t\n\tmodule.exports = ReactOwner;\n\n/***/ },\n/* 309 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\t\n\tmodule.exports = ReactPropTypesSecret;\n\n/***/ },\n/* 310 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar CallbackQueue = __webpack_require__(119);\n\tvar PooledClass = __webpack_require__(28);\n\tvar ReactBrowserEventEmitter = __webpack_require__(51);\n\tvar ReactInputSelection = __webpack_require__(126);\n\tvar ReactInstrumentation = __webpack_require__(18);\n\tvar Transaction = __webpack_require__(53);\n\tvar ReactUpdateQueue = __webpack_require__(80);\n\t\n\t/**\n\t * Ensures that, when possible, the selection range (currently selected text\n\t * input) is not disturbed by performing the transaction.\n\t */\n\tvar SELECTION_RESTORATION = {\n\t /**\n\t * @return {Selection} Selection information.\n\t */\n\t initialize: ReactInputSelection.getSelectionInformation,\n\t /**\n\t * @param {Selection} sel Selection information returned from `initialize`.\n\t */\n\t close: ReactInputSelection.restoreSelection\n\t};\n\t\n\t/**\n\t * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n\t * high level DOM manipulations (like temporarily removing a text input from the\n\t * DOM).\n\t */\n\tvar EVENT_SUPPRESSION = {\n\t /**\n\t * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n\t * the reconciliation.\n\t */\n\t initialize: function () {\n\t var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n\t ReactBrowserEventEmitter.setEnabled(false);\n\t return currentlyEnabled;\n\t },\n\t\n\t /**\n\t * @param {boolean} previouslyEnabled Enabled status of\n\t * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n\t * restores the previous value.\n\t */\n\t close: function (previouslyEnabled) {\n\t ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n\t }\n\t};\n\t\n\t/**\n\t * Provides a queue for collecting `componentDidMount` and\n\t * `componentDidUpdate` callbacks during the transaction.\n\t */\n\tvar ON_DOM_READY_QUEUEING = {\n\t /**\n\t * Initializes the internal `onDOMReady` queue.\n\t */\n\t initialize: function () {\n\t this.reactMountReady.reset();\n\t },\n\t\n\t /**\n\t * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n\t */\n\t close: function () {\n\t this.reactMountReady.notifyAll();\n\t }\n\t};\n\t\n\t/**\n\t * Executed within the scope of the `Transaction` instance. Consider these as\n\t * being member methods, but with an implied ordering while being isolated from\n\t * each other.\n\t */\n\tvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\t\n\tif (false) {\n\t TRANSACTION_WRAPPERS.push({\n\t initialize: ReactInstrumentation.debugTool.onBeginFlush,\n\t close: ReactInstrumentation.debugTool.onEndFlush\n\t });\n\t}\n\t\n\t/**\n\t * Currently:\n\t * - The order that these are listed in the transaction is critical:\n\t * - Suppresses events.\n\t * - Restores selection range.\n\t *\n\t * Future:\n\t * - Restore document/overflow scroll positions that were unintentionally\n\t * modified via DOM insertions above the top viewport boundary.\n\t * - Implement/integrate with customized constraint based layout system and keep\n\t * track of which dimensions must be remeasured.\n\t *\n\t * @class ReactReconcileTransaction\n\t */\n\tfunction ReactReconcileTransaction(useCreateElement) {\n\t this.reinitializeTransaction();\n\t // Only server-side rendering really needs this option (see\n\t // `ReactServerRendering`), but server-side uses\n\t // `ReactServerRenderingTransaction` instead. This option is here so that it's\n\t // accessible and defaults to false when `ReactDOMComponent` and\n\t // `ReactDOMTextComponent` checks it in `mountComponent`.`\n\t this.renderToStaticMarkup = false;\n\t this.reactMountReady = CallbackQueue.getPooled(null);\n\t this.useCreateElement = useCreateElement;\n\t}\n\t\n\tvar Mixin = {\n\t /**\n\t * @see Transaction\n\t * @abstract\n\t * @final\n\t * @return {array<object>} List of operation wrap procedures.\n\t * TODO: convert to array<TransactionWrapper>\n\t */\n\t getTransactionWrappers: function () {\n\t return TRANSACTION_WRAPPERS;\n\t },\n\t\n\t /**\n\t * @return {object} The queue to collect `onDOMReady` callbacks with.\n\t */\n\t getReactMountReady: function () {\n\t return this.reactMountReady;\n\t },\n\t\n\t /**\n\t * @return {object} The queue to collect React async events.\n\t */\n\t getUpdateQueue: function () {\n\t return ReactUpdateQueue;\n\t },\n\t\n\t /**\n\t * Save current transaction state -- if the return value from this method is\n\t * passed to `rollback`, the transaction will be reset to that state.\n\t */\n\t checkpoint: function () {\n\t // reactMountReady is the our only stateful wrapper\n\t return this.reactMountReady.checkpoint();\n\t },\n\t\n\t rollback: function (checkpoint) {\n\t this.reactMountReady.rollback(checkpoint);\n\t },\n\t\n\t /**\n\t * `PooledClass` looks for this, and will invoke this before allowing this\n\t * instance to be reused.\n\t */\n\t destructor: function () {\n\t CallbackQueue.release(this.reactMountReady);\n\t this.reactMountReady = null;\n\t }\n\t};\n\t\n\t_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\t\n\tPooledClass.addPoolingTo(ReactReconcileTransaction);\n\t\n\tmodule.exports = ReactReconcileTransaction;\n\n/***/ },\n/* 311 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactOwner = __webpack_require__(308);\n\t\n\tvar ReactRef = {};\n\t\n\tfunction attachRef(ref, component, owner) {\n\t if (typeof ref === 'function') {\n\t ref(component.getPublicInstance());\n\t } else {\n\t // Legacy ref\n\t ReactOwner.addComponentAsRefTo(component, ref, owner);\n\t }\n\t}\n\t\n\tfunction detachRef(ref, component, owner) {\n\t if (typeof ref === 'function') {\n\t ref(null);\n\t } else {\n\t // Legacy ref\n\t ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n\t }\n\t}\n\t\n\tReactRef.attachRefs = function (instance, element) {\n\t if (element === null || typeof element !== 'object') {\n\t return;\n\t }\n\t var ref = element.ref;\n\t if (ref != null) {\n\t attachRef(ref, instance, element._owner);\n\t }\n\t};\n\t\n\tReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n\t // If either the owner or a `ref` has changed, make sure the newest owner\n\t // has stored a reference to `this`, and the previous owner (if different)\n\t // has forgotten the reference to `this`. We use the element instead\n\t // of the public this.props because the post processing cannot determine\n\t // a ref. The ref conceptually lives on the element.\n\t\n\t // TODO: Should this even be possible? The owner cannot change because\n\t // it's forbidden by shouldUpdateReactComponent. The ref can change\n\t // if you swap the keys of but not the refs. Reconsider where this check\n\t // is made. It probably belongs where the key checking and\n\t // instantiateReactComponent is done.\n\t\n\t var prevRef = null;\n\t var prevOwner = null;\n\t if (prevElement !== null && typeof prevElement === 'object') {\n\t prevRef = prevElement.ref;\n\t prevOwner = prevElement._owner;\n\t }\n\t\n\t var nextRef = null;\n\t var nextOwner = null;\n\t if (nextElement !== null && typeof nextElement === 'object') {\n\t nextRef = nextElement.ref;\n\t nextOwner = nextElement._owner;\n\t }\n\t\n\t return prevRef !== nextRef ||\n\t // If owner changes but we have an unchanged function ref, don't update refs\n\t typeof nextRef === 'string' && nextOwner !== prevOwner;\n\t};\n\t\n\tReactRef.detachRefs = function (instance, element) {\n\t if (element === null || typeof element !== 'object') {\n\t return;\n\t }\n\t var ref = element.ref;\n\t if (ref != null) {\n\t detachRef(ref, instance, element._owner);\n\t }\n\t};\n\t\n\tmodule.exports = ReactRef;\n\n/***/ },\n/* 312 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2014-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar PooledClass = __webpack_require__(28);\n\tvar Transaction = __webpack_require__(53);\n\tvar ReactInstrumentation = __webpack_require__(18);\n\tvar ReactServerUpdateQueue = __webpack_require__(313);\n\t\n\t/**\n\t * Executed within the scope of the `Transaction` instance. Consider these as\n\t * being member methods, but with an implied ordering while being isolated from\n\t * each other.\n\t */\n\tvar TRANSACTION_WRAPPERS = [];\n\t\n\tif (false) {\n\t TRANSACTION_WRAPPERS.push({\n\t initialize: ReactInstrumentation.debugTool.onBeginFlush,\n\t close: ReactInstrumentation.debugTool.onEndFlush\n\t });\n\t}\n\t\n\tvar noopCallbackQueue = {\n\t enqueue: function () {}\n\t};\n\t\n\t/**\n\t * @class ReactServerRenderingTransaction\n\t * @param {boolean} renderToStaticMarkup\n\t */\n\tfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n\t this.reinitializeTransaction();\n\t this.renderToStaticMarkup = renderToStaticMarkup;\n\t this.useCreateElement = false;\n\t this.updateQueue = new ReactServerUpdateQueue(this);\n\t}\n\t\n\tvar Mixin = {\n\t /**\n\t * @see Transaction\n\t * @abstract\n\t * @final\n\t * @return {array} Empty list of operation wrap procedures.\n\t */\n\t getTransactionWrappers: function () {\n\t return TRANSACTION_WRAPPERS;\n\t },\n\t\n\t /**\n\t * @return {object} The queue to collect `onDOMReady` callbacks with.\n\t */\n\t getReactMountReady: function () {\n\t return noopCallbackQueue;\n\t },\n\t\n\t /**\n\t * @return {object} The queue to collect React async events.\n\t */\n\t getUpdateQueue: function () {\n\t return this.updateQueue;\n\t },\n\t\n\t /**\n\t * `PooledClass` looks for this, and will invoke this before allowing this\n\t * instance to be reused.\n\t */\n\t destructor: function () {},\n\t\n\t checkpoint: function () {},\n\t\n\t rollback: function () {}\n\t};\n\t\n\t_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\t\n\tPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\t\n\tmodule.exports = ReactServerRenderingTransaction;\n\n/***/ },\n/* 313 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2015-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar ReactUpdateQueue = __webpack_require__(80);\n\t\n\tvar warning = __webpack_require__(4);\n\t\n\tfunction warnNoop(publicInstance, callerName) {\n\t if (false) {\n\t var constructor = publicInstance.constructor;\n\t process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n\t }\n\t}\n\t\n\t/**\n\t * This is the update queue used for server rendering.\n\t * It delegates to ReactUpdateQueue while server rendering is in progress and\n\t * switches to ReactNoopUpdateQueue after the transaction has completed.\n\t * @class ReactServerUpdateQueue\n\t * @param {Transaction} transaction\n\t */\n\t\n\tvar ReactServerUpdateQueue = function () {\n\t function ReactServerUpdateQueue(transaction) {\n\t _classCallCheck(this, ReactServerUpdateQueue);\n\t\n\t this.transaction = transaction;\n\t }\n\t\n\t /**\n\t * Checks whether or not this composite component is mounted.\n\t * @param {ReactClass} publicInstance The instance we want to test.\n\t * @return {boolean} True if mounted, false otherwise.\n\t * @protected\n\t * @final\n\t */\n\t\n\t\n\t ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n\t return false;\n\t };\n\t\n\t /**\n\t * Enqueue a callback that will be executed after all the pending updates\n\t * have processed.\n\t *\n\t * @param {ReactClass} publicInstance The instance to use as `this` context.\n\t * @param {?function} callback Called after state is updated.\n\t * @internal\n\t */\n\t\n\t\n\t ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n\t if (this.transaction.isInTransaction()) {\n\t ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n\t }\n\t };\n\t\n\t /**\n\t * Forces an update. This should only be invoked when it is known with\n\t * certainty that we are **not** in a DOM transaction.\n\t *\n\t * You may want to call this when you know that some deeper aspect of the\n\t * component's state has changed but `setState` was not called.\n\t *\n\t * This will not invoke `shouldComponentUpdate`, but it will invoke\n\t * `componentWillUpdate` and `componentDidUpdate`.\n\t *\n\t * @param {ReactClass} publicInstance The instance that should rerender.\n\t * @internal\n\t */\n\t\n\t\n\t ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n\t if (this.transaction.isInTransaction()) {\n\t ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n\t } else {\n\t warnNoop(publicInstance, 'forceUpdate');\n\t }\n\t };\n\t\n\t /**\n\t * Replaces all of the state. Always use this or `setState` to mutate state.\n\t * You should treat `this.state` as immutable.\n\t *\n\t * There is no guarantee that `this.state` will be immediately updated, so\n\t * accessing `this.state` after calling this method may return the old value.\n\t *\n\t * @param {ReactClass} publicInstance The instance that should rerender.\n\t * @param {object|function} completeState Next state.\n\t * @internal\n\t */\n\t\n\t\n\t ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n\t if (this.transaction.isInTransaction()) {\n\t ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n\t } else {\n\t warnNoop(publicInstance, 'replaceState');\n\t }\n\t };\n\t\n\t /**\n\t * Sets a subset of the state. This only exists because _pendingState is\n\t * internal. This provides a merging strategy that is not available to deep\n\t * properties which is confusing. TODO: Expose pendingState or don't use it\n\t * during the merge.\n\t *\n\t * @param {ReactClass} publicInstance The instance that should rerender.\n\t * @param {object|function} partialState Next partial state to be merged with state.\n\t * @internal\n\t */\n\t\n\t\n\t ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n\t if (this.transaction.isInTransaction()) {\n\t ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n\t } else {\n\t warnNoop(publicInstance, 'setState');\n\t }\n\t };\n\t\n\t return ReactServerUpdateQueue;\n\t}();\n\t\n\tmodule.exports = ReactServerUpdateQueue;\n\n/***/ },\n/* 314 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tmodule.exports = '15.4.1';\n\n/***/ },\n/* 315 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar NS = {\n\t xlink: 'http://www.w3.org/1999/xlink',\n\t xml: 'http://www.w3.org/XML/1998/namespace'\n\t};\n\t\n\t// We use attributes for everything SVG so let's avoid some duplication and run\n\t// code instead.\n\t// The following are all specified in the HTML config already so we exclude here.\n\t// - class (as className)\n\t// - color\n\t// - height\n\t// - id\n\t// - lang\n\t// - max\n\t// - media\n\t// - method\n\t// - min\n\t// - name\n\t// - style\n\t// - target\n\t// - type\n\t// - width\n\tvar ATTRS = {\n\t accentHeight: 'accent-height',\n\t accumulate: 0,\n\t additive: 0,\n\t alignmentBaseline: 'alignment-baseline',\n\t allowReorder: 'allowReorder',\n\t alphabetic: 0,\n\t amplitude: 0,\n\t arabicForm: 'arabic-form',\n\t ascent: 0,\n\t attributeName: 'attributeName',\n\t attributeType: 'attributeType',\n\t autoReverse: 'autoReverse',\n\t azimuth: 0,\n\t baseFrequency: 'baseFrequency',\n\t baseProfile: 'baseProfile',\n\t baselineShift: 'baseline-shift',\n\t bbox: 0,\n\t begin: 0,\n\t bias: 0,\n\t by: 0,\n\t calcMode: 'calcMode',\n\t capHeight: 'cap-height',\n\t clip: 0,\n\t clipPath: 'clip-path',\n\t clipRule: 'clip-rule',\n\t clipPathUnits: 'clipPathUnits',\n\t colorInterpolation: 'color-interpolation',\n\t colorInterpolationFilters: 'color-interpolation-filters',\n\t colorProfile: 'color-profile',\n\t colorRendering: 'color-rendering',\n\t contentScriptType: 'contentScriptType',\n\t contentStyleType: 'contentStyleType',\n\t cursor: 0,\n\t cx: 0,\n\t cy: 0,\n\t d: 0,\n\t decelerate: 0,\n\t descent: 0,\n\t diffuseConstant: 'diffuseConstant',\n\t direction: 0,\n\t display: 0,\n\t divisor: 0,\n\t dominantBaseline: 'dominant-baseline',\n\t dur: 0,\n\t dx: 0,\n\t dy: 0,\n\t edgeMode: 'edgeMode',\n\t elevation: 0,\n\t enableBackground: 'enable-background',\n\t end: 0,\n\t exponent: 0,\n\t externalResourcesRequired: 'externalResourcesRequired',\n\t fill: 0,\n\t fillOpacity: 'fill-opacity',\n\t fillRule: 'fill-rule',\n\t filter: 0,\n\t filterRes: 'filterRes',\n\t filterUnits: 'filterUnits',\n\t floodColor: 'flood-color',\n\t floodOpacity: 'flood-opacity',\n\t focusable: 0,\n\t fontFamily: 'font-family',\n\t fontSize: 'font-size',\n\t fontSizeAdjust: 'font-size-adjust',\n\t fontStretch: 'font-stretch',\n\t fontStyle: 'font-style',\n\t fontVariant: 'font-variant',\n\t fontWeight: 'font-weight',\n\t format: 0,\n\t from: 0,\n\t fx: 0,\n\t fy: 0,\n\t g1: 0,\n\t g2: 0,\n\t glyphName: 'glyph-name',\n\t glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n\t glyphOrientationVertical: 'glyph-orientation-vertical',\n\t glyphRef: 'glyphRef',\n\t gradientTransform: 'gradientTransform',\n\t gradientUnits: 'gradientUnits',\n\t hanging: 0,\n\t horizAdvX: 'horiz-adv-x',\n\t horizOriginX: 'horiz-origin-x',\n\t ideographic: 0,\n\t imageRendering: 'image-rendering',\n\t 'in': 0,\n\t in2: 0,\n\t intercept: 0,\n\t k: 0,\n\t k1: 0,\n\t k2: 0,\n\t k3: 0,\n\t k4: 0,\n\t kernelMatrix: 'kernelMatrix',\n\t kernelUnitLength: 'kernelUnitLength',\n\t kerning: 0,\n\t keyPoints: 'keyPoints',\n\t keySplines: 'keySplines',\n\t keyTimes: 'keyTimes',\n\t lengthAdjust: 'lengthAdjust',\n\t letterSpacing: 'letter-spacing',\n\t lightingColor: 'lighting-color',\n\t limitingConeAngle: 'limitingConeAngle',\n\t local: 0,\n\t markerEnd: 'marker-end',\n\t markerMid: 'marker-mid',\n\t markerStart: 'marker-start',\n\t markerHeight: 'markerHeight',\n\t markerUnits: 'markerUnits',\n\t markerWidth: 'markerWidth',\n\t mask: 0,\n\t maskContentUnits: 'maskContentUnits',\n\t maskUnits: 'maskUnits',\n\t mathematical: 0,\n\t mode: 0,\n\t numOctaves: 'numOctaves',\n\t offset: 0,\n\t opacity: 0,\n\t operator: 0,\n\t order: 0,\n\t orient: 0,\n\t orientation: 0,\n\t origin: 0,\n\t overflow: 0,\n\t overlinePosition: 'overline-position',\n\t overlineThickness: 'overline-thickness',\n\t paintOrder: 'paint-order',\n\t panose1: 'panose-1',\n\t pathLength: 'pathLength',\n\t patternContentUnits: 'patternContentUnits',\n\t patternTransform: 'patternTransform',\n\t patternUnits: 'patternUnits',\n\t pointerEvents: 'pointer-events',\n\t points: 0,\n\t pointsAtX: 'pointsAtX',\n\t pointsAtY: 'pointsAtY',\n\t pointsAtZ: 'pointsAtZ',\n\t preserveAlpha: 'preserveAlpha',\n\t preserveAspectRatio: 'preserveAspectRatio',\n\t primitiveUnits: 'primitiveUnits',\n\t r: 0,\n\t radius: 0,\n\t refX: 'refX',\n\t refY: 'refY',\n\t renderingIntent: 'rendering-intent',\n\t repeatCount: 'repeatCount',\n\t repeatDur: 'repeatDur',\n\t requiredExtensions: 'requiredExtensions',\n\t requiredFeatures: 'requiredFeatures',\n\t restart: 0,\n\t result: 0,\n\t rotate: 0,\n\t rx: 0,\n\t ry: 0,\n\t scale: 0,\n\t seed: 0,\n\t shapeRendering: 'shape-rendering',\n\t slope: 0,\n\t spacing: 0,\n\t specularConstant: 'specularConstant',\n\t specularExponent: 'specularExponent',\n\t speed: 0,\n\t spreadMethod: 'spreadMethod',\n\t startOffset: 'startOffset',\n\t stdDeviation: 'stdDeviation',\n\t stemh: 0,\n\t stemv: 0,\n\t stitchTiles: 'stitchTiles',\n\t stopColor: 'stop-color',\n\t stopOpacity: 'stop-opacity',\n\t strikethroughPosition: 'strikethrough-position',\n\t strikethroughThickness: 'strikethrough-thickness',\n\t string: 0,\n\t stroke: 0,\n\t strokeDasharray: 'stroke-dasharray',\n\t strokeDashoffset: 'stroke-dashoffset',\n\t strokeLinecap: 'stroke-linecap',\n\t strokeLinejoin: 'stroke-linejoin',\n\t strokeMiterlimit: 'stroke-miterlimit',\n\t strokeOpacity: 'stroke-opacity',\n\t strokeWidth: 'stroke-width',\n\t surfaceScale: 'surfaceScale',\n\t systemLanguage: 'systemLanguage',\n\t tableValues: 'tableValues',\n\t targetX: 'targetX',\n\t targetY: 'targetY',\n\t textAnchor: 'text-anchor',\n\t textDecoration: 'text-decoration',\n\t textRendering: 'text-rendering',\n\t textLength: 'textLength',\n\t to: 0,\n\t transform: 0,\n\t u1: 0,\n\t u2: 0,\n\t underlinePosition: 'underline-position',\n\t underlineThickness: 'underline-thickness',\n\t unicode: 0,\n\t unicodeBidi: 'unicode-bidi',\n\t unicodeRange: 'unicode-range',\n\t unitsPerEm: 'units-per-em',\n\t vAlphabetic: 'v-alphabetic',\n\t vHanging: 'v-hanging',\n\t vIdeographic: 'v-ideographic',\n\t vMathematical: 'v-mathematical',\n\t values: 0,\n\t vectorEffect: 'vector-effect',\n\t version: 0,\n\t vertAdvY: 'vert-adv-y',\n\t vertOriginX: 'vert-origin-x',\n\t vertOriginY: 'vert-origin-y',\n\t viewBox: 'viewBox',\n\t viewTarget: 'viewTarget',\n\t visibility: 0,\n\t widths: 0,\n\t wordSpacing: 'word-spacing',\n\t writingMode: 'writing-mode',\n\t x: 0,\n\t xHeight: 'x-height',\n\t x1: 0,\n\t x2: 0,\n\t xChannelSelector: 'xChannelSelector',\n\t xlinkActuate: 'xlink:actuate',\n\t xlinkArcrole: 'xlink:arcrole',\n\t xlinkHref: 'xlink:href',\n\t xlinkRole: 'xlink:role',\n\t xlinkShow: 'xlink:show',\n\t xlinkTitle: 'xlink:title',\n\t xlinkType: 'xlink:type',\n\t xmlBase: 'xml:base',\n\t xmlns: 0,\n\t xmlnsXlink: 'xmlns:xlink',\n\t xmlLang: 'xml:lang',\n\t xmlSpace: 'xml:space',\n\t y: 0,\n\t y1: 0,\n\t y2: 0,\n\t yChannelSelector: 'yChannelSelector',\n\t z: 0,\n\t zoomAndPan: 'zoomAndPan'\n\t};\n\t\n\tvar SVGDOMPropertyConfig = {\n\t Properties: {},\n\t DOMAttributeNamespaces: {\n\t xlinkActuate: NS.xlink,\n\t xlinkArcrole: NS.xlink,\n\t xlinkHref: NS.xlink,\n\t xlinkRole: NS.xlink,\n\t xlinkShow: NS.xlink,\n\t xlinkTitle: NS.xlink,\n\t xlinkType: NS.xlink,\n\t xmlBase: NS.xml,\n\t xmlLang: NS.xml,\n\t xmlSpace: NS.xml\n\t },\n\t DOMAttributeNames: {}\n\t};\n\t\n\tObject.keys(ATTRS).forEach(function (key) {\n\t SVGDOMPropertyConfig.Properties[key] = 0;\n\t if (ATTRS[key]) {\n\t SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n\t }\n\t});\n\t\n\tmodule.exports = SVGDOMPropertyConfig;\n\n/***/ },\n/* 316 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar EventPropagators = __webpack_require__(41);\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactInputSelection = __webpack_require__(126);\n\tvar SyntheticEvent = __webpack_require__(20);\n\t\n\tvar getActiveElement = __webpack_require__(111);\n\tvar isTextInputElement = __webpack_require__(135);\n\tvar shallowEqual = __webpack_require__(65);\n\t\n\tvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\t\n\tvar eventTypes = {\n\t select: {\n\t phasedRegistrationNames: {\n\t bubbled: 'onSelect',\n\t captured: 'onSelectCapture'\n\t },\n\t dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n\t }\n\t};\n\t\n\tvar activeElement = null;\n\tvar activeElementInst = null;\n\tvar lastSelection = null;\n\tvar mouseDown = false;\n\t\n\t// Track whether a listener exists for this plugin. If none exist, we do\n\t// not extract events. See #3639.\n\tvar hasListener = false;\n\t\n\t/**\n\t * Get an object which is a unique representation of the current selection.\n\t *\n\t * The return value will not be consistent across nodes or browsers, but\n\t * two identical selections on the same node will return identical objects.\n\t *\n\t * @param {DOMElement} node\n\t * @return {object}\n\t */\n\tfunction getSelection(node) {\n\t if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n\t return {\n\t start: node.selectionStart,\n\t end: node.selectionEnd\n\t };\n\t } else if (window.getSelection) {\n\t var selection = window.getSelection();\n\t return {\n\t anchorNode: selection.anchorNode,\n\t anchorOffset: selection.anchorOffset,\n\t focusNode: selection.focusNode,\n\t focusOffset: selection.focusOffset\n\t };\n\t } else if (document.selection) {\n\t var range = document.selection.createRange();\n\t return {\n\t parentElement: range.parentElement(),\n\t text: range.text,\n\t top: range.boundingTop,\n\t left: range.boundingLeft\n\t };\n\t }\n\t}\n\t\n\t/**\n\t * Poll selection to see whether it's changed.\n\t *\n\t * @param {object} nativeEvent\n\t * @return {?SyntheticEvent}\n\t */\n\tfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n\t // Ensure we have the right element, and that the user is not dragging a\n\t // selection (this matches native `select` event behavior). In HTML5, select\n\t // fires only on input and textarea thus if there's no focused element we\n\t // won't dispatch.\n\t if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n\t return null;\n\t }\n\t\n\t // Only fire when selection has actually changed.\n\t var currentSelection = getSelection(activeElement);\n\t if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n\t lastSelection = currentSelection;\n\t\n\t var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\t\n\t syntheticEvent.type = 'select';\n\t syntheticEvent.target = activeElement;\n\t\n\t EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\t\n\t return syntheticEvent;\n\t }\n\t\n\t return null;\n\t}\n\t\n\t/**\n\t * This plugin creates an `onSelect` event that normalizes select events\n\t * across form elements.\n\t *\n\t * Supported elements are:\n\t * - input (see `isTextInputElement`)\n\t * - textarea\n\t * - contentEditable\n\t *\n\t * This differs from native browser implementations in the following ways:\n\t * - Fires on contentEditable fields as well as inputs.\n\t * - Fires for collapsed selection.\n\t * - Fires after user input.\n\t */\n\tvar SelectEventPlugin = {\n\t\n\t eventTypes: eventTypes,\n\t\n\t extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n\t if (!hasListener) {\n\t return null;\n\t }\n\t\n\t var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\t\n\t switch (topLevelType) {\n\t // Track the input node that has focus.\n\t case 'topFocus':\n\t if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n\t activeElement = targetNode;\n\t activeElementInst = targetInst;\n\t lastSelection = null;\n\t }\n\t break;\n\t case 'topBlur':\n\t activeElement = null;\n\t activeElementInst = null;\n\t lastSelection = null;\n\t break;\n\t\n\t // Don't fire the event while the user is dragging. This matches the\n\t // semantics of the native select event.\n\t case 'topMouseDown':\n\t mouseDown = true;\n\t break;\n\t case 'topContextMenu':\n\t case 'topMouseUp':\n\t mouseDown = false;\n\t return constructSelectEvent(nativeEvent, nativeEventTarget);\n\t\n\t // Chrome and IE fire non-standard event when selection is changed (and\n\t // sometimes when it hasn't). IE's event fires out of order with respect\n\t // to key and input events on deletion, so we discard it.\n\t //\n\t // Firefox doesn't support selectionchange, so check selection status\n\t // after each key entry. The selection changes after keydown and before\n\t // keyup, but we check on keydown as well in the case of holding down a\n\t // key, when multiple keydown events are fired but only one keyup is.\n\t // This is also our approach for IE handling, for the reason above.\n\t case 'topSelectionChange':\n\t if (skipSelectionChangeEvent) {\n\t break;\n\t }\n\t // falls through\n\t case 'topKeyDown':\n\t case 'topKeyUp':\n\t return constructSelectEvent(nativeEvent, nativeEventTarget);\n\t }\n\t\n\t return null;\n\t },\n\t\n\t didPutListener: function (inst, registrationName, listener) {\n\t if (registrationName === 'onSelect') {\n\t hasListener = true;\n\t }\n\t }\n\t};\n\t\n\tmodule.exports = SelectEventPlugin;\n\n/***/ },\n/* 317 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar EventListener = __webpack_require__(109);\n\tvar EventPropagators = __webpack_require__(41);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar SyntheticAnimationEvent = __webpack_require__(318);\n\tvar SyntheticClipboardEvent = __webpack_require__(319);\n\tvar SyntheticEvent = __webpack_require__(20);\n\tvar SyntheticFocusEvent = __webpack_require__(322);\n\tvar SyntheticKeyboardEvent = __webpack_require__(324);\n\tvar SyntheticMouseEvent = __webpack_require__(52);\n\tvar SyntheticDragEvent = __webpack_require__(321);\n\tvar SyntheticTouchEvent = __webpack_require__(325);\n\tvar SyntheticTransitionEvent = __webpack_require__(326);\n\tvar SyntheticUIEvent = __webpack_require__(43);\n\tvar SyntheticWheelEvent = __webpack_require__(327);\n\t\n\tvar emptyFunction = __webpack_require__(16);\n\tvar getEventCharCode = __webpack_require__(82);\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * Turns\n\t * ['abort', ...]\n\t * into\n\t * eventTypes = {\n\t * 'abort': {\n\t * phasedRegistrationNames: {\n\t * bubbled: 'onAbort',\n\t * captured: 'onAbortCapture',\n\t * },\n\t * dependencies: ['topAbort'],\n\t * },\n\t * ...\n\t * };\n\t * topLevelEventsToDispatchConfig = {\n\t * 'topAbort': { sameConfig }\n\t * };\n\t */\n\tvar eventTypes = {};\n\tvar topLevelEventsToDispatchConfig = {};\n\t['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 (event) {\n\t var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n\t var onEvent = 'on' + capitalizedEvent;\n\t var topEvent = 'top' + capitalizedEvent;\n\t\n\t var type = {\n\t phasedRegistrationNames: {\n\t bubbled: onEvent,\n\t captured: onEvent + 'Capture'\n\t },\n\t dependencies: [topEvent]\n\t };\n\t eventTypes[event] = type;\n\t topLevelEventsToDispatchConfig[topEvent] = type;\n\t});\n\t\n\tvar onClickListeners = {};\n\t\n\tfunction getDictionaryKey(inst) {\n\t // Prevents V8 performance issue:\n\t // https://github.com/facebook/react/pull/7232\n\t return '.' + inst._rootNodeID;\n\t}\n\t\n\tfunction isInteractive(tag) {\n\t return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n\t}\n\t\n\tvar SimpleEventPlugin = {\n\t\n\t eventTypes: eventTypes,\n\t\n\t extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n\t var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n\t if (!dispatchConfig) {\n\t return null;\n\t }\n\t var EventConstructor;\n\t switch (topLevelType) {\n\t case 'topAbort':\n\t case 'topCanPlay':\n\t case 'topCanPlayThrough':\n\t case 'topDurationChange':\n\t case 'topEmptied':\n\t case 'topEncrypted':\n\t case 'topEnded':\n\t case 'topError':\n\t case 'topInput':\n\t case 'topInvalid':\n\t case 'topLoad':\n\t case 'topLoadedData':\n\t case 'topLoadedMetadata':\n\t case 'topLoadStart':\n\t case 'topPause':\n\t case 'topPlay':\n\t case 'topPlaying':\n\t case 'topProgress':\n\t case 'topRateChange':\n\t case 'topReset':\n\t case 'topSeeked':\n\t case 'topSeeking':\n\t case 'topStalled':\n\t case 'topSubmit':\n\t case 'topSuspend':\n\t case 'topTimeUpdate':\n\t case 'topVolumeChange':\n\t case 'topWaiting':\n\t // HTML Events\n\t // @see http://www.w3.org/TR/html5/index.html#events-0\n\t EventConstructor = SyntheticEvent;\n\t break;\n\t case 'topKeyPress':\n\t // Firefox creates a keypress event for function keys too. This removes\n\t // the unwanted keypress events. Enter is however both printable and\n\t // non-printable. One would expect Tab to be as well (but it isn't).\n\t if (getEventCharCode(nativeEvent) === 0) {\n\t return null;\n\t }\n\t /* falls through */\n\t case 'topKeyDown':\n\t case 'topKeyUp':\n\t EventConstructor = SyntheticKeyboardEvent;\n\t break;\n\t case 'topBlur':\n\t case 'topFocus':\n\t EventConstructor = SyntheticFocusEvent;\n\t break;\n\t case 'topClick':\n\t // Firefox creates a click event on right mouse clicks. This removes the\n\t // unwanted click events.\n\t if (nativeEvent.button === 2) {\n\t return null;\n\t }\n\t /* falls through */\n\t case 'topDoubleClick':\n\t case 'topMouseDown':\n\t case 'topMouseMove':\n\t case 'topMouseUp':\n\t // TODO: Disabled elements should not respond to mouse events\n\t /* falls through */\n\t case 'topMouseOut':\n\t case 'topMouseOver':\n\t case 'topContextMenu':\n\t EventConstructor = SyntheticMouseEvent;\n\t break;\n\t case 'topDrag':\n\t case 'topDragEnd':\n\t case 'topDragEnter':\n\t case 'topDragExit':\n\t case 'topDragLeave':\n\t case 'topDragOver':\n\t case 'topDragStart':\n\t case 'topDrop':\n\t EventConstructor = SyntheticDragEvent;\n\t break;\n\t case 'topTouchCancel':\n\t case 'topTouchEnd':\n\t case 'topTouchMove':\n\t case 'topTouchStart':\n\t EventConstructor = SyntheticTouchEvent;\n\t break;\n\t case 'topAnimationEnd':\n\t case 'topAnimationIteration':\n\t case 'topAnimationStart':\n\t EventConstructor = SyntheticAnimationEvent;\n\t break;\n\t case 'topTransitionEnd':\n\t EventConstructor = SyntheticTransitionEvent;\n\t break;\n\t case 'topScroll':\n\t EventConstructor = SyntheticUIEvent;\n\t break;\n\t case 'topWheel':\n\t EventConstructor = SyntheticWheelEvent;\n\t break;\n\t case 'topCopy':\n\t case 'topCut':\n\t case 'topPaste':\n\t EventConstructor = SyntheticClipboardEvent;\n\t break;\n\t }\n\t !EventConstructor ? false ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n\t var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n\t EventPropagators.accumulateTwoPhaseDispatches(event);\n\t return event;\n\t },\n\t\n\t didPutListener: function (inst, registrationName, listener) {\n\t // Mobile Safari does not fire properly bubble click events on\n\t // non-interactive elements, which means delegated click listeners do not\n\t // fire. The workaround for this bug involves attaching an empty click\n\t // listener on the target node.\n\t // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n\t if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n\t var key = getDictionaryKey(inst);\n\t var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\t if (!onClickListeners[key]) {\n\t onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n\t }\n\t }\n\t },\n\t\n\t willDeleteListener: function (inst, registrationName) {\n\t if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n\t var key = getDictionaryKey(inst);\n\t onClickListeners[key].remove();\n\t delete onClickListeners[key];\n\t }\n\t }\n\t\n\t};\n\t\n\tmodule.exports = SimpleEventPlugin;\n\n/***/ },\n/* 318 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar SyntheticEvent = __webpack_require__(20);\n\t\n\t/**\n\t * @interface Event\n\t * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n\t */\n\tvar AnimationEventInterface = {\n\t animationName: null,\n\t elapsedTime: null,\n\t pseudoElement: null\n\t};\n\t\n\t/**\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {string} dispatchMarker Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @extends {SyntheticEvent}\n\t */\n\tfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n\t return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n\t}\n\t\n\tSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\t\n\tmodule.exports = SyntheticAnimationEvent;\n\n/***/ },\n/* 319 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar SyntheticEvent = __webpack_require__(20);\n\t\n\t/**\n\t * @interface Event\n\t * @see http://www.w3.org/TR/clipboard-apis/\n\t */\n\tvar ClipboardEventInterface = {\n\t clipboardData: function (event) {\n\t return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n\t }\n\t};\n\t\n\t/**\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {string} dispatchMarker Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @extends {SyntheticUIEvent}\n\t */\n\tfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n\t return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n\t}\n\t\n\tSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\t\n\tmodule.exports = SyntheticClipboardEvent;\n\n/***/ },\n/* 320 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar SyntheticEvent = __webpack_require__(20);\n\t\n\t/**\n\t * @interface Event\n\t * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n\t */\n\tvar CompositionEventInterface = {\n\t data: null\n\t};\n\t\n\t/**\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {string} dispatchMarker Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @extends {SyntheticUIEvent}\n\t */\n\tfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n\t return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n\t}\n\t\n\tSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\t\n\tmodule.exports = SyntheticCompositionEvent;\n\n/***/ },\n/* 321 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar SyntheticMouseEvent = __webpack_require__(52);\n\t\n\t/**\n\t * @interface DragEvent\n\t * @see http://www.w3.org/TR/DOM-Level-3-Events/\n\t */\n\tvar DragEventInterface = {\n\t dataTransfer: null\n\t};\n\t\n\t/**\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {string} dispatchMarker Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @extends {SyntheticUIEvent}\n\t */\n\tfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n\t return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n\t}\n\t\n\tSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\t\n\tmodule.exports = SyntheticDragEvent;\n\n/***/ },\n/* 322 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar SyntheticUIEvent = __webpack_require__(43);\n\t\n\t/**\n\t * @interface FocusEvent\n\t * @see http://www.w3.org/TR/DOM-Level-3-Events/\n\t */\n\tvar FocusEventInterface = {\n\t relatedTarget: null\n\t};\n\t\n\t/**\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {string} dispatchMarker Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @extends {SyntheticUIEvent}\n\t */\n\tfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n\t return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n\t}\n\t\n\tSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\t\n\tmodule.exports = SyntheticFocusEvent;\n\n/***/ },\n/* 323 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar SyntheticEvent = __webpack_require__(20);\n\t\n\t/**\n\t * @interface Event\n\t * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n\t * /#events-inputevents\n\t */\n\tvar InputEventInterface = {\n\t data: null\n\t};\n\t\n\t/**\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {string} dispatchMarker Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @extends {SyntheticUIEvent}\n\t */\n\tfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n\t return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n\t}\n\t\n\tSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\t\n\tmodule.exports = SyntheticInputEvent;\n\n/***/ },\n/* 324 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar SyntheticUIEvent = __webpack_require__(43);\n\t\n\tvar getEventCharCode = __webpack_require__(82);\n\tvar getEventKey = __webpack_require__(332);\n\tvar getEventModifierState = __webpack_require__(83);\n\t\n\t/**\n\t * @interface KeyboardEvent\n\t * @see http://www.w3.org/TR/DOM-Level-3-Events/\n\t */\n\tvar KeyboardEventInterface = {\n\t key: getEventKey,\n\t location: null,\n\t ctrlKey: null,\n\t shiftKey: null,\n\t altKey: null,\n\t metaKey: null,\n\t repeat: null,\n\t locale: null,\n\t getModifierState: getEventModifierState,\n\t // Legacy Interface\n\t charCode: function (event) {\n\t // `charCode` is the result of a KeyPress event and represents the value of\n\t // the actual printable character.\n\t\n\t // KeyPress is deprecated, but its replacement is not yet final and not\n\t // implemented in any major browser. Only KeyPress has charCode.\n\t if (event.type === 'keypress') {\n\t return getEventCharCode(event);\n\t }\n\t return 0;\n\t },\n\t keyCode: function (event) {\n\t // `keyCode` is the result of a KeyDown/Up event and represents the value of\n\t // physical keyboard key.\n\t\n\t // The actual meaning of the value depends on the users' keyboard layout\n\t // which cannot be detected. Assuming that it is a US keyboard layout\n\t // provides a surprisingly accurate mapping for US and European users.\n\t // Due to this, it is left to the user to implement at this time.\n\t if (event.type === 'keydown' || event.type === 'keyup') {\n\t return event.keyCode;\n\t }\n\t return 0;\n\t },\n\t which: function (event) {\n\t // `which` is an alias for either `keyCode` or `charCode` depending on the\n\t // type of the event.\n\t if (event.type === 'keypress') {\n\t return getEventCharCode(event);\n\t }\n\t if (event.type === 'keydown' || event.type === 'keyup') {\n\t return event.keyCode;\n\t }\n\t return 0;\n\t }\n\t};\n\t\n\t/**\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {string} dispatchMarker Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @extends {SyntheticUIEvent}\n\t */\n\tfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n\t return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n\t}\n\t\n\tSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\t\n\tmodule.exports = SyntheticKeyboardEvent;\n\n/***/ },\n/* 325 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar SyntheticUIEvent = __webpack_require__(43);\n\t\n\tvar getEventModifierState = __webpack_require__(83);\n\t\n\t/**\n\t * @interface TouchEvent\n\t * @see http://www.w3.org/TR/touch-events/\n\t */\n\tvar TouchEventInterface = {\n\t touches: null,\n\t targetTouches: null,\n\t changedTouches: null,\n\t altKey: null,\n\t metaKey: null,\n\t ctrlKey: null,\n\t shiftKey: null,\n\t getModifierState: getEventModifierState\n\t};\n\t\n\t/**\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {string} dispatchMarker Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @extends {SyntheticUIEvent}\n\t */\n\tfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n\t return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n\t}\n\t\n\tSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\t\n\tmodule.exports = SyntheticTouchEvent;\n\n/***/ },\n/* 326 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar SyntheticEvent = __webpack_require__(20);\n\t\n\t/**\n\t * @interface Event\n\t * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n\t */\n\tvar TransitionEventInterface = {\n\t propertyName: null,\n\t elapsedTime: null,\n\t pseudoElement: null\n\t};\n\t\n\t/**\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {string} dispatchMarker Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @extends {SyntheticEvent}\n\t */\n\tfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n\t return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n\t}\n\t\n\tSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\t\n\tmodule.exports = SyntheticTransitionEvent;\n\n/***/ },\n/* 327 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar SyntheticMouseEvent = __webpack_require__(52);\n\t\n\t/**\n\t * @interface WheelEvent\n\t * @see http://www.w3.org/TR/DOM-Level-3-Events/\n\t */\n\tvar WheelEventInterface = {\n\t deltaX: function (event) {\n\t return 'deltaX' in event ? event.deltaX :\n\t // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n\t 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n\t },\n\t deltaY: function (event) {\n\t return 'deltaY' in event ? event.deltaY :\n\t // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n\t 'wheelDeltaY' in event ? -event.wheelDeltaY :\n\t // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n\t 'wheelDelta' in event ? -event.wheelDelta : 0;\n\t },\n\t deltaZ: null,\n\t\n\t // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n\t // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n\t // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n\t // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n\t deltaMode: null\n\t};\n\t\n\t/**\n\t * @param {object} dispatchConfig Configuration used to dispatch this event.\n\t * @param {string} dispatchMarker Marker identifying the event target.\n\t * @param {object} nativeEvent Native browser event.\n\t * @extends {SyntheticMouseEvent}\n\t */\n\tfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n\t return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n\t}\n\t\n\tSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\t\n\tmodule.exports = SyntheticWheelEvent;\n\n/***/ },\n/* 328 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar MOD = 65521;\n\t\n\t// adler32 is not cryptographically strong, and is only used to sanity check that\n\t// markup generated on the server matches the markup generated on the client.\n\t// This implementation (a modified version of the SheetJS version) has been optimized\n\t// for our use case, at the expense of conforming to the adler32 specification\n\t// for non-ascii inputs.\n\tfunction adler32(data) {\n\t var a = 1;\n\t var b = 0;\n\t var i = 0;\n\t var l = data.length;\n\t var m = l & ~0x3;\n\t while (i < m) {\n\t var n = Math.min(i + 4096, m);\n\t for (; i < n; i += 4) {\n\t b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n\t }\n\t a %= MOD;\n\t b %= MOD;\n\t }\n\t for (; i < l; i++) {\n\t b += a += data.charCodeAt(i);\n\t }\n\t a %= MOD;\n\t b %= MOD;\n\t return a | b << 16;\n\t}\n\t\n\tmodule.exports = adler32;\n\n/***/ },\n/* 329 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar CSSProperty = __webpack_require__(118);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\n\tvar styleWarnings = {};\n\t\n\t/**\n\t * Convert a value into the proper css writable value. The style name `name`\n\t * should be logical (no hyphens), as specified\n\t * in `CSSProperty.isUnitlessNumber`.\n\t *\n\t * @param {string} name CSS property name such as `topMargin`.\n\t * @param {*} value CSS property value such as `10px`.\n\t * @param {ReactDOMComponent} component\n\t * @return {string} Normalized style value with dimensions applied.\n\t */\n\tfunction dangerousStyleValue(name, value, component) {\n\t // Note that we've removed escapeTextForBrowser() calls here since the\n\t // whole string will be escaped when the attribute is injected into\n\t // the markup. If you provide unsafe user data here they can inject\n\t // arbitrary CSS which may be problematic (I couldn't repro this):\n\t // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n\t // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n\t // This is not an XSS hole but instead a potential CSS injection issue\n\t // which has lead to a greater discussion about how we're going to\n\t // trust URLs moving forward. See #2115901\n\t\n\t var isEmpty = value == null || typeof value === 'boolean' || value === '';\n\t if (isEmpty) {\n\t return '';\n\t }\n\t\n\t var isNonNumeric = isNaN(value);\n\t if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n\t return '' + value; // cast to string\n\t }\n\t\n\t if (typeof value === 'string') {\n\t if (false) {\n\t // Allow '0' to pass through without warning. 0 is already special and\n\t // doesn't require units, so we don't need to warn about it.\n\t if (component && value !== '0') {\n\t var owner = component._currentElement._owner;\n\t var ownerName = owner ? owner.getName() : null;\n\t if (ownerName && !styleWarnings[ownerName]) {\n\t styleWarnings[ownerName] = {};\n\t }\n\t var warned = false;\n\t if (ownerName) {\n\t var warnings = styleWarnings[ownerName];\n\t warned = warnings[name];\n\t if (!warned) {\n\t warnings[name] = true;\n\t }\n\t }\n\t if (!warned) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n\t }\n\t }\n\t }\n\t value = value.trim();\n\t }\n\t return value + 'px';\n\t}\n\t\n\tmodule.exports = dangerousStyleValue;\n\n/***/ },\n/* 330 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(5);\n\t\n\tvar ReactCurrentOwner = __webpack_require__(21);\n\tvar ReactDOMComponentTree = __webpack_require__(8);\n\tvar ReactInstanceMap = __webpack_require__(42);\n\t\n\tvar getHostComponentFromComposite = __webpack_require__(132);\n\tvar invariant = __webpack_require__(3);\n\tvar warning = __webpack_require__(4);\n\t\n\t/**\n\t * Returns the DOM node rendered by this element.\n\t *\n\t * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n\t *\n\t * @param {ReactComponent|DOMElement} componentOrElement\n\t * @return {?DOMElement} The root node of this element.\n\t */\n\tfunction findDOMNode(componentOrElement) {\n\t if (false) {\n\t var owner = ReactCurrentOwner.current;\n\t if (owner !== null) {\n\t process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n\t owner._warnedAboutRefsInRender = true;\n\t }\n\t }\n\t if (componentOrElement == null) {\n\t return null;\n\t }\n\t if (componentOrElement.nodeType === 1) {\n\t return componentOrElement;\n\t }\n\t\n\t var inst = ReactInstanceMap.get(componentOrElement);\n\t if (inst) {\n\t inst = getHostComponentFromComposite(inst);\n\t return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n\t }\n\t\n\t if (typeof componentOrElement.render === 'function') {\n\t true ? false ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n\t } else {\n\t true ? false ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n\t }\n\t}\n\t\n\tmodule.exports = findDOMNode;\n\n/***/ },\n/* 331 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(process) {/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar KeyEscapeUtils = __webpack_require__(76);\n\tvar traverseAllChildren = __webpack_require__(137);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar ReactComponentTreeHook;\n\t\n\tif (typeof process !== 'undefined' && ({\"NODE_ENV\":\"production\"}) && (\"production\") === 'test') {\n\t // Temporary hack.\n\t // Inline requires don't work well with Jest:\n\t // https://github.com/facebook/react/issues/7240\n\t // Remove the inline requires when we don't need them anymore:\n\t // https://github.com/facebook/react/pull/7178\n\t ReactComponentTreeHook = __webpack_require__(156);\n\t}\n\t\n\t/**\n\t * @param {function} traverseContext Context passed through traversal.\n\t * @param {?ReactComponent} child React child component.\n\t * @param {!string} name String name of key path to child.\n\t * @param {number=} selfDebugID Optional debugID of the current internal instance.\n\t */\n\tfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n\t // We found a component instance.\n\t if (traverseContext && typeof traverseContext === 'object') {\n\t var result = traverseContext;\n\t var keyUnique = result[name] === undefined;\n\t if (false) {\n\t if (!ReactComponentTreeHook) {\n\t ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n\t }\n\t if (!keyUnique) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n\t }\n\t }\n\t if (keyUnique && child != null) {\n\t result[name] = child;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Flattens children that are typically specified as `props.children`. Any null\n\t * children will not be included in the resulting object.\n\t * @return {!object} flattened children keyed by name.\n\t */\n\tfunction flattenChildren(children, selfDebugID) {\n\t if (children == null) {\n\t return children;\n\t }\n\t var result = {};\n\t\n\t if (false) {\n\t traverseAllChildren(children, function (traverseContext, child, name) {\n\t return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n\t }, result);\n\t } else {\n\t traverseAllChildren(children, flattenSingleChildIntoContext, result);\n\t }\n\t return result;\n\t}\n\t\n\tmodule.exports = flattenChildren;\n\t/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(71)))\n\n/***/ },\n/* 332 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar getEventCharCode = __webpack_require__(82);\n\t\n\t/**\n\t * Normalization of deprecated HTML5 `key` values\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n\t */\n\tvar normalizeKey = {\n\t 'Esc': 'Escape',\n\t 'Spacebar': ' ',\n\t 'Left': 'ArrowLeft',\n\t 'Up': 'ArrowUp',\n\t 'Right': 'ArrowRight',\n\t 'Down': 'ArrowDown',\n\t 'Del': 'Delete',\n\t 'Win': 'OS',\n\t 'Menu': 'ContextMenu',\n\t 'Apps': 'ContextMenu',\n\t 'Scroll': 'ScrollLock',\n\t 'MozPrintableKey': 'Unidentified'\n\t};\n\t\n\t/**\n\t * Translation from legacy `keyCode` to HTML5 `key`\n\t * Only special keys supported, all others depend on keyboard layout or browser\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n\t */\n\tvar translateToKey = {\n\t 8: 'Backspace',\n\t 9: 'Tab',\n\t 12: 'Clear',\n\t 13: 'Enter',\n\t 16: 'Shift',\n\t 17: 'Control',\n\t 18: 'Alt',\n\t 19: 'Pause',\n\t 20: 'CapsLock',\n\t 27: 'Escape',\n\t 32: ' ',\n\t 33: 'PageUp',\n\t 34: 'PageDown',\n\t 35: 'End',\n\t 36: 'Home',\n\t 37: 'ArrowLeft',\n\t 38: 'ArrowUp',\n\t 39: 'ArrowRight',\n\t 40: 'ArrowDown',\n\t 45: 'Insert',\n\t 46: 'Delete',\n\t 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',\n\t 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',\n\t 144: 'NumLock',\n\t 145: 'ScrollLock',\n\t 224: 'Meta'\n\t};\n\t\n\t/**\n\t * @param {object} nativeEvent Native browser event.\n\t * @return {string} Normalized `key` property.\n\t */\n\tfunction getEventKey(nativeEvent) {\n\t if (nativeEvent.key) {\n\t // Normalize inconsistent values reported by browsers due to\n\t // implementations of a working draft specification.\n\t\n\t // FireFox implements `key` but returns `MozPrintableKey` for all\n\t // printable characters (normalized to `Unidentified`), ignore it.\n\t var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n\t if (key !== 'Unidentified') {\n\t return key;\n\t }\n\t }\n\t\n\t // Browser does not implement `key`, polyfill as much of it as we can.\n\t if (nativeEvent.type === 'keypress') {\n\t var charCode = getEventCharCode(nativeEvent);\n\t\n\t // The enter-key is technically both printable and non-printable and can\n\t // thus be captured by `keypress`, no other non-printable key should.\n\t return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n\t }\n\t if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n\t // While user keyboard layout determines the actual meaning of each\n\t // `keyCode` value, almost all function keys have a universal value.\n\t return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n\t }\n\t return '';\n\t}\n\t\n\tmodule.exports = getEventKey;\n\n/***/ },\n/* 333 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\t/* global Symbol */\n\t\n\tvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n\tvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\t\n\t/**\n\t * Returns the iterator method function contained on the iterable object.\n\t *\n\t * Be sure to invoke the function with the iterable as context:\n\t *\n\t * var iteratorFn = getIteratorFn(myIterable);\n\t * if (iteratorFn) {\n\t * var iterator = iteratorFn.call(myIterable);\n\t * ...\n\t * }\n\t *\n\t * @param {?object} maybeIterable\n\t * @return {?function}\n\t */\n\tfunction getIteratorFn(maybeIterable) {\n\t var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n\t if (typeof iteratorFn === 'function') {\n\t return iteratorFn;\n\t }\n\t}\n\t\n\tmodule.exports = getIteratorFn;\n\n/***/ },\n/* 334 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar nextDebugID = 1;\n\t\n\tfunction getNextDebugID() {\n\t return nextDebugID++;\n\t}\n\t\n\tmodule.exports = getNextDebugID;\n\n/***/ },\n/* 335 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Given any node return the first leaf node without children.\n\t *\n\t * @param {DOMElement|DOMTextNode} node\n\t * @return {DOMElement|DOMTextNode}\n\t */\n\t\n\tfunction getLeafNode(node) {\n\t while (node && node.firstChild) {\n\t node = node.firstChild;\n\t }\n\t return node;\n\t}\n\t\n\t/**\n\t * Get the next sibling within a container. This will walk up the\n\t * DOM if a node's siblings have been exhausted.\n\t *\n\t * @param {DOMElement|DOMTextNode} node\n\t * @return {?DOMElement|DOMTextNode}\n\t */\n\tfunction getSiblingNode(node) {\n\t while (node) {\n\t if (node.nextSibling) {\n\t return node.nextSibling;\n\t }\n\t node = node.parentNode;\n\t }\n\t}\n\t\n\t/**\n\t * Get object describing the nodes which contain characters at offset.\n\t *\n\t * @param {DOMElement|DOMTextNode} root\n\t * @param {number} offset\n\t * @return {?object}\n\t */\n\tfunction getNodeForCharacterOffset(root, offset) {\n\t var node = getLeafNode(root);\n\t var nodeStart = 0;\n\t var nodeEnd = 0;\n\t\n\t while (node) {\n\t if (node.nodeType === 3) {\n\t nodeEnd = nodeStart + node.textContent.length;\n\t\n\t if (nodeStart <= offset && nodeEnd >= offset) {\n\t return {\n\t node: node,\n\t offset: offset - nodeStart\n\t };\n\t }\n\t\n\t nodeStart = nodeEnd;\n\t }\n\t\n\t node = getLeafNode(getSiblingNode(node));\n\t }\n\t}\n\t\n\tmodule.exports = getNodeForCharacterOffset;\n\n/***/ },\n/* 336 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ExecutionEnvironment = __webpack_require__(12);\n\t\n\t/**\n\t * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n\t *\n\t * @param {string} styleProp\n\t * @param {string} eventName\n\t * @returns {object}\n\t */\n\tfunction makePrefixMap(styleProp, eventName) {\n\t var prefixes = {};\n\t\n\t prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n\t prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n\t prefixes['Moz' + styleProp] = 'moz' + eventName;\n\t prefixes['ms' + styleProp] = 'MS' + eventName;\n\t prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\t\n\t return prefixes;\n\t}\n\t\n\t/**\n\t * A list of event names to a configurable list of vendor prefixes.\n\t */\n\tvar vendorPrefixes = {\n\t animationend: makePrefixMap('Animation', 'AnimationEnd'),\n\t animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n\t animationstart: makePrefixMap('Animation', 'AnimationStart'),\n\t transitionend: makePrefixMap('Transition', 'TransitionEnd')\n\t};\n\t\n\t/**\n\t * Event names that have already been detected and prefixed (if applicable).\n\t */\n\tvar prefixedEventNames = {};\n\t\n\t/**\n\t * Element to check for prefixes on.\n\t */\n\tvar style = {};\n\t\n\t/**\n\t * Bootstrap if a DOM exists.\n\t */\n\tif (ExecutionEnvironment.canUseDOM) {\n\t style = document.createElement('div').style;\n\t\n\t // On some platforms, in particular some releases of Android 4.x,\n\t // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n\t // style object but the events that fire will still be prefixed, so we need\n\t // to check if the un-prefixed events are usable, and if not remove them from the map.\n\t if (!('AnimationEvent' in window)) {\n\t delete vendorPrefixes.animationend.animation;\n\t delete vendorPrefixes.animationiteration.animation;\n\t delete vendorPrefixes.animationstart.animation;\n\t }\n\t\n\t // Same as above\n\t if (!('TransitionEvent' in window)) {\n\t delete vendorPrefixes.transitionend.transition;\n\t }\n\t}\n\t\n\t/**\n\t * Attempts to determine the correct vendor prefixed event name.\n\t *\n\t * @param {string} eventName\n\t * @returns {string}\n\t */\n\tfunction getVendorPrefixedEventName(eventName) {\n\t if (prefixedEventNames[eventName]) {\n\t return prefixedEventNames[eventName];\n\t } else if (!vendorPrefixes[eventName]) {\n\t return eventName;\n\t }\n\t\n\t var prefixMap = vendorPrefixes[eventName];\n\t\n\t for (var styleProp in prefixMap) {\n\t if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n\t return prefixedEventNames[eventName] = prefixMap[styleProp];\n\t }\n\t }\n\t\n\t return '';\n\t}\n\t\n\tmodule.exports = getVendorPrefixedEventName;\n\n/***/ },\n/* 337 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar escapeTextContentForBrowser = __webpack_require__(54);\n\t\n\t/**\n\t * Escapes attribute value to prevent scripting attacks.\n\t *\n\t * @param {*} value Value to escape.\n\t * @return {string} An escaped string.\n\t */\n\tfunction quoteAttributeValueForBrowser(value) {\n\t return '\"' + escapeTextContentForBrowser(value) + '\"';\n\t}\n\t\n\tmodule.exports = quoteAttributeValueForBrowser;\n\n/***/ },\n/* 338 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactMount = __webpack_require__(127);\n\t\n\tmodule.exports = ReactMount.renderSubtreeIntoContainer;\n\n/***/ },\n/* 339 */\n/***/ function(module, exports) {\n\n\t;(function() {\n\t\"use strict\";\n\t\n\tif (typeof window === 'undefined') return;\n\t\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t\n\t/**\n\t * A component handler interface using the revealing module design pattern.\n\t * More details on this design pattern here:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @author Jason Mayes.\n\t */\n\t/* exported componentHandler */\n\t\n\t// Pre-defining the componentHandler interface, for closure documentation and\n\t// static verification.\n\tvar componentHandler = {\n\t /**\n\t * Searches existing DOM for elements of our component type and upgrades them\n\t * if they have not already been upgraded.\n\t *\n\t * @param {string=} optJsClass the programatic name of the element class we\n\t * need to create a new instance of.\n\t * @param {string=} optCssClass the name of the CSS class elements of this\n\t * type will have.\n\t */\n\t upgradeDom: function(optJsClass, optCssClass) {},\n\t /**\n\t * Upgrades a specific element rather than all in the DOM.\n\t *\n\t * @param {!Element} element The element we wish to upgrade.\n\t * @param {string=} optJsClass Optional name of the class we want to upgrade\n\t * the element to.\n\t */\n\t upgradeElement: function(element, optJsClass) {},\n\t /**\n\t * Upgrades a specific list of elements rather than all in the DOM.\n\t *\n\t * @param {!Element|!Array<!Element>|!NodeList|!HTMLCollection} elements\n\t * The elements we wish to upgrade.\n\t */\n\t upgradeElements: function(elements) {},\n\t /**\n\t * Upgrades all registered components found in the current DOM. This is\n\t * automatically called on window load.\n\t */\n\t upgradeAllRegistered: function() {},\n\t /**\n\t * Allows user to be alerted to any upgrades that are performed for a given\n\t * component type\n\t *\n\t * @param {string} jsClass The class name of the MDL component we wish\n\t * to hook into for any upgrades performed.\n\t * @param {function(!HTMLElement)} callback The function to call upon an\n\t * upgrade. This function should expect 1 parameter - the HTMLElement which\n\t * got upgraded.\n\t */\n\t registerUpgradedCallback: function(jsClass, callback) {},\n\t /**\n\t * Registers a class for future use and attempts to upgrade existing DOM.\n\t *\n\t * @param {componentHandler.ComponentConfigPublic} config the registration configuration\n\t */\n\t register: function(config) {},\n\t /**\n\t * Downgrade either a given node, an array of nodes, or a NodeList.\n\t *\n\t * @param {!Node|!Array<!Node>|!NodeList} nodes\n\t */\n\t downgradeElements: function(nodes) {}\n\t};\n\t\n\tcomponentHandler = (function() {\n\t 'use strict';\n\t\n\t /** @type {!Array<componentHandler.ComponentConfig>} */\n\t var registeredComponents_ = [];\n\t\n\t /** @type {!Array<componentHandler.Component>} */\n\t var createdComponents_ = [];\n\t\n\t var componentConfigProperty_ = 'mdlComponentConfigInternal_';\n\t\n\t /**\n\t * Searches registered components for a class we are interested in using.\n\t * Optionally replaces a match with passed object if specified.\n\t *\n\t * @param {string} name The name of a class we want to use.\n\t * @param {componentHandler.ComponentConfig=} optReplace Optional object to replace match with.\n\t * @return {!Object|boolean}\n\t * @private\n\t */\n\t function findRegisteredClass_(name, optReplace) {\n\t for (var i = 0; i < registeredComponents_.length; i++) {\n\t if (registeredComponents_[i].className === name) {\n\t if (typeof optReplace !== 'undefined') {\n\t registeredComponents_[i] = optReplace;\n\t }\n\t return registeredComponents_[i];\n\t }\n\t }\n\t return false;\n\t }\n\t\n\t /**\n\t * Returns an array of the classNames of the upgraded classes on the element.\n\t *\n\t * @param {!Element} element The element to fetch data from.\n\t * @return {!Array<string>}\n\t * @private\n\t */\n\t function getUpgradedListOfElement_(element) {\n\t var dataUpgraded = element.getAttribute('data-upgraded');\n\t // Use `['']` as default value to conform the `,name,name...` style.\n\t return dataUpgraded === null ? [''] : dataUpgraded.split(',');\n\t }\n\t\n\t /**\n\t * Returns true if the given element has already been upgraded for the given\n\t * class.\n\t *\n\t * @param {!Element} element The element we want to check.\n\t * @param {string} jsClass The class to check for.\n\t * @returns {boolean}\n\t * @private\n\t */\n\t function isElementUpgraded_(element, jsClass) {\n\t var upgradedList = getUpgradedListOfElement_(element);\n\t return upgradedList.indexOf(jsClass) !== -1;\n\t }\n\t\n\t /**\n\t * Searches existing DOM for elements of our component type and upgrades them\n\t * if they have not already been upgraded.\n\t *\n\t * @param {string=} optJsClass the programatic name of the element class we\n\t * need to create a new instance of.\n\t * @param {string=} optCssClass the name of the CSS class elements of this\n\t * type will have.\n\t */\n\t function upgradeDomInternal(optJsClass, optCssClass) {\n\t if (typeof optJsClass === 'undefined' &&\n\t typeof optCssClass === 'undefined') {\n\t for (var i = 0; i < registeredComponents_.length; i++) {\n\t upgradeDomInternal(registeredComponents_[i].className,\n\t registeredComponents_[i].cssClass);\n\t }\n\t } else {\n\t var jsClass = /** @type {string} */ (optJsClass);\n\t if (typeof optCssClass === 'undefined') {\n\t var registeredClass = findRegisteredClass_(jsClass);\n\t if (registeredClass) {\n\t optCssClass = registeredClass.cssClass;\n\t }\n\t }\n\t\n\t var elements = document.querySelectorAll('.' + optCssClass);\n\t for (var n = 0; n < elements.length; n++) {\n\t upgradeElementInternal(elements[n], jsClass);\n\t }\n\t }\n\t }\n\t\n\t /**\n\t * Upgrades a specific element rather than all in the DOM.\n\t *\n\t * @param {!Element} element The element we wish to upgrade.\n\t * @param {string=} optJsClass Optional name of the class we want to upgrade\n\t * the element to.\n\t */\n\t function upgradeElementInternal(element, optJsClass) {\n\t // Verify argument type.\n\t if (!(typeof element === 'object' && element instanceof Element)) {\n\t throw new Error('Invalid argument provided to upgrade MDL element.');\n\t }\n\t var upgradedList = getUpgradedListOfElement_(element);\n\t var classesToUpgrade = [];\n\t // If jsClass is not provided scan the registered components to find the\n\t // ones matching the element's CSS classList.\n\t if (!optJsClass) {\n\t var classList = element.classList;\n\t registeredComponents_.forEach(function(component) {\n\t // Match CSS & Not to be upgraded & Not upgraded.\n\t if (classList.contains(component.cssClass) &&\n\t classesToUpgrade.indexOf(component) === -1 &&\n\t !isElementUpgraded_(element, component.className)) {\n\t classesToUpgrade.push(component);\n\t }\n\t });\n\t } else if (!isElementUpgraded_(element, optJsClass)) {\n\t classesToUpgrade.push(findRegisteredClass_(optJsClass));\n\t }\n\t\n\t // Upgrade the element for each classes.\n\t for (var i = 0, n = classesToUpgrade.length, registeredClass; i < n; i++) {\n\t registeredClass = classesToUpgrade[i];\n\t if (registeredClass) {\n\t // Mark element as upgraded.\n\t upgradedList.push(registeredClass.className);\n\t element.setAttribute('data-upgraded', upgradedList.join(','));\n\t var instance = new registeredClass.classConstructor(element);\n\t instance[componentConfigProperty_] = registeredClass;\n\t createdComponents_.push(instance);\n\t // Call any callbacks the user has registered with this component type.\n\t for (var j = 0, m = registeredClass.callbacks.length; j < m; j++) {\n\t registeredClass.callbacks[j](element);\n\t }\n\t\n\t if (registeredClass.widget) {\n\t // Assign per element instance for control over API\n\t element[registeredClass.className] = instance;\n\t }\n\t } else {\n\t throw new Error(\n\t 'Unable to find a registered component for the given class.');\n\t }\n\t\n\t var ev;\n\t if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {\n\t ev = new CustomEvent('mdl-componentupgraded', {\n\t bubbles: true, cancelable: false\n\t });\n\t } else {\n\t ev = document.createEvent('Events');\n\t ev.initEvent('mdl-componentupgraded', true, true);\n\t }\n\t element.dispatchEvent(ev);\n\t }\n\t }\n\t\n\t /**\n\t * Upgrades a specific list of elements rather than all in the DOM.\n\t *\n\t * @param {!Element|!Array<!Element>|!NodeList|!HTMLCollection} elements\n\t * The elements we wish to upgrade.\n\t */\n\t function upgradeElementsInternal(elements) {\n\t if (!Array.isArray(elements)) {\n\t if (elements instanceof Element) {\n\t elements = [elements];\n\t } else {\n\t elements = Array.prototype.slice.call(elements);\n\t }\n\t }\n\t for (var i = 0, n = elements.length, element; i < n; i++) {\n\t element = elements[i];\n\t if (element instanceof HTMLElement) {\n\t upgradeElementInternal(element);\n\t if (element.children.length > 0) {\n\t upgradeElementsInternal(element.children);\n\t }\n\t }\n\t }\n\t }\n\t\n\t /**\n\t * Registers a class for future use and attempts to upgrade existing DOM.\n\t *\n\t * @param {componentHandler.ComponentConfigPublic} config\n\t */\n\t function registerInternal(config) {\n\t // In order to support both Closure-compiled and uncompiled code accessing\n\t // this method, we need to allow for both the dot and array syntax for\n\t // property access. You'll therefore see the `foo.bar || foo['bar']`\n\t // pattern repeated across this method.\n\t var widgetMissing = (typeof config.widget === 'undefined' &&\n\t typeof config['widget'] === 'undefined');\n\t var widget = true;\n\t\n\t if (!widgetMissing) {\n\t widget = config.widget || config['widget'];\n\t }\n\t\n\t var newConfig = /** @type {componentHandler.ComponentConfig} */ ({\n\t classConstructor: config.constructor || config['constructor'],\n\t className: config.classAsString || config['classAsString'],\n\t cssClass: config.cssClass || config['cssClass'],\n\t widget: widget,\n\t callbacks: []\n\t });\n\t\n\t registeredComponents_.forEach(function(item) {\n\t if (item.cssClass === newConfig.cssClass) {\n\t throw new Error('The provided cssClass has already been registered: ' + item.cssClass);\n\t }\n\t if (item.className === newConfig.className) {\n\t throw new Error('The provided className has already been registered');\n\t }\n\t });\n\t\n\t if (config.constructor.prototype\n\t .hasOwnProperty(componentConfigProperty_)) {\n\t throw new Error(\n\t 'MDL component classes must not have ' + componentConfigProperty_ +\n\t ' defined as a property.');\n\t }\n\t\n\t var found = findRegisteredClass_(config.classAsString, newConfig);\n\t\n\t if (!found) {\n\t registeredComponents_.push(newConfig);\n\t }\n\t }\n\t\n\t /**\n\t * Allows user to be alerted to any upgrades that are performed for a given\n\t * component type\n\t *\n\t * @param {string} jsClass The class name of the MDL component we wish\n\t * to hook into for any upgrades performed.\n\t * @param {function(!HTMLElement)} callback The function to call upon an\n\t * upgrade. This function should expect 1 parameter - the HTMLElement which\n\t * got upgraded.\n\t */\n\t function registerUpgradedCallbackInternal(jsClass, callback) {\n\t var regClass = findRegisteredClass_(jsClass);\n\t if (regClass) {\n\t regClass.callbacks.push(callback);\n\t }\n\t }\n\t\n\t /**\n\t * Upgrades all registered components found in the current DOM. This is\n\t * automatically called on window load.\n\t */\n\t function upgradeAllRegisteredInternal() {\n\t for (var n = 0; n < registeredComponents_.length; n++) {\n\t upgradeDomInternal(registeredComponents_[n].className);\n\t }\n\t }\n\t\n\t /**\n\t * Check the component for the downgrade method.\n\t * Execute if found.\n\t * Remove component from createdComponents list.\n\t *\n\t * @param {?componentHandler.Component} component\n\t */\n\t function deconstructComponentInternal(component) {\n\t if (component) {\n\t var componentIndex = createdComponents_.indexOf(component);\n\t createdComponents_.splice(componentIndex, 1);\n\t\n\t var upgrades = component.element_.getAttribute('data-upgraded').split(',');\n\t var componentPlace = upgrades.indexOf(component[componentConfigProperty_].classAsString);\n\t upgrades.splice(componentPlace, 1);\n\t component.element_.setAttribute('data-upgraded', upgrades.join(','));\n\t\n\t var ev;\n\t if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {\n\t ev = new CustomEvent('mdl-componentdowngraded', {\n\t bubbles: true, cancelable: false\n\t });\n\t } else {\n\t ev = document.createEvent('Events');\n\t ev.initEvent('mdl-componentdowngraded', true, true);\n\t }\n\t component.element_.dispatchEvent(ev);\n\t }\n\t }\n\t\n\t /**\n\t * Downgrade either a given node, an array of nodes, or a NodeList.\n\t *\n\t * @param {!Node|!Array<!Node>|!NodeList} nodes\n\t */\n\t function downgradeNodesInternal(nodes) {\n\t /**\n\t * Auxiliary function to downgrade a single node.\n\t * @param {!Node} node the node to be downgraded\n\t */\n\t var downgradeNode = function(node) {\n\t createdComponents_.filter(function(item) {\n\t return item.element_ === node;\n\t }).forEach(deconstructComponentInternal);\n\t };\n\t if (nodes instanceof Array || nodes instanceof NodeList) {\n\t for (var n = 0; n < nodes.length; n++) {\n\t downgradeNode(nodes[n]);\n\t }\n\t } else if (nodes instanceof Node) {\n\t downgradeNode(nodes);\n\t } else {\n\t throw new Error('Invalid argument provided to downgrade MDL nodes.');\n\t }\n\t }\n\t\n\t // Now return the functions that should be made public with their publicly\n\t // facing names...\n\t return {\n\t upgradeDom: upgradeDomInternal,\n\t upgradeElement: upgradeElementInternal,\n\t upgradeElements: upgradeElementsInternal,\n\t upgradeAllRegistered: upgradeAllRegisteredInternal,\n\t registerUpgradedCallback: registerUpgradedCallbackInternal,\n\t register: registerInternal,\n\t downgradeElements: downgradeNodesInternal\n\t };\n\t})();\n\t\n\t/**\n\t * Describes the type of a registered component type managed by\n\t * componentHandler. Provided for benefit of the Closure compiler.\n\t *\n\t * @typedef {{\n\t * constructor: Function,\n\t * classAsString: string,\n\t * cssClass: string,\n\t * widget: (string|boolean|undefined)\n\t * }}\n\t */\n\tcomponentHandler.ComponentConfigPublic; // jshint ignore:line\n\t\n\t/**\n\t * Describes the type of a registered component type managed by\n\t * componentHandler. Provided for benefit of the Closure compiler.\n\t *\n\t * @typedef {{\n\t * constructor: !Function,\n\t * className: string,\n\t * cssClass: string,\n\t * widget: (string|boolean),\n\t * callbacks: !Array<function(!HTMLElement)>\n\t * }}\n\t */\n\tcomponentHandler.ComponentConfig; // jshint ignore:line\n\t\n\t/**\n\t * Created component (i.e., upgraded element) type as managed by\n\t * componentHandler. Provided for benefit of the Closure compiler.\n\t *\n\t * @typedef {{\n\t * element_: !HTMLElement,\n\t * className: string,\n\t * classAsString: string,\n\t * cssClass: string,\n\t * widget: string\n\t * }}\n\t */\n\tcomponentHandler.Component; // jshint ignore:line\n\t\n\t// Export all symbols, for the benefit of Closure compiler.\n\t// No effect on uncompiled code.\n\tcomponentHandler['upgradeDom'] = componentHandler.upgradeDom;\n\tcomponentHandler['upgradeElement'] = componentHandler.upgradeElement;\n\tcomponentHandler['upgradeElements'] = componentHandler.upgradeElements;\n\tcomponentHandler['upgradeAllRegistered'] =\n\t componentHandler.upgradeAllRegistered;\n\tcomponentHandler['registerUpgradedCallback'] =\n\t componentHandler.registerUpgradedCallback;\n\tcomponentHandler['register'] = componentHandler.register;\n\tcomponentHandler['downgradeElements'] = componentHandler.downgradeElements;\n\twindow.componentHandler = componentHandler;\n\twindow['componentHandler'] = componentHandler;\n\t\n\twindow.addEventListener('load', function() {\n\t 'use strict';\n\t\n\t /**\n\t * Performs a \"Cutting the mustard\" test. If the browser supports the features\n\t * tested, adds a mdl-js class to the <html> element. It then upgrades all MDL\n\t * components requiring JavaScript.\n\t */\n\t if ('classList' in document.createElement('div') &&\n\t 'querySelector' in document &&\n\t 'addEventListener' in window && Array.prototype.forEach) {\n\t document.documentElement.classList.add('mdl-js');\n\t } else {\n\t /**\n\t * Dummy function to avoid JS errors.\n\t */\n\t componentHandler.upgradeElement = function() {};\n\t /**\n\t * Dummy function to avoid JS errors.\n\t */\n\t componentHandler.register = function() {};\n\t }\n\t});\n\t\n\t// Source: https://github.com/darius/requestAnimationFrame/blob/master/requestAnimationFrame.js\n\t// Adapted from https://gist.github.com/paulirish/1579671 which derived from\n\t// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n\t// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n\t// requestAnimationFrame polyfill by Erik Möller.\n\t// Fixes from Paul Irish, Tino Zijdel, Andrew Mao, Klemen Slavič, Darius Bacon\n\t// MIT license\n\tif (!Date.now) {\n\t /**\n\t * Date.now polyfill.\n\t * @return {number} the current Date\n\t */\n\t Date.now = function () {\n\t return new Date().getTime();\n\t };\n\t Date['now'] = Date.now;\n\t}\n\tvar vendors = [\n\t 'webkit',\n\t 'moz'\n\t];\n\tfor (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n\t var vp = vendors[i];\n\t window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];\n\t window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];\n\t window['requestAnimationFrame'] = window.requestAnimationFrame;\n\t window['cancelAnimationFrame'] = window.cancelAnimationFrame;\n\t}\n\tif (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n\t var lastTime = 0;\n\t /**\n\t * requestAnimationFrame polyfill.\n\t * @param {!Function} callback the callback function.\n\t */\n\t window.requestAnimationFrame = function (callback) {\n\t var now = Date.now();\n\t var nextTime = Math.max(lastTime + 16, now);\n\t return setTimeout(function () {\n\t callback(lastTime = nextTime);\n\t }, nextTime - now);\n\t };\n\t window.cancelAnimationFrame = clearTimeout;\n\t window['requestAnimationFrame'] = window.requestAnimationFrame;\n\t window['cancelAnimationFrame'] = window.cancelAnimationFrame;\n\t}\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Button MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialButton = function MaterialButton(element) {\n\t this.element_ = element;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialButton'] = MaterialButton;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialButton.prototype.Constant_ = {};\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialButton.prototype.CssClasses_ = {\n\t RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n\t RIPPLE_CONTAINER: 'mdl-button__ripple-container',\n\t RIPPLE: 'mdl-ripple'\n\t};\n\t/**\n\t * Handle blur of element.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialButton.prototype.blurHandler_ = function (event) {\n\t if (event) {\n\t this.element_.blur();\n\t }\n\t};\n\t// Public methods.\n\t/**\n\t * Disable button.\n\t *\n\t * @public\n\t */\n\tMaterialButton.prototype.disable = function () {\n\t this.element_.disabled = true;\n\t};\n\tMaterialButton.prototype['disable'] = MaterialButton.prototype.disable;\n\t/**\n\t * Enable button.\n\t *\n\t * @public\n\t */\n\tMaterialButton.prototype.enable = function () {\n\t this.element_.disabled = false;\n\t};\n\tMaterialButton.prototype['enable'] = MaterialButton.prototype.enable;\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialButton.prototype.init = function () {\n\t if (this.element_) {\n\t if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n\t var rippleContainer = document.createElement('span');\n\t rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n\t this.rippleElement_ = document.createElement('span');\n\t this.rippleElement_.classList.add(this.CssClasses_.RIPPLE);\n\t rippleContainer.appendChild(this.rippleElement_);\n\t this.boundRippleBlurHandler = this.blurHandler_.bind(this);\n\t this.rippleElement_.addEventListener('mouseup', this.boundRippleBlurHandler);\n\t this.element_.appendChild(rippleContainer);\n\t }\n\t this.boundButtonBlurHandler = this.blurHandler_.bind(this);\n\t this.element_.addEventListener('mouseup', this.boundButtonBlurHandler);\n\t this.element_.addEventListener('mouseleave', this.boundButtonBlurHandler);\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialButton,\n\t classAsString: 'MaterialButton',\n\t cssClass: 'mdl-js-button',\n\t widget: true\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Checkbox MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialCheckbox = function MaterialCheckbox(element) {\n\t this.element_ = element;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialCheckbox'] = MaterialCheckbox;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialCheckbox.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialCheckbox.prototype.CssClasses_ = {\n\t INPUT: 'mdl-checkbox__input',\n\t BOX_OUTLINE: 'mdl-checkbox__box-outline',\n\t FOCUS_HELPER: 'mdl-checkbox__focus-helper',\n\t TICK_OUTLINE: 'mdl-checkbox__tick-outline',\n\t RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n\t RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n\t RIPPLE_CONTAINER: 'mdl-checkbox__ripple-container',\n\t RIPPLE_CENTER: 'mdl-ripple--center',\n\t RIPPLE: 'mdl-ripple',\n\t IS_FOCUSED: 'is-focused',\n\t IS_DISABLED: 'is-disabled',\n\t IS_CHECKED: 'is-checked',\n\t IS_UPGRADED: 'is-upgraded'\n\t};\n\t/**\n\t * Handle change of state.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialCheckbox.prototype.onChange_ = function (event) {\n\t this.updateClasses_();\n\t};\n\t/**\n\t * Handle focus of element.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialCheckbox.prototype.onFocus_ = function (event) {\n\t this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n\t};\n\t/**\n\t * Handle lost focus of element.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialCheckbox.prototype.onBlur_ = function (event) {\n\t this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n\t};\n\t/**\n\t * Handle mouseup.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialCheckbox.prototype.onMouseUp_ = function (event) {\n\t this.blur_();\n\t};\n\t/**\n\t * Handle class updates.\n\t *\n\t * @private\n\t */\n\tMaterialCheckbox.prototype.updateClasses_ = function () {\n\t this.checkDisabled();\n\t this.checkToggleState();\n\t};\n\t/**\n\t * Add blur.\n\t *\n\t * @private\n\t */\n\tMaterialCheckbox.prototype.blur_ = function () {\n\t // TODO: figure out why there's a focus event being fired after our blur,\n\t // so that we can avoid this hack.\n\t window.setTimeout(function () {\n\t this.inputElement_.blur();\n\t }.bind(this), this.Constant_.TINY_TIMEOUT);\n\t};\n\t// Public methods.\n\t/**\n\t * Check the inputs toggle state and update display.\n\t *\n\t * @public\n\t */\n\tMaterialCheckbox.prototype.checkToggleState = function () {\n\t if (this.inputElement_.checked) {\n\t this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n\t }\n\t};\n\tMaterialCheckbox.prototype['checkToggleState'] = MaterialCheckbox.prototype.checkToggleState;\n\t/**\n\t * Check the inputs disabled state and update display.\n\t *\n\t * @public\n\t */\n\tMaterialCheckbox.prototype.checkDisabled = function () {\n\t if (this.inputElement_.disabled) {\n\t this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n\t }\n\t};\n\tMaterialCheckbox.prototype['checkDisabled'] = MaterialCheckbox.prototype.checkDisabled;\n\t/**\n\t * Disable checkbox.\n\t *\n\t * @public\n\t */\n\tMaterialCheckbox.prototype.disable = function () {\n\t this.inputElement_.disabled = true;\n\t this.updateClasses_();\n\t};\n\tMaterialCheckbox.prototype['disable'] = MaterialCheckbox.prototype.disable;\n\t/**\n\t * Enable checkbox.\n\t *\n\t * @public\n\t */\n\tMaterialCheckbox.prototype.enable = function () {\n\t this.inputElement_.disabled = false;\n\t this.updateClasses_();\n\t};\n\tMaterialCheckbox.prototype['enable'] = MaterialCheckbox.prototype.enable;\n\t/**\n\t * Check checkbox.\n\t *\n\t * @public\n\t */\n\tMaterialCheckbox.prototype.check = function () {\n\t this.inputElement_.checked = true;\n\t this.updateClasses_();\n\t};\n\tMaterialCheckbox.prototype['check'] = MaterialCheckbox.prototype.check;\n\t/**\n\t * Uncheck checkbox.\n\t *\n\t * @public\n\t */\n\tMaterialCheckbox.prototype.uncheck = function () {\n\t this.inputElement_.checked = false;\n\t this.updateClasses_();\n\t};\n\tMaterialCheckbox.prototype['uncheck'] = MaterialCheckbox.prototype.uncheck;\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialCheckbox.prototype.init = function () {\n\t if (this.element_) {\n\t this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n\t var boxOutline = document.createElement('span');\n\t boxOutline.classList.add(this.CssClasses_.BOX_OUTLINE);\n\t var tickContainer = document.createElement('span');\n\t tickContainer.classList.add(this.CssClasses_.FOCUS_HELPER);\n\t var tickOutline = document.createElement('span');\n\t tickOutline.classList.add(this.CssClasses_.TICK_OUTLINE);\n\t boxOutline.appendChild(tickOutline);\n\t this.element_.appendChild(tickContainer);\n\t this.element_.appendChild(boxOutline);\n\t if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n\t this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n\t this.rippleContainerElement_ = document.createElement('span');\n\t this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n\t this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n\t this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n\t this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n\t this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n\t var ripple = document.createElement('span');\n\t ripple.classList.add(this.CssClasses_.RIPPLE);\n\t this.rippleContainerElement_.appendChild(ripple);\n\t this.element_.appendChild(this.rippleContainerElement_);\n\t }\n\t this.boundInputOnChange = this.onChange_.bind(this);\n\t this.boundInputOnFocus = this.onFocus_.bind(this);\n\t this.boundInputOnBlur = this.onBlur_.bind(this);\n\t this.boundElementMouseUp = this.onMouseUp_.bind(this);\n\t this.inputElement_.addEventListener('change', this.boundInputOnChange);\n\t this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n\t this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n\t this.element_.addEventListener('mouseup', this.boundElementMouseUp);\n\t this.updateClasses_();\n\t this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialCheckbox,\n\t classAsString: 'MaterialCheckbox',\n\t cssClass: 'mdl-js-checkbox',\n\t widget: true\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for icon toggle MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialIconToggle = function MaterialIconToggle(element) {\n\t this.element_ = element;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialIconToggle'] = MaterialIconToggle;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialIconToggle.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialIconToggle.prototype.CssClasses_ = {\n\t INPUT: 'mdl-icon-toggle__input',\n\t JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n\t RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n\t RIPPLE_CONTAINER: 'mdl-icon-toggle__ripple-container',\n\t RIPPLE_CENTER: 'mdl-ripple--center',\n\t RIPPLE: 'mdl-ripple',\n\t IS_FOCUSED: 'is-focused',\n\t IS_DISABLED: 'is-disabled',\n\t IS_CHECKED: 'is-checked'\n\t};\n\t/**\n\t * Handle change of state.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialIconToggle.prototype.onChange_ = function (event) {\n\t this.updateClasses_();\n\t};\n\t/**\n\t * Handle focus of element.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialIconToggle.prototype.onFocus_ = function (event) {\n\t this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n\t};\n\t/**\n\t * Handle lost focus of element.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialIconToggle.prototype.onBlur_ = function (event) {\n\t this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n\t};\n\t/**\n\t * Handle mouseup.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialIconToggle.prototype.onMouseUp_ = function (event) {\n\t this.blur_();\n\t};\n\t/**\n\t * Handle class updates.\n\t *\n\t * @private\n\t */\n\tMaterialIconToggle.prototype.updateClasses_ = function () {\n\t this.checkDisabled();\n\t this.checkToggleState();\n\t};\n\t/**\n\t * Add blur.\n\t *\n\t * @private\n\t */\n\tMaterialIconToggle.prototype.blur_ = function () {\n\t // TODO: figure out why there's a focus event being fired after our blur,\n\t // so that we can avoid this hack.\n\t window.setTimeout(function () {\n\t this.inputElement_.blur();\n\t }.bind(this), this.Constant_.TINY_TIMEOUT);\n\t};\n\t// Public methods.\n\t/**\n\t * Check the inputs toggle state and update display.\n\t *\n\t * @public\n\t */\n\tMaterialIconToggle.prototype.checkToggleState = function () {\n\t if (this.inputElement_.checked) {\n\t this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n\t }\n\t};\n\tMaterialIconToggle.prototype['checkToggleState'] = MaterialIconToggle.prototype.checkToggleState;\n\t/**\n\t * Check the inputs disabled state and update display.\n\t *\n\t * @public\n\t */\n\tMaterialIconToggle.prototype.checkDisabled = function () {\n\t if (this.inputElement_.disabled) {\n\t this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n\t }\n\t};\n\tMaterialIconToggle.prototype['checkDisabled'] = MaterialIconToggle.prototype.checkDisabled;\n\t/**\n\t * Disable icon toggle.\n\t *\n\t * @public\n\t */\n\tMaterialIconToggle.prototype.disable = function () {\n\t this.inputElement_.disabled = true;\n\t this.updateClasses_();\n\t};\n\tMaterialIconToggle.prototype['disable'] = MaterialIconToggle.prototype.disable;\n\t/**\n\t * Enable icon toggle.\n\t *\n\t * @public\n\t */\n\tMaterialIconToggle.prototype.enable = function () {\n\t this.inputElement_.disabled = false;\n\t this.updateClasses_();\n\t};\n\tMaterialIconToggle.prototype['enable'] = MaterialIconToggle.prototype.enable;\n\t/**\n\t * Check icon toggle.\n\t *\n\t * @public\n\t */\n\tMaterialIconToggle.prototype.check = function () {\n\t this.inputElement_.checked = true;\n\t this.updateClasses_();\n\t};\n\tMaterialIconToggle.prototype['check'] = MaterialIconToggle.prototype.check;\n\t/**\n\t * Uncheck icon toggle.\n\t *\n\t * @public\n\t */\n\tMaterialIconToggle.prototype.uncheck = function () {\n\t this.inputElement_.checked = false;\n\t this.updateClasses_();\n\t};\n\tMaterialIconToggle.prototype['uncheck'] = MaterialIconToggle.prototype.uncheck;\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialIconToggle.prototype.init = function () {\n\t if (this.element_) {\n\t this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n\t if (this.element_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n\t this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n\t this.rippleContainerElement_ = document.createElement('span');\n\t this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n\t this.rippleContainerElement_.classList.add(this.CssClasses_.JS_RIPPLE_EFFECT);\n\t this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n\t this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n\t this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n\t var ripple = document.createElement('span');\n\t ripple.classList.add(this.CssClasses_.RIPPLE);\n\t this.rippleContainerElement_.appendChild(ripple);\n\t this.element_.appendChild(this.rippleContainerElement_);\n\t }\n\t this.boundInputOnChange = this.onChange_.bind(this);\n\t this.boundInputOnFocus = this.onFocus_.bind(this);\n\t this.boundInputOnBlur = this.onBlur_.bind(this);\n\t this.boundElementOnMouseUp = this.onMouseUp_.bind(this);\n\t this.inputElement_.addEventListener('change', this.boundInputOnChange);\n\t this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n\t this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n\t this.element_.addEventListener('mouseup', this.boundElementOnMouseUp);\n\t this.updateClasses_();\n\t this.element_.classList.add('is-upgraded');\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialIconToggle,\n\t classAsString: 'MaterialIconToggle',\n\t cssClass: 'mdl-js-icon-toggle',\n\t widget: true\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for dropdown MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialMenu = function MaterialMenu(element) {\n\t this.element_ = element;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialMenu'] = MaterialMenu;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialMenu.prototype.Constant_ = {\n\t // Total duration of the menu animation.\n\t TRANSITION_DURATION_SECONDS: 0.3,\n\t // The fraction of the total duration we want to use for menu item animations.\n\t TRANSITION_DURATION_FRACTION: 0.8,\n\t // How long the menu stays open after choosing an option (so the user can see\n\t // the ripple).\n\t CLOSE_TIMEOUT: 150\n\t};\n\t/**\n\t * Keycodes, for code readability.\n\t *\n\t * @enum {number}\n\t * @private\n\t */\n\tMaterialMenu.prototype.Keycodes_ = {\n\t ENTER: 13,\n\t ESCAPE: 27,\n\t SPACE: 32,\n\t UP_ARROW: 38,\n\t DOWN_ARROW: 40\n\t};\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialMenu.prototype.CssClasses_ = {\n\t CONTAINER: 'mdl-menu__container',\n\t OUTLINE: 'mdl-menu__outline',\n\t ITEM: 'mdl-menu__item',\n\t ITEM_RIPPLE_CONTAINER: 'mdl-menu__item-ripple-container',\n\t RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n\t RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n\t RIPPLE: 'mdl-ripple',\n\t // Statuses\n\t IS_UPGRADED: 'is-upgraded',\n\t IS_VISIBLE: 'is-visible',\n\t IS_ANIMATING: 'is-animating',\n\t // Alignment options\n\t BOTTOM_LEFT: 'mdl-menu--bottom-left',\n\t // This is the default.\n\t BOTTOM_RIGHT: 'mdl-menu--bottom-right',\n\t TOP_LEFT: 'mdl-menu--top-left',\n\t TOP_RIGHT: 'mdl-menu--top-right',\n\t UNALIGNED: 'mdl-menu--unaligned'\n\t};\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialMenu.prototype.init = function () {\n\t if (this.element_) {\n\t // Create container for the menu.\n\t var container = document.createElement('div');\n\t container.classList.add(this.CssClasses_.CONTAINER);\n\t this.element_.parentElement.insertBefore(container, this.element_);\n\t this.element_.parentElement.removeChild(this.element_);\n\t container.appendChild(this.element_);\n\t this.container_ = container;\n\t // Create outline for the menu (shadow and background).\n\t var outline = document.createElement('div');\n\t outline.classList.add(this.CssClasses_.OUTLINE);\n\t this.outline_ = outline;\n\t container.insertBefore(outline, this.element_);\n\t // Find the \"for\" element and bind events to it.\n\t var forElId = this.element_.getAttribute('for') || this.element_.getAttribute('data-mdl-for');\n\t var forEl = null;\n\t if (forElId) {\n\t forEl = document.getElementById(forElId);\n\t if (forEl) {\n\t this.forElement_ = forEl;\n\t forEl.addEventListener('click', this.handleForClick_.bind(this));\n\t forEl.addEventListener('keydown', this.handleForKeyboardEvent_.bind(this));\n\t }\n\t }\n\t var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n\t this.boundItemKeydown_ = this.handleItemKeyboardEvent_.bind(this);\n\t this.boundItemClick_ = this.handleItemClick_.bind(this);\n\t for (var i = 0; i < items.length; i++) {\n\t // Add a listener to each menu item.\n\t items[i].addEventListener('click', this.boundItemClick_);\n\t // Add a tab index to each menu item.\n\t items[i].tabIndex = '-1';\n\t // Add a keyboard listener to each menu item.\n\t items[i].addEventListener('keydown', this.boundItemKeydown_);\n\t }\n\t // Add ripple classes to each item, if the user has enabled ripples.\n\t if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n\t this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n\t for (i = 0; i < items.length; i++) {\n\t var item = items[i];\n\t var rippleContainer = document.createElement('span');\n\t rippleContainer.classList.add(this.CssClasses_.ITEM_RIPPLE_CONTAINER);\n\t var ripple = document.createElement('span');\n\t ripple.classList.add(this.CssClasses_.RIPPLE);\n\t rippleContainer.appendChild(ripple);\n\t item.appendChild(rippleContainer);\n\t item.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n\t }\n\t }\n\t // Copy alignment classes to the container, so the outline can use them.\n\t if (this.element_.classList.contains(this.CssClasses_.BOTTOM_LEFT)) {\n\t this.outline_.classList.add(this.CssClasses_.BOTTOM_LEFT);\n\t }\n\t if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n\t this.outline_.classList.add(this.CssClasses_.BOTTOM_RIGHT);\n\t }\n\t if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n\t this.outline_.classList.add(this.CssClasses_.TOP_LEFT);\n\t }\n\t if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n\t this.outline_.classList.add(this.CssClasses_.TOP_RIGHT);\n\t }\n\t if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n\t this.outline_.classList.add(this.CssClasses_.UNALIGNED);\n\t }\n\t container.classList.add(this.CssClasses_.IS_UPGRADED);\n\t }\n\t};\n\t/**\n\t * Handles a click on the \"for\" element, by positioning the menu and then\n\t * toggling it.\n\t *\n\t * @param {Event} evt The event that fired.\n\t * @private\n\t */\n\tMaterialMenu.prototype.handleForClick_ = function (evt) {\n\t if (this.element_ && this.forElement_) {\n\t var rect = this.forElement_.getBoundingClientRect();\n\t var forRect = this.forElement_.parentElement.getBoundingClientRect();\n\t if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n\t } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n\t // Position below the \"for\" element, aligned to its right.\n\t this.container_.style.right = forRect.right - rect.right + 'px';\n\t this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n\t } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n\t // Position above the \"for\" element, aligned to its left.\n\t this.container_.style.left = this.forElement_.offsetLeft + 'px';\n\t this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n\t } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n\t // Position above the \"for\" element, aligned to its right.\n\t this.container_.style.right = forRect.right - rect.right + 'px';\n\t this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n\t } else {\n\t // Default: position below the \"for\" element, aligned to its left.\n\t this.container_.style.left = this.forElement_.offsetLeft + 'px';\n\t this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n\t }\n\t }\n\t this.toggle(evt);\n\t};\n\t/**\n\t * Handles a keyboard event on the \"for\" element.\n\t *\n\t * @param {Event} evt The event that fired.\n\t * @private\n\t */\n\tMaterialMenu.prototype.handleForKeyboardEvent_ = function (evt) {\n\t if (this.element_ && this.container_ && this.forElement_) {\n\t var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n\t if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n\t if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n\t evt.preventDefault();\n\t items[items.length - 1].focus();\n\t } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n\t evt.preventDefault();\n\t items[0].focus();\n\t }\n\t }\n\t }\n\t};\n\t/**\n\t * Handles a keyboard event on an item.\n\t *\n\t * @param {Event} evt The event that fired.\n\t * @private\n\t */\n\tMaterialMenu.prototype.handleItemKeyboardEvent_ = function (evt) {\n\t if (this.element_ && this.container_) {\n\t var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n\t if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n\t var currentIndex = Array.prototype.slice.call(items).indexOf(evt.target);\n\t if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n\t evt.preventDefault();\n\t if (currentIndex > 0) {\n\t items[currentIndex - 1].focus();\n\t } else {\n\t items[items.length - 1].focus();\n\t }\n\t } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n\t evt.preventDefault();\n\t if (items.length > currentIndex + 1) {\n\t items[currentIndex + 1].focus();\n\t } else {\n\t items[0].focus();\n\t }\n\t } else if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n\t evt.preventDefault();\n\t // Send mousedown and mouseup to trigger ripple.\n\t var e = new MouseEvent('mousedown');\n\t evt.target.dispatchEvent(e);\n\t e = new MouseEvent('mouseup');\n\t evt.target.dispatchEvent(e);\n\t // Send click.\n\t evt.target.click();\n\t } else if (evt.keyCode === this.Keycodes_.ESCAPE) {\n\t evt.preventDefault();\n\t this.hide();\n\t }\n\t }\n\t }\n\t};\n\t/**\n\t * Handles a click event on an item.\n\t *\n\t * @param {Event} evt The event that fired.\n\t * @private\n\t */\n\tMaterialMenu.prototype.handleItemClick_ = function (evt) {\n\t if (evt.target.hasAttribute('disabled')) {\n\t evt.stopPropagation();\n\t } else {\n\t // Wait some time before closing menu, so the user can see the ripple.\n\t this.closing_ = true;\n\t window.setTimeout(function (evt) {\n\t this.hide();\n\t this.closing_ = false;\n\t }.bind(this), this.Constant_.CLOSE_TIMEOUT);\n\t }\n\t};\n\t/**\n\t * Calculates the initial clip (for opening the menu) or final clip (for closing\n\t * it), and applies it. This allows us to animate from or to the correct point,\n\t * that is, the point it's aligned to in the \"for\" element.\n\t *\n\t * @param {number} height Height of the clip rectangle\n\t * @param {number} width Width of the clip rectangle\n\t * @private\n\t */\n\tMaterialMenu.prototype.applyClip_ = function (height, width) {\n\t if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n\t // Do not clip.\n\t this.element_.style.clip = '';\n\t } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n\t // Clip to the top right corner of the menu.\n\t this.element_.style.clip = 'rect(0 ' + width + 'px ' + '0 ' + width + 'px)';\n\t } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n\t // Clip to the bottom left corner of the menu.\n\t this.element_.style.clip = 'rect(' + height + 'px 0 ' + height + 'px 0)';\n\t } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n\t // Clip to the bottom right corner of the menu.\n\t this.element_.style.clip = 'rect(' + height + 'px ' + width + 'px ' + height + 'px ' + width + 'px)';\n\t } else {\n\t // Default: do not clip (same as clipping to the top left corner).\n\t this.element_.style.clip = '';\n\t }\n\t};\n\t/**\n\t * Cleanup function to remove animation listeners.\n\t *\n\t * @param {Event} evt\n\t * @private\n\t */\n\tMaterialMenu.prototype.removeAnimationEndListener_ = function (evt) {\n\t evt.target.classList.remove(MaterialMenu.prototype.CssClasses_.IS_ANIMATING);\n\t};\n\t/**\n\t * Adds an event listener to clean up after the animation ends.\n\t *\n\t * @private\n\t */\n\tMaterialMenu.prototype.addAnimationEndListener_ = function () {\n\t this.element_.addEventListener('transitionend', this.removeAnimationEndListener_);\n\t this.element_.addEventListener('webkitTransitionEnd', this.removeAnimationEndListener_);\n\t};\n\t/**\n\t * Displays the menu.\n\t *\n\t * @public\n\t */\n\tMaterialMenu.prototype.show = function (evt) {\n\t if (this.element_ && this.container_ && this.outline_) {\n\t // Measure the inner element.\n\t var height = this.element_.getBoundingClientRect().height;\n\t var width = this.element_.getBoundingClientRect().width;\n\t // Apply the inner element's size to the container and outline.\n\t this.container_.style.width = width + 'px';\n\t this.container_.style.height = height + 'px';\n\t this.outline_.style.width = width + 'px';\n\t this.outline_.style.height = height + 'px';\n\t var transitionDuration = this.Constant_.TRANSITION_DURATION_SECONDS * this.Constant_.TRANSITION_DURATION_FRACTION;\n\t // Calculate transition delays for individual menu items, so that they fade\n\t // in one at a time.\n\t var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n\t for (var i = 0; i < items.length; i++) {\n\t var itemDelay = null;\n\t if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT) || this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n\t itemDelay = (height - items[i].offsetTop - items[i].offsetHeight) / height * transitionDuration + 's';\n\t } else {\n\t itemDelay = items[i].offsetTop / height * transitionDuration + 's';\n\t }\n\t items[i].style.transitionDelay = itemDelay;\n\t }\n\t // Apply the initial clip to the text before we start animating.\n\t this.applyClip_(height, width);\n\t // Wait for the next frame, turn on animation, and apply the final clip.\n\t // Also make it visible. This triggers the transitions.\n\t window.requestAnimationFrame(function () {\n\t this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n\t this.element_.style.clip = 'rect(0 ' + width + 'px ' + height + 'px 0)';\n\t this.container_.classList.add(this.CssClasses_.IS_VISIBLE);\n\t }.bind(this));\n\t // Clean up after the animation is complete.\n\t this.addAnimationEndListener_();\n\t // Add a click listener to the document, to close the menu.\n\t var callback = function (e) {\n\t // Check to see if the document is processing the same event that\n\t // displayed the menu in the first place. If so, do nothing.\n\t // Also check to see if the menu is in the process of closing itself, and\n\t // do nothing in that case.\n\t // Also check if the clicked element is a menu item\n\t // if so, do nothing.\n\t if (e !== evt && !this.closing_ && e.target.parentNode !== this.element_) {\n\t document.removeEventListener('click', callback);\n\t this.hide();\n\t }\n\t }.bind(this);\n\t document.addEventListener('click', callback);\n\t }\n\t};\n\tMaterialMenu.prototype['show'] = MaterialMenu.prototype.show;\n\t/**\n\t * Hides the menu.\n\t *\n\t * @public\n\t */\n\tMaterialMenu.prototype.hide = function () {\n\t if (this.element_ && this.container_ && this.outline_) {\n\t var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n\t // Remove all transition delays; menu items fade out concurrently.\n\t for (var i = 0; i < items.length; i++) {\n\t items[i].style.removeProperty('transition-delay');\n\t }\n\t // Measure the inner element.\n\t var rect = this.element_.getBoundingClientRect();\n\t var height = rect.height;\n\t var width = rect.width;\n\t // Turn on animation, and apply the final clip. Also make invisible.\n\t // This triggers the transitions.\n\t this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n\t this.applyClip_(height, width);\n\t this.container_.classList.remove(this.CssClasses_.IS_VISIBLE);\n\t // Clean up after the animation is complete.\n\t this.addAnimationEndListener_();\n\t }\n\t};\n\tMaterialMenu.prototype['hide'] = MaterialMenu.prototype.hide;\n\t/**\n\t * Displays or hides the menu, depending on current state.\n\t *\n\t * @public\n\t */\n\tMaterialMenu.prototype.toggle = function (evt) {\n\t if (this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n\t this.hide();\n\t } else {\n\t this.show(evt);\n\t }\n\t};\n\tMaterialMenu.prototype['toggle'] = MaterialMenu.prototype.toggle;\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialMenu,\n\t classAsString: 'MaterialMenu',\n\t cssClass: 'mdl-js-menu',\n\t widget: true\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Progress MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialProgress = function MaterialProgress(element) {\n\t this.element_ = element;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialProgress'] = MaterialProgress;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialProgress.prototype.Constant_ = {};\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialProgress.prototype.CssClasses_ = { INDETERMINATE_CLASS: 'mdl-progress__indeterminate' };\n\t/**\n\t * Set the current progress of the progressbar.\n\t *\n\t * @param {number} p Percentage of the progress (0-100)\n\t * @public\n\t */\n\tMaterialProgress.prototype.setProgress = function (p) {\n\t if (this.element_.classList.contains(this.CssClasses_.INDETERMINATE_CLASS)) {\n\t return;\n\t }\n\t this.progressbar_.style.width = p + '%';\n\t};\n\tMaterialProgress.prototype['setProgress'] = MaterialProgress.prototype.setProgress;\n\t/**\n\t * Set the current progress of the buffer.\n\t *\n\t * @param {number} p Percentage of the buffer (0-100)\n\t * @public\n\t */\n\tMaterialProgress.prototype.setBuffer = function (p) {\n\t this.bufferbar_.style.width = p + '%';\n\t this.auxbar_.style.width = 100 - p + '%';\n\t};\n\tMaterialProgress.prototype['setBuffer'] = MaterialProgress.prototype.setBuffer;\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialProgress.prototype.init = function () {\n\t if (this.element_) {\n\t var el = document.createElement('div');\n\t el.className = 'progressbar bar bar1';\n\t this.element_.appendChild(el);\n\t this.progressbar_ = el;\n\t el = document.createElement('div');\n\t el.className = 'bufferbar bar bar2';\n\t this.element_.appendChild(el);\n\t this.bufferbar_ = el;\n\t el = document.createElement('div');\n\t el.className = 'auxbar bar bar3';\n\t this.element_.appendChild(el);\n\t this.auxbar_ = el;\n\t this.progressbar_.style.width = '0%';\n\t this.bufferbar_.style.width = '100%';\n\t this.auxbar_.style.width = '0%';\n\t this.element_.classList.add('is-upgraded');\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialProgress,\n\t classAsString: 'MaterialProgress',\n\t cssClass: 'mdl-js-progress',\n\t widget: true\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Radio MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialRadio = function MaterialRadio(element) {\n\t this.element_ = element;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialRadio'] = MaterialRadio;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialRadio.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialRadio.prototype.CssClasses_ = {\n\t IS_FOCUSED: 'is-focused',\n\t IS_DISABLED: 'is-disabled',\n\t IS_CHECKED: 'is-checked',\n\t IS_UPGRADED: 'is-upgraded',\n\t JS_RADIO: 'mdl-js-radio',\n\t RADIO_BTN: 'mdl-radio__button',\n\t RADIO_OUTER_CIRCLE: 'mdl-radio__outer-circle',\n\t RADIO_INNER_CIRCLE: 'mdl-radio__inner-circle',\n\t RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n\t RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n\t RIPPLE_CONTAINER: 'mdl-radio__ripple-container',\n\t RIPPLE_CENTER: 'mdl-ripple--center',\n\t RIPPLE: 'mdl-ripple'\n\t};\n\t/**\n\t * Handle change of state.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialRadio.prototype.onChange_ = function (event) {\n\t // Since other radio buttons don't get change events, we need to look for\n\t // them to update their classes.\n\t var radios = document.getElementsByClassName(this.CssClasses_.JS_RADIO);\n\t for (var i = 0; i < radios.length; i++) {\n\t var button = radios[i].querySelector('.' + this.CssClasses_.RADIO_BTN);\n\t // Different name == different group, so no point updating those.\n\t if (button.getAttribute('name') === this.btnElement_.getAttribute('name')) {\n\t radios[i]['MaterialRadio'].updateClasses_();\n\t }\n\t }\n\t};\n\t/**\n\t * Handle focus.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialRadio.prototype.onFocus_ = function (event) {\n\t this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n\t};\n\t/**\n\t * Handle lost focus.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialRadio.prototype.onBlur_ = function (event) {\n\t this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n\t};\n\t/**\n\t * Handle mouseup.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialRadio.prototype.onMouseup_ = function (event) {\n\t this.blur_();\n\t};\n\t/**\n\t * Update classes.\n\t *\n\t * @private\n\t */\n\tMaterialRadio.prototype.updateClasses_ = function () {\n\t this.checkDisabled();\n\t this.checkToggleState();\n\t};\n\t/**\n\t * Add blur.\n\t *\n\t * @private\n\t */\n\tMaterialRadio.prototype.blur_ = function () {\n\t // TODO: figure out why there's a focus event being fired after our blur,\n\t // so that we can avoid this hack.\n\t window.setTimeout(function () {\n\t this.btnElement_.blur();\n\t }.bind(this), this.Constant_.TINY_TIMEOUT);\n\t};\n\t// Public methods.\n\t/**\n\t * Check the components disabled state.\n\t *\n\t * @public\n\t */\n\tMaterialRadio.prototype.checkDisabled = function () {\n\t if (this.btnElement_.disabled) {\n\t this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n\t }\n\t};\n\tMaterialRadio.prototype['checkDisabled'] = MaterialRadio.prototype.checkDisabled;\n\t/**\n\t * Check the components toggled state.\n\t *\n\t * @public\n\t */\n\tMaterialRadio.prototype.checkToggleState = function () {\n\t if (this.btnElement_.checked) {\n\t this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n\t }\n\t};\n\tMaterialRadio.prototype['checkToggleState'] = MaterialRadio.prototype.checkToggleState;\n\t/**\n\t * Disable radio.\n\t *\n\t * @public\n\t */\n\tMaterialRadio.prototype.disable = function () {\n\t this.btnElement_.disabled = true;\n\t this.updateClasses_();\n\t};\n\tMaterialRadio.prototype['disable'] = MaterialRadio.prototype.disable;\n\t/**\n\t * Enable radio.\n\t *\n\t * @public\n\t */\n\tMaterialRadio.prototype.enable = function () {\n\t this.btnElement_.disabled = false;\n\t this.updateClasses_();\n\t};\n\tMaterialRadio.prototype['enable'] = MaterialRadio.prototype.enable;\n\t/**\n\t * Check radio.\n\t *\n\t * @public\n\t */\n\tMaterialRadio.prototype.check = function () {\n\t this.btnElement_.checked = true;\n\t this.onChange_(null);\n\t};\n\tMaterialRadio.prototype['check'] = MaterialRadio.prototype.check;\n\t/**\n\t * Uncheck radio.\n\t *\n\t * @public\n\t */\n\tMaterialRadio.prototype.uncheck = function () {\n\t this.btnElement_.checked = false;\n\t this.onChange_(null);\n\t};\n\tMaterialRadio.prototype['uncheck'] = MaterialRadio.prototype.uncheck;\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialRadio.prototype.init = function () {\n\t if (this.element_) {\n\t this.btnElement_ = this.element_.querySelector('.' + this.CssClasses_.RADIO_BTN);\n\t this.boundChangeHandler_ = this.onChange_.bind(this);\n\t this.boundFocusHandler_ = this.onChange_.bind(this);\n\t this.boundBlurHandler_ = this.onBlur_.bind(this);\n\t this.boundMouseUpHandler_ = this.onMouseup_.bind(this);\n\t var outerCircle = document.createElement('span');\n\t outerCircle.classList.add(this.CssClasses_.RADIO_OUTER_CIRCLE);\n\t var innerCircle = document.createElement('span');\n\t innerCircle.classList.add(this.CssClasses_.RADIO_INNER_CIRCLE);\n\t this.element_.appendChild(outerCircle);\n\t this.element_.appendChild(innerCircle);\n\t var rippleContainer;\n\t if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n\t this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n\t rippleContainer = document.createElement('span');\n\t rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n\t rippleContainer.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n\t rippleContainer.classList.add(this.CssClasses_.RIPPLE_CENTER);\n\t rippleContainer.addEventListener('mouseup', this.boundMouseUpHandler_);\n\t var ripple = document.createElement('span');\n\t ripple.classList.add(this.CssClasses_.RIPPLE);\n\t rippleContainer.appendChild(ripple);\n\t this.element_.appendChild(rippleContainer);\n\t }\n\t this.btnElement_.addEventListener('change', this.boundChangeHandler_);\n\t this.btnElement_.addEventListener('focus', this.boundFocusHandler_);\n\t this.btnElement_.addEventListener('blur', this.boundBlurHandler_);\n\t this.element_.addEventListener('mouseup', this.boundMouseUpHandler_);\n\t this.updateClasses_();\n\t this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialRadio,\n\t classAsString: 'MaterialRadio',\n\t cssClass: 'mdl-js-radio',\n\t widget: true\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Slider MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialSlider = function MaterialSlider(element) {\n\t this.element_ = element;\n\t // Browser feature detection.\n\t this.isIE_ = window.navigator.msPointerEnabled;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialSlider'] = MaterialSlider;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialSlider.prototype.Constant_ = {};\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialSlider.prototype.CssClasses_ = {\n\t IE_CONTAINER: 'mdl-slider__ie-container',\n\t SLIDER_CONTAINER: 'mdl-slider__container',\n\t BACKGROUND_FLEX: 'mdl-slider__background-flex',\n\t BACKGROUND_LOWER: 'mdl-slider__background-lower',\n\t BACKGROUND_UPPER: 'mdl-slider__background-upper',\n\t IS_LOWEST_VALUE: 'is-lowest-value',\n\t IS_UPGRADED: 'is-upgraded'\n\t};\n\t/**\n\t * Handle input on element.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialSlider.prototype.onInput_ = function (event) {\n\t this.updateValueStyles_();\n\t};\n\t/**\n\t * Handle change on element.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialSlider.prototype.onChange_ = function (event) {\n\t this.updateValueStyles_();\n\t};\n\t/**\n\t * Handle mouseup on element.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialSlider.prototype.onMouseUp_ = function (event) {\n\t event.target.blur();\n\t};\n\t/**\n\t * Handle mousedown on container element.\n\t * This handler is purpose is to not require the use to click\n\t * exactly on the 2px slider element, as FireFox seems to be very\n\t * strict about this.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t * @suppress {missingProperties}\n\t */\n\tMaterialSlider.prototype.onContainerMouseDown_ = function (event) {\n\t // If this click is not on the parent element (but rather some child)\n\t // ignore. It may still bubble up.\n\t if (event.target !== this.element_.parentElement) {\n\t return;\n\t }\n\t // Discard the original event and create a new event that\n\t // is on the slider element.\n\t event.preventDefault();\n\t var newEvent = new MouseEvent('mousedown', {\n\t target: event.target,\n\t buttons: event.buttons,\n\t clientX: event.clientX,\n\t clientY: this.element_.getBoundingClientRect().y\n\t });\n\t this.element_.dispatchEvent(newEvent);\n\t};\n\t/**\n\t * Handle updating of values.\n\t *\n\t * @private\n\t */\n\tMaterialSlider.prototype.updateValueStyles_ = function () {\n\t // Calculate and apply percentages to div structure behind slider.\n\t var fraction = (this.element_.value - this.element_.min) / (this.element_.max - this.element_.min);\n\t if (fraction === 0) {\n\t this.element_.classList.add(this.CssClasses_.IS_LOWEST_VALUE);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_LOWEST_VALUE);\n\t }\n\t if (!this.isIE_) {\n\t this.backgroundLower_.style.flex = fraction;\n\t this.backgroundLower_.style.webkitFlex = fraction;\n\t this.backgroundUpper_.style.flex = 1 - fraction;\n\t this.backgroundUpper_.style.webkitFlex = 1 - fraction;\n\t }\n\t};\n\t// Public methods.\n\t/**\n\t * Disable slider.\n\t *\n\t * @public\n\t */\n\tMaterialSlider.prototype.disable = function () {\n\t this.element_.disabled = true;\n\t};\n\tMaterialSlider.prototype['disable'] = MaterialSlider.prototype.disable;\n\t/**\n\t * Enable slider.\n\t *\n\t * @public\n\t */\n\tMaterialSlider.prototype.enable = function () {\n\t this.element_.disabled = false;\n\t};\n\tMaterialSlider.prototype['enable'] = MaterialSlider.prototype.enable;\n\t/**\n\t * Update slider value.\n\t *\n\t * @param {number} value The value to which to set the control (optional).\n\t * @public\n\t */\n\tMaterialSlider.prototype.change = function (value) {\n\t if (typeof value !== 'undefined') {\n\t this.element_.value = value;\n\t }\n\t this.updateValueStyles_();\n\t};\n\tMaterialSlider.prototype['change'] = MaterialSlider.prototype.change;\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialSlider.prototype.init = function () {\n\t if (this.element_) {\n\t if (this.isIE_) {\n\t // Since we need to specify a very large height in IE due to\n\t // implementation limitations, we add a parent here that trims it down to\n\t // a reasonable size.\n\t var containerIE = document.createElement('div');\n\t containerIE.classList.add(this.CssClasses_.IE_CONTAINER);\n\t this.element_.parentElement.insertBefore(containerIE, this.element_);\n\t this.element_.parentElement.removeChild(this.element_);\n\t containerIE.appendChild(this.element_);\n\t } else {\n\t // For non-IE browsers, we need a div structure that sits behind the\n\t // slider and allows us to style the left and right sides of it with\n\t // different colors.\n\t var container = document.createElement('div');\n\t container.classList.add(this.CssClasses_.SLIDER_CONTAINER);\n\t this.element_.parentElement.insertBefore(container, this.element_);\n\t this.element_.parentElement.removeChild(this.element_);\n\t container.appendChild(this.element_);\n\t var backgroundFlex = document.createElement('div');\n\t backgroundFlex.classList.add(this.CssClasses_.BACKGROUND_FLEX);\n\t container.appendChild(backgroundFlex);\n\t this.backgroundLower_ = document.createElement('div');\n\t this.backgroundLower_.classList.add(this.CssClasses_.BACKGROUND_LOWER);\n\t backgroundFlex.appendChild(this.backgroundLower_);\n\t this.backgroundUpper_ = document.createElement('div');\n\t this.backgroundUpper_.classList.add(this.CssClasses_.BACKGROUND_UPPER);\n\t backgroundFlex.appendChild(this.backgroundUpper_);\n\t }\n\t this.boundInputHandler = this.onInput_.bind(this);\n\t this.boundChangeHandler = this.onChange_.bind(this);\n\t this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n\t this.boundContainerMouseDownHandler = this.onContainerMouseDown_.bind(this);\n\t this.element_.addEventListener('input', this.boundInputHandler);\n\t this.element_.addEventListener('change', this.boundChangeHandler);\n\t this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n\t this.element_.parentElement.addEventListener('mousedown', this.boundContainerMouseDownHandler);\n\t this.updateValueStyles_();\n\t this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialSlider,\n\t classAsString: 'MaterialSlider',\n\t cssClass: 'mdl-js-slider',\n\t widget: true\n\t});\n\t/**\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Snackbar MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialSnackbar = function MaterialSnackbar(element) {\n\t this.element_ = element;\n\t this.textElement_ = this.element_.querySelector('.' + this.cssClasses_.MESSAGE);\n\t this.actionElement_ = this.element_.querySelector('.' + this.cssClasses_.ACTION);\n\t if (!this.textElement_) {\n\t throw new Error('There must be a message element for a snackbar.');\n\t }\n\t if (!this.actionElement_) {\n\t throw new Error('There must be an action element for a snackbar.');\n\t }\n\t this.active = false;\n\t this.actionHandler_ = undefined;\n\t this.message_ = undefined;\n\t this.actionText_ = undefined;\n\t this.queuedNotifications_ = [];\n\t this.setActionHidden_(true);\n\t};\n\twindow['MaterialSnackbar'] = MaterialSnackbar;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialSnackbar.prototype.Constant_ = {\n\t // The duration of the snackbar show/hide animation, in ms.\n\t ANIMATION_LENGTH: 250\n\t};\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialSnackbar.prototype.cssClasses_ = {\n\t SNACKBAR: 'mdl-snackbar',\n\t MESSAGE: 'mdl-snackbar__text',\n\t ACTION: 'mdl-snackbar__action',\n\t ACTIVE: 'mdl-snackbar--active'\n\t};\n\t/**\n\t * Display the snackbar.\n\t *\n\t * @private\n\t */\n\tMaterialSnackbar.prototype.displaySnackbar_ = function () {\n\t this.element_.setAttribute('aria-hidden', 'true');\n\t if (this.actionHandler_) {\n\t this.actionElement_.textContent = this.actionText_;\n\t this.actionElement_.addEventListener('click', this.actionHandler_);\n\t this.setActionHidden_(false);\n\t }\n\t this.textElement_.textContent = this.message_;\n\t this.element_.classList.add(this.cssClasses_.ACTIVE);\n\t this.element_.setAttribute('aria-hidden', 'false');\n\t setTimeout(this.cleanup_.bind(this), this.timeout_);\n\t};\n\t/**\n\t * Show the snackbar.\n\t *\n\t * @param {Object} data The data for the notification.\n\t * @public\n\t */\n\tMaterialSnackbar.prototype.showSnackbar = function (data) {\n\t if (data === undefined) {\n\t throw new Error('Please provide a data object with at least a message to display.');\n\t }\n\t if (data['message'] === undefined) {\n\t throw new Error('Please provide a message to be displayed.');\n\t }\n\t if (data['actionHandler'] && !data['actionText']) {\n\t throw new Error('Please provide action text with the handler.');\n\t }\n\t if (this.active) {\n\t this.queuedNotifications_.push(data);\n\t } else {\n\t this.active = true;\n\t this.message_ = data['message'];\n\t if (data['timeout']) {\n\t this.timeout_ = data['timeout'];\n\t } else {\n\t this.timeout_ = 2750;\n\t }\n\t if (data['actionHandler']) {\n\t this.actionHandler_ = data['actionHandler'];\n\t }\n\t if (data['actionText']) {\n\t this.actionText_ = data['actionText'];\n\t }\n\t this.displaySnackbar_();\n\t }\n\t};\n\tMaterialSnackbar.prototype['showSnackbar'] = MaterialSnackbar.prototype.showSnackbar;\n\t/**\n\t * Check if the queue has items within it.\n\t * If it does, display the next entry.\n\t *\n\t * @private\n\t */\n\tMaterialSnackbar.prototype.checkQueue_ = function () {\n\t if (this.queuedNotifications_.length > 0) {\n\t this.showSnackbar(this.queuedNotifications_.shift());\n\t }\n\t};\n\t/**\n\t * Cleanup the snackbar event listeners and accessiblity attributes.\n\t *\n\t * @private\n\t */\n\tMaterialSnackbar.prototype.cleanup_ = function () {\n\t this.element_.classList.remove(this.cssClasses_.ACTIVE);\n\t setTimeout(function () {\n\t this.element_.setAttribute('aria-hidden', 'true');\n\t this.textElement_.textContent = '';\n\t if (!Boolean(this.actionElement_.getAttribute('aria-hidden'))) {\n\t this.setActionHidden_(true);\n\t this.actionElement_.textContent = '';\n\t this.actionElement_.removeEventListener('click', this.actionHandler_);\n\t }\n\t this.actionHandler_ = undefined;\n\t this.message_ = undefined;\n\t this.actionText_ = undefined;\n\t this.active = false;\n\t this.checkQueue_();\n\t }.bind(this), this.Constant_.ANIMATION_LENGTH);\n\t};\n\t/**\n\t * Set the action handler hidden state.\n\t *\n\t * @param {boolean} value\n\t * @private\n\t */\n\tMaterialSnackbar.prototype.setActionHidden_ = function (value) {\n\t if (value) {\n\t this.actionElement_.setAttribute('aria-hidden', 'true');\n\t } else {\n\t this.actionElement_.removeAttribute('aria-hidden');\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialSnackbar,\n\t classAsString: 'MaterialSnackbar',\n\t cssClass: 'mdl-js-snackbar',\n\t widget: true\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Spinner MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t * @constructor\n\t */\n\tvar MaterialSpinner = function MaterialSpinner(element) {\n\t this.element_ = element;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialSpinner'] = MaterialSpinner;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialSpinner.prototype.Constant_ = { MDL_SPINNER_LAYER_COUNT: 4 };\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialSpinner.prototype.CssClasses_ = {\n\t MDL_SPINNER_LAYER: 'mdl-spinner__layer',\n\t MDL_SPINNER_CIRCLE_CLIPPER: 'mdl-spinner__circle-clipper',\n\t MDL_SPINNER_CIRCLE: 'mdl-spinner__circle',\n\t MDL_SPINNER_GAP_PATCH: 'mdl-spinner__gap-patch',\n\t MDL_SPINNER_LEFT: 'mdl-spinner__left',\n\t MDL_SPINNER_RIGHT: 'mdl-spinner__right'\n\t};\n\t/**\n\t * Auxiliary method to create a spinner layer.\n\t *\n\t * @param {number} index Index of the layer to be created.\n\t * @public\n\t */\n\tMaterialSpinner.prototype.createLayer = function (index) {\n\t var layer = document.createElement('div');\n\t layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER);\n\t layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER + '-' + index);\n\t var leftClipper = document.createElement('div');\n\t leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n\t leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);\n\t var gapPatch = document.createElement('div');\n\t gapPatch.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);\n\t var rightClipper = document.createElement('div');\n\t rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n\t rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);\n\t var circleOwners = [\n\t leftClipper,\n\t gapPatch,\n\t rightClipper\n\t ];\n\t for (var i = 0; i < circleOwners.length; i++) {\n\t var circle = document.createElement('div');\n\t circle.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE);\n\t circleOwners[i].appendChild(circle);\n\t }\n\t layer.appendChild(leftClipper);\n\t layer.appendChild(gapPatch);\n\t layer.appendChild(rightClipper);\n\t this.element_.appendChild(layer);\n\t};\n\tMaterialSpinner.prototype['createLayer'] = MaterialSpinner.prototype.createLayer;\n\t/**\n\t * Stops the spinner animation.\n\t * Public method for users who need to stop the spinner for any reason.\n\t *\n\t * @public\n\t */\n\tMaterialSpinner.prototype.stop = function () {\n\t this.element_.classList.remove('is-active');\n\t};\n\tMaterialSpinner.prototype['stop'] = MaterialSpinner.prototype.stop;\n\t/**\n\t * Starts the spinner animation.\n\t * Public method for users who need to manually start the spinner for any reason\n\t * (instead of just adding the 'is-active' class to their markup).\n\t *\n\t * @public\n\t */\n\tMaterialSpinner.prototype.start = function () {\n\t this.element_.classList.add('is-active');\n\t};\n\tMaterialSpinner.prototype['start'] = MaterialSpinner.prototype.start;\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialSpinner.prototype.init = function () {\n\t if (this.element_) {\n\t for (var i = 1; i <= this.Constant_.MDL_SPINNER_LAYER_COUNT; i++) {\n\t this.createLayer(i);\n\t }\n\t this.element_.classList.add('is-upgraded');\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialSpinner,\n\t classAsString: 'MaterialSpinner',\n\t cssClass: 'mdl-js-spinner',\n\t widget: true\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Checkbox MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialSwitch = function MaterialSwitch(element) {\n\t this.element_ = element;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialSwitch'] = MaterialSwitch;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialSwitch.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialSwitch.prototype.CssClasses_ = {\n\t INPUT: 'mdl-switch__input',\n\t TRACK: 'mdl-switch__track',\n\t THUMB: 'mdl-switch__thumb',\n\t FOCUS_HELPER: 'mdl-switch__focus-helper',\n\t RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n\t RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n\t RIPPLE_CONTAINER: 'mdl-switch__ripple-container',\n\t RIPPLE_CENTER: 'mdl-ripple--center',\n\t RIPPLE: 'mdl-ripple',\n\t IS_FOCUSED: 'is-focused',\n\t IS_DISABLED: 'is-disabled',\n\t IS_CHECKED: 'is-checked'\n\t};\n\t/**\n\t * Handle change of state.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialSwitch.prototype.onChange_ = function (event) {\n\t this.updateClasses_();\n\t};\n\t/**\n\t * Handle focus of element.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialSwitch.prototype.onFocus_ = function (event) {\n\t this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n\t};\n\t/**\n\t * Handle lost focus of element.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialSwitch.prototype.onBlur_ = function (event) {\n\t this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n\t};\n\t/**\n\t * Handle mouseup.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialSwitch.prototype.onMouseUp_ = function (event) {\n\t this.blur_();\n\t};\n\t/**\n\t * Handle class updates.\n\t *\n\t * @private\n\t */\n\tMaterialSwitch.prototype.updateClasses_ = function () {\n\t this.checkDisabled();\n\t this.checkToggleState();\n\t};\n\t/**\n\t * Add blur.\n\t *\n\t * @private\n\t */\n\tMaterialSwitch.prototype.blur_ = function () {\n\t // TODO: figure out why there's a focus event being fired after our blur,\n\t // so that we can avoid this hack.\n\t window.setTimeout(function () {\n\t this.inputElement_.blur();\n\t }.bind(this), this.Constant_.TINY_TIMEOUT);\n\t};\n\t// Public methods.\n\t/**\n\t * Check the components disabled state.\n\t *\n\t * @public\n\t */\n\tMaterialSwitch.prototype.checkDisabled = function () {\n\t if (this.inputElement_.disabled) {\n\t this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n\t }\n\t};\n\tMaterialSwitch.prototype['checkDisabled'] = MaterialSwitch.prototype.checkDisabled;\n\t/**\n\t * Check the components toggled state.\n\t *\n\t * @public\n\t */\n\tMaterialSwitch.prototype.checkToggleState = function () {\n\t if (this.inputElement_.checked) {\n\t this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n\t }\n\t};\n\tMaterialSwitch.prototype['checkToggleState'] = MaterialSwitch.prototype.checkToggleState;\n\t/**\n\t * Disable switch.\n\t *\n\t * @public\n\t */\n\tMaterialSwitch.prototype.disable = function () {\n\t this.inputElement_.disabled = true;\n\t this.updateClasses_();\n\t};\n\tMaterialSwitch.prototype['disable'] = MaterialSwitch.prototype.disable;\n\t/**\n\t * Enable switch.\n\t *\n\t * @public\n\t */\n\tMaterialSwitch.prototype.enable = function () {\n\t this.inputElement_.disabled = false;\n\t this.updateClasses_();\n\t};\n\tMaterialSwitch.prototype['enable'] = MaterialSwitch.prototype.enable;\n\t/**\n\t * Activate switch.\n\t *\n\t * @public\n\t */\n\tMaterialSwitch.prototype.on = function () {\n\t this.inputElement_.checked = true;\n\t this.updateClasses_();\n\t};\n\tMaterialSwitch.prototype['on'] = MaterialSwitch.prototype.on;\n\t/**\n\t * Deactivate switch.\n\t *\n\t * @public\n\t */\n\tMaterialSwitch.prototype.off = function () {\n\t this.inputElement_.checked = false;\n\t this.updateClasses_();\n\t};\n\tMaterialSwitch.prototype['off'] = MaterialSwitch.prototype.off;\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialSwitch.prototype.init = function () {\n\t if (this.element_) {\n\t this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n\t var track = document.createElement('div');\n\t track.classList.add(this.CssClasses_.TRACK);\n\t var thumb = document.createElement('div');\n\t thumb.classList.add(this.CssClasses_.THUMB);\n\t var focusHelper = document.createElement('span');\n\t focusHelper.classList.add(this.CssClasses_.FOCUS_HELPER);\n\t thumb.appendChild(focusHelper);\n\t this.element_.appendChild(track);\n\t this.element_.appendChild(thumb);\n\t this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n\t if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n\t this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n\t this.rippleContainerElement_ = document.createElement('span');\n\t this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n\t this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n\t this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n\t this.rippleContainerElement_.addEventListener('mouseup', this.boundMouseUpHandler);\n\t var ripple = document.createElement('span');\n\t ripple.classList.add(this.CssClasses_.RIPPLE);\n\t this.rippleContainerElement_.appendChild(ripple);\n\t this.element_.appendChild(this.rippleContainerElement_);\n\t }\n\t this.boundChangeHandler = this.onChange_.bind(this);\n\t this.boundFocusHandler = this.onFocus_.bind(this);\n\t this.boundBlurHandler = this.onBlur_.bind(this);\n\t this.inputElement_.addEventListener('change', this.boundChangeHandler);\n\t this.inputElement_.addEventListener('focus', this.boundFocusHandler);\n\t this.inputElement_.addEventListener('blur', this.boundBlurHandler);\n\t this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n\t this.updateClasses_();\n\t this.element_.classList.add('is-upgraded');\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialSwitch,\n\t classAsString: 'MaterialSwitch',\n\t cssClass: 'mdl-js-switch',\n\t widget: true\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Tabs MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {Element} element The element that will be upgraded.\n\t */\n\tvar MaterialTabs = function MaterialTabs(element) {\n\t // Stores the HTML element.\n\t this.element_ = element;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialTabs'] = MaterialTabs;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialTabs.prototype.Constant_ = {};\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialTabs.prototype.CssClasses_ = {\n\t TAB_CLASS: 'mdl-tabs__tab',\n\t PANEL_CLASS: 'mdl-tabs__panel',\n\t ACTIVE_CLASS: 'is-active',\n\t UPGRADED_CLASS: 'is-upgraded',\n\t MDL_JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n\t MDL_RIPPLE_CONTAINER: 'mdl-tabs__ripple-container',\n\t MDL_RIPPLE: 'mdl-ripple',\n\t MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events'\n\t};\n\t/**\n\t * Handle clicks to a tabs component\n\t *\n\t * @private\n\t */\n\tMaterialTabs.prototype.initTabs_ = function () {\n\t if (this.element_.classList.contains(this.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n\t this.element_.classList.add(this.CssClasses_.MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS);\n\t }\n\t // Select element tabs, document panels\n\t this.tabs_ = this.element_.querySelectorAll('.' + this.CssClasses_.TAB_CLASS);\n\t this.panels_ = this.element_.querySelectorAll('.' + this.CssClasses_.PANEL_CLASS);\n\t // Create new tabs for each tab element\n\t for (var i = 0; i < this.tabs_.length; i++) {\n\t new MaterialTab(this.tabs_[i], this);\n\t }\n\t this.element_.classList.add(this.CssClasses_.UPGRADED_CLASS);\n\t};\n\t/**\n\t * Reset tab state, dropping active classes\n\t *\n\t * @private\n\t */\n\tMaterialTabs.prototype.resetTabState_ = function () {\n\t for (var k = 0; k < this.tabs_.length; k++) {\n\t this.tabs_[k].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n\t }\n\t};\n\t/**\n\t * Reset panel state, droping active classes\n\t *\n\t * @private\n\t */\n\tMaterialTabs.prototype.resetPanelState_ = function () {\n\t for (var j = 0; j < this.panels_.length; j++) {\n\t this.panels_[j].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n\t }\n\t};\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialTabs.prototype.init = function () {\n\t if (this.element_) {\n\t this.initTabs_();\n\t }\n\t};\n\t/**\n\t * Constructor for an individual tab.\n\t *\n\t * @constructor\n\t * @param {Element} tab The HTML element for the tab.\n\t * @param {MaterialTabs} ctx The MaterialTabs object that owns the tab.\n\t */\n\tfunction MaterialTab(tab, ctx) {\n\t if (tab) {\n\t if (ctx.element_.classList.contains(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n\t var rippleContainer = document.createElement('span');\n\t rippleContainer.classList.add(ctx.CssClasses_.MDL_RIPPLE_CONTAINER);\n\t rippleContainer.classList.add(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT);\n\t var ripple = document.createElement('span');\n\t ripple.classList.add(ctx.CssClasses_.MDL_RIPPLE);\n\t rippleContainer.appendChild(ripple);\n\t tab.appendChild(rippleContainer);\n\t }\n\t tab.addEventListener('click', function (e) {\n\t e.preventDefault();\n\t ctx.resetTabState_();\n\t tab.classList.add(ctx.CssClasses_.ACTIVE_CLASS);\n\t });\n\t }\n\t}\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialTabs,\n\t classAsString: 'MaterialTabs',\n\t cssClass: 'mdl-js-tabs'\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Textfield MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialTextfield = function MaterialTextfield(element) {\n\t this.element_ = element;\n\t this.maxRows = this.Constant_.NO_MAX_ROWS;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialTextfield'] = MaterialTextfield;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialTextfield.prototype.Constant_ = {\n\t NO_MAX_ROWS: -1,\n\t MAX_ROWS_ATTRIBUTE: 'maxrows'\n\t};\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialTextfield.prototype.CssClasses_ = {\n\t LABEL: 'mdl-textfield__label',\n\t INPUT: 'mdl-textfield__input',\n\t IS_DIRTY: 'is-dirty',\n\t IS_FOCUSED: 'is-focused',\n\t IS_DISABLED: 'is-disabled',\n\t IS_INVALID: 'is-invalid',\n\t IS_UPGRADED: 'is-upgraded',\n\t HAS_PLACEHOLDER: 'has-placeholder'\n\t};\n\t/**\n\t * Handle input being entered.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialTextfield.prototype.onKeyDown_ = function (event) {\n\t var currentRowCount = event.target.value.split('\\n').length;\n\t if (event.keyCode === 13) {\n\t if (currentRowCount >= this.maxRows) {\n\t event.preventDefault();\n\t }\n\t }\n\t};\n\t/**\n\t * Handle focus.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialTextfield.prototype.onFocus_ = function (event) {\n\t this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n\t};\n\t/**\n\t * Handle lost focus.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialTextfield.prototype.onBlur_ = function (event) {\n\t this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n\t};\n\t/**\n\t * Handle reset event from out side.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialTextfield.prototype.onReset_ = function (event) {\n\t this.updateClasses_();\n\t};\n\t/**\n\t * Handle class updates.\n\t *\n\t * @private\n\t */\n\tMaterialTextfield.prototype.updateClasses_ = function () {\n\t this.checkDisabled();\n\t this.checkValidity();\n\t this.checkDirty();\n\t this.checkFocus();\n\t};\n\t// Public methods.\n\t/**\n\t * Check the disabled state and update field accordingly.\n\t *\n\t * @public\n\t */\n\tMaterialTextfield.prototype.checkDisabled = function () {\n\t if (this.input_.disabled) {\n\t this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n\t }\n\t};\n\tMaterialTextfield.prototype['checkDisabled'] = MaterialTextfield.prototype.checkDisabled;\n\t/**\n\t * Check the focus state and update field accordingly.\n\t *\n\t * @public\n\t */\n\tMaterialTextfield.prototype.checkFocus = function () {\n\t if (Boolean(this.element_.querySelector(':focus'))) {\n\t this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n\t }\n\t};\n\tMaterialTextfield.prototype['checkFocus'] = MaterialTextfield.prototype.checkFocus;\n\t/**\n\t * Check the validity state and update field accordingly.\n\t *\n\t * @public\n\t */\n\tMaterialTextfield.prototype.checkValidity = function () {\n\t if (this.input_.validity) {\n\t if (this.input_.validity.valid) {\n\t this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n\t } else {\n\t this.element_.classList.add(this.CssClasses_.IS_INVALID);\n\t }\n\t }\n\t};\n\tMaterialTextfield.prototype['checkValidity'] = MaterialTextfield.prototype.checkValidity;\n\t/**\n\t * Check the dirty state and update field accordingly.\n\t *\n\t * @public\n\t */\n\tMaterialTextfield.prototype.checkDirty = function () {\n\t if (this.input_.value && this.input_.value.length > 0) {\n\t this.element_.classList.add(this.CssClasses_.IS_DIRTY);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n\t }\n\t};\n\tMaterialTextfield.prototype['checkDirty'] = MaterialTextfield.prototype.checkDirty;\n\t/**\n\t * Disable text field.\n\t *\n\t * @public\n\t */\n\tMaterialTextfield.prototype.disable = function () {\n\t this.input_.disabled = true;\n\t this.updateClasses_();\n\t};\n\tMaterialTextfield.prototype['disable'] = MaterialTextfield.prototype.disable;\n\t/**\n\t * Enable text field.\n\t *\n\t * @public\n\t */\n\tMaterialTextfield.prototype.enable = function () {\n\t this.input_.disabled = false;\n\t this.updateClasses_();\n\t};\n\tMaterialTextfield.prototype['enable'] = MaterialTextfield.prototype.enable;\n\t/**\n\t * Update text field value.\n\t *\n\t * @param {string} value The value to which to set the control (optional).\n\t * @public\n\t */\n\tMaterialTextfield.prototype.change = function (value) {\n\t this.input_.value = value || '';\n\t this.updateClasses_();\n\t};\n\tMaterialTextfield.prototype['change'] = MaterialTextfield.prototype.change;\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialTextfield.prototype.init = function () {\n\t if (this.element_) {\n\t this.label_ = this.element_.querySelector('.' + this.CssClasses_.LABEL);\n\t this.input_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n\t if (this.input_) {\n\t if (this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE)) {\n\t this.maxRows = parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE), 10);\n\t if (isNaN(this.maxRows)) {\n\t this.maxRows = this.Constant_.NO_MAX_ROWS;\n\t }\n\t }\n\t if (this.input_.hasAttribute('placeholder')) {\n\t this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER);\n\t }\n\t this.boundUpdateClassesHandler = this.updateClasses_.bind(this);\n\t this.boundFocusHandler = this.onFocus_.bind(this);\n\t this.boundBlurHandler = this.onBlur_.bind(this);\n\t this.boundResetHandler = this.onReset_.bind(this);\n\t this.input_.addEventListener('input', this.boundUpdateClassesHandler);\n\t this.input_.addEventListener('focus', this.boundFocusHandler);\n\t this.input_.addEventListener('blur', this.boundBlurHandler);\n\t this.input_.addEventListener('reset', this.boundResetHandler);\n\t if (this.maxRows !== this.Constant_.NO_MAX_ROWS) {\n\t // TODO: This should handle pasting multi line text.\n\t // Currently doesn't.\n\t this.boundKeyDownHandler = this.onKeyDown_.bind(this);\n\t this.input_.addEventListener('keydown', this.boundKeyDownHandler);\n\t }\n\t var invalid = this.element_.classList.contains(this.CssClasses_.IS_INVALID);\n\t this.updateClasses_();\n\t this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n\t if (invalid) {\n\t this.element_.classList.add(this.CssClasses_.IS_INVALID);\n\t }\n\t if (this.input_.hasAttribute('autofocus')) {\n\t this.element_.focus();\n\t this.checkFocus();\n\t }\n\t }\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialTextfield,\n\t classAsString: 'MaterialTextfield',\n\t cssClass: 'mdl-js-textfield',\n\t widget: true\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Tooltip MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialTooltip = function MaterialTooltip(element) {\n\t this.element_ = element;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialTooltip'] = MaterialTooltip;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialTooltip.prototype.Constant_ = {};\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialTooltip.prototype.CssClasses_ = {\n\t IS_ACTIVE: 'is-active',\n\t BOTTOM: 'mdl-tooltip--bottom',\n\t LEFT: 'mdl-tooltip--left',\n\t RIGHT: 'mdl-tooltip--right',\n\t TOP: 'mdl-tooltip--top'\n\t};\n\t/**\n\t * Handle mouseenter for tooltip.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialTooltip.prototype.handleMouseEnter_ = function (event) {\n\t var props = event.target.getBoundingClientRect();\n\t var left = props.left + props.width / 2;\n\t var top = props.top + props.height / 2;\n\t var marginLeft = -1 * (this.element_.offsetWidth / 2);\n\t var marginTop = -1 * (this.element_.offsetHeight / 2);\n\t if (this.element_.classList.contains(this.CssClasses_.LEFT) || this.element_.classList.contains(this.CssClasses_.RIGHT)) {\n\t left = props.width / 2;\n\t if (top + marginTop < 0) {\n\t this.element_.style.top = '0';\n\t this.element_.style.marginTop = '0';\n\t } else {\n\t this.element_.style.top = top + 'px';\n\t this.element_.style.marginTop = marginTop + 'px';\n\t }\n\t } else {\n\t if (left + marginLeft < 0) {\n\t this.element_.style.left = '0';\n\t this.element_.style.marginLeft = '0';\n\t } else {\n\t this.element_.style.left = left + 'px';\n\t this.element_.style.marginLeft = marginLeft + 'px';\n\t }\n\t }\n\t if (this.element_.classList.contains(this.CssClasses_.TOP)) {\n\t this.element_.style.top = props.top - this.element_.offsetHeight - 10 + 'px';\n\t } else if (this.element_.classList.contains(this.CssClasses_.RIGHT)) {\n\t this.element_.style.left = props.left + props.width + 10 + 'px';\n\t } else if (this.element_.classList.contains(this.CssClasses_.LEFT)) {\n\t this.element_.style.left = props.left - this.element_.offsetWidth - 10 + 'px';\n\t } else {\n\t this.element_.style.top = props.top + props.height + 10 + 'px';\n\t }\n\t this.element_.classList.add(this.CssClasses_.IS_ACTIVE);\n\t};\n\t/**\n\t * Hide tooltip on mouseleave or scroll\n\t *\n\t * @private\n\t */\n\tMaterialTooltip.prototype.hideTooltip_ = function () {\n\t this.element_.classList.remove(this.CssClasses_.IS_ACTIVE);\n\t};\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialTooltip.prototype.init = function () {\n\t if (this.element_) {\n\t var forElId = this.element_.getAttribute('for') || this.element_.getAttribute('data-mdl-for');\n\t if (forElId) {\n\t this.forElement_ = document.getElementById(forElId);\n\t }\n\t if (this.forElement_) {\n\t // It's left here because it prevents accidental text selection on Android\n\t if (!this.forElement_.hasAttribute('tabindex')) {\n\t this.forElement_.setAttribute('tabindex', '0');\n\t }\n\t this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this);\n\t this.boundMouseLeaveAndScrollHandler = this.hideTooltip_.bind(this);\n\t this.forElement_.addEventListener('mouseenter', this.boundMouseEnterHandler, false);\n\t this.forElement_.addEventListener('touchend', this.boundMouseEnterHandler, false);\n\t this.forElement_.addEventListener('mouseleave', this.boundMouseLeaveAndScrollHandler, false);\n\t window.addEventListener('scroll', this.boundMouseLeaveAndScrollHandler, true);\n\t window.addEventListener('touchstart', this.boundMouseLeaveAndScrollHandler);\n\t }\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialTooltip,\n\t classAsString: 'MaterialTooltip',\n\t cssClass: 'mdl-tooltip'\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Layout MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialLayout = function MaterialLayout(element) {\n\t this.element_ = element;\n\t this.innerContainer_ = element.querySelector('.' + this.CssClasses_.INNER_CONTAINER);\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialLayout'] = MaterialLayout;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialLayout.prototype.Constant_ = {\n\t MAX_WIDTH: '(max-width: 1024px)',\n\t TAB_SCROLL_PIXELS: 100,\n\t RESIZE_TIMEOUT: 100,\n\t MENU_ICON: '',\n\t CHEVRON_LEFT: 'chevron_left',\n\t CHEVRON_RIGHT: 'chevron_right'\n\t};\n\t/**\n\t * Keycodes, for code readability.\n\t *\n\t * @enum {number}\n\t * @private\n\t */\n\tMaterialLayout.prototype.Keycodes_ = {\n\t ENTER: 13,\n\t ESCAPE: 27,\n\t SPACE: 32\n\t};\n\t/**\n\t * Modes.\n\t *\n\t * @enum {number}\n\t * @private\n\t */\n\tMaterialLayout.prototype.Mode_ = {\n\t STANDARD: 0,\n\t SEAMED: 1,\n\t WATERFALL: 2,\n\t SCROLL: 3\n\t};\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialLayout.prototype.CssClasses_ = {\n\t INNER_CONTAINER: 'mdl-layout__inner-container',\n\t HEADER: 'mdl-layout__header',\n\t DRAWER: 'mdl-layout__drawer',\n\t CONTENT: 'mdl-layout__content',\n\t DRAWER_BTN: 'mdl-layout__drawer-button',\n\t ICON: 'material-icons',\n\t JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n\t RIPPLE_CONTAINER: 'mdl-layout__tab-ripple-container',\n\t RIPPLE: 'mdl-ripple',\n\t RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n\t HEADER_SEAMED: 'mdl-layout__header--seamed',\n\t HEADER_WATERFALL: 'mdl-layout__header--waterfall',\n\t HEADER_SCROLL: 'mdl-layout__header--scroll',\n\t FIXED_HEADER: 'mdl-layout--fixed-header',\n\t OBFUSCATOR: 'mdl-layout__obfuscator',\n\t TAB_BAR: 'mdl-layout__tab-bar',\n\t TAB_CONTAINER: 'mdl-layout__tab-bar-container',\n\t TAB: 'mdl-layout__tab',\n\t TAB_BAR_BUTTON: 'mdl-layout__tab-bar-button',\n\t TAB_BAR_LEFT_BUTTON: 'mdl-layout__tab-bar-left-button',\n\t TAB_BAR_RIGHT_BUTTON: 'mdl-layout__tab-bar-right-button',\n\t PANEL: 'mdl-layout__tab-panel',\n\t HAS_DRAWER: 'has-drawer',\n\t HAS_TABS: 'has-tabs',\n\t HAS_SCROLLING_HEADER: 'has-scrolling-header',\n\t CASTING_SHADOW: 'is-casting-shadow',\n\t IS_COMPACT: 'is-compact',\n\t IS_SMALL_SCREEN: 'is-small-screen',\n\t IS_DRAWER_OPEN: 'is-visible',\n\t IS_ACTIVE: 'is-active',\n\t IS_UPGRADED: 'is-upgraded',\n\t IS_ANIMATING: 'is-animating',\n\t ON_LARGE_SCREEN: 'mdl-layout--large-screen-only',\n\t ON_SMALL_SCREEN: 'mdl-layout--small-screen-only'\n\t};\n\t/**\n\t * Handles scrolling on the content.\n\t *\n\t * @private\n\t */\n\tMaterialLayout.prototype.contentScrollHandler_ = function () {\n\t if (this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)) {\n\t return;\n\t }\n\t var headerVisible = !this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN) || this.element_.classList.contains(this.CssClasses_.FIXED_HEADER);\n\t if (this.content_.scrollTop > 0 && !this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n\t this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n\t this.header_.classList.add(this.CssClasses_.IS_COMPACT);\n\t if (headerVisible) {\n\t this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n\t }\n\t } else if (this.content_.scrollTop <= 0 && this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n\t this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n\t this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n\t if (headerVisible) {\n\t this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n\t }\n\t }\n\t};\n\t/**\n\t * Handles a keyboard event on the drawer.\n\t *\n\t * @param {Event} evt The event that fired.\n\t * @private\n\t */\n\tMaterialLayout.prototype.keyboardEventHandler_ = function (evt) {\n\t // Only react when the drawer is open.\n\t if (evt.keyCode === this.Keycodes_.ESCAPE && this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {\n\t this.toggleDrawer();\n\t }\n\t};\n\t/**\n\t * Handles changes in screen size.\n\t *\n\t * @private\n\t */\n\tMaterialLayout.prototype.screenSizeHandler_ = function () {\n\t if (this.screenSizeMediaQuery_.matches) {\n\t this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN);\n\t } else {\n\t this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN);\n\t // Collapse drawer (if any) when moving to a large screen size.\n\t if (this.drawer_) {\n\t this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n\t this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n\t }\n\t }\n\t};\n\t/**\n\t * Handles events of drawer button.\n\t *\n\t * @param {Event} evt The event that fired.\n\t * @private\n\t */\n\tMaterialLayout.prototype.drawerToggleHandler_ = function (evt) {\n\t if (evt && evt.type === 'keydown') {\n\t if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n\t // prevent scrolling in drawer nav\n\t evt.preventDefault();\n\t } else {\n\t // prevent other keys\n\t return;\n\t }\n\t }\n\t this.toggleDrawer();\n\t};\n\t/**\n\t * Handles (un)setting the `is-animating` class\n\t *\n\t * @private\n\t */\n\tMaterialLayout.prototype.headerTransitionEndHandler_ = function () {\n\t this.header_.classList.remove(this.CssClasses_.IS_ANIMATING);\n\t};\n\t/**\n\t * Handles expanding the header on click\n\t *\n\t * @private\n\t */\n\tMaterialLayout.prototype.headerClickHandler_ = function () {\n\t if (this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n\t this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n\t this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n\t }\n\t};\n\t/**\n\t * Reset tab state, dropping active classes\n\t *\n\t * @private\n\t */\n\tMaterialLayout.prototype.resetTabState_ = function (tabBar) {\n\t for (var k = 0; k < tabBar.length; k++) {\n\t tabBar[k].classList.remove(this.CssClasses_.IS_ACTIVE);\n\t }\n\t};\n\t/**\n\t * Reset panel state, droping active classes\n\t *\n\t * @private\n\t */\n\tMaterialLayout.prototype.resetPanelState_ = function (panels) {\n\t for (var j = 0; j < panels.length; j++) {\n\t panels[j].classList.remove(this.CssClasses_.IS_ACTIVE);\n\t }\n\t};\n\t/**\n\t * Toggle drawer state\n\t *\n\t * @public\n\t */\n\tMaterialLayout.prototype.toggleDrawer = function () {\n\t var drawerButton = this.innerContainer_.querySelector('.' + this.CssClasses_.DRAWER_BTN);\n\t this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n\t this.obfuscator_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n\t // Set accessibility properties.\n\t if (this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {\n\t this.drawer_.setAttribute('aria-hidden', 'false');\n\t drawerButton.setAttribute('aria-expanded', 'true');\n\t } else {\n\t this.drawer_.setAttribute('aria-hidden', 'true');\n\t drawerButton.setAttribute('aria-expanded', 'false');\n\t }\n\t};\n\tMaterialLayout.prototype['toggleDrawer'] = MaterialLayout.prototype.toggleDrawer;\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialLayout.prototype.init = function () {\n\t if (this.element_) {\n\t var focusedElement = this.element_.querySelector(':focus');\n\t if (focusedElement) {\n\t focusedElement.focus();\n\t }\n\t var directChildren = this.innerContainer_.childNodes;\n\t var numChildren = directChildren.length;\n\t for (var c = 0; c < numChildren; c++) {\n\t var child = directChildren[c];\n\t if (child.classList && child.classList.contains(this.CssClasses_.HEADER)) {\n\t this.header_ = child;\n\t }\n\t if (child.classList && child.classList.contains(this.CssClasses_.DRAWER)) {\n\t this.drawer_ = child;\n\t }\n\t if (child.classList && child.classList.contains(this.CssClasses_.CONTENT)) {\n\t this.content_ = child;\n\t }\n\t }\n\t window.addEventListener('pageshow', function (e) {\n\t if (e.persisted) {\n\t // when page is loaded from back/forward cache\n\t // trigger repaint to let layout scroll in safari\n\t this.innerContainer_.style.overflowY = 'hidden';\n\t requestAnimationFrame(function () {\n\t this.innerContainer_.style.overflowY = '';\n\t }.bind(this));\n\t }\n\t }.bind(this), false);\n\t if (this.header_) {\n\t this.tabBar_ = this.header_.querySelector('.' + this.CssClasses_.TAB_BAR);\n\t }\n\t var mode = this.Mode_.STANDARD;\n\t if (this.header_) {\n\t if (this.header_.classList.contains(this.CssClasses_.HEADER_SEAMED)) {\n\t mode = this.Mode_.SEAMED;\n\t } else if (this.header_.classList.contains(this.CssClasses_.HEADER_WATERFALL)) {\n\t mode = this.Mode_.WATERFALL;\n\t this.header_.addEventListener('transitionend', this.headerTransitionEndHandler_.bind(this));\n\t this.header_.addEventListener('click', this.headerClickHandler_.bind(this));\n\t } else if (this.header_.classList.contains(this.CssClasses_.HEADER_SCROLL)) {\n\t mode = this.Mode_.SCROLL;\n\t this.element_.classList.add(this.CssClasses_.HAS_SCROLLING_HEADER);\n\t }\n\t if (mode === this.Mode_.STANDARD) {\n\t this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n\t if (this.tabBar_) {\n\t this.tabBar_.classList.add(this.CssClasses_.CASTING_SHADOW);\n\t }\n\t } else if (mode === this.Mode_.SEAMED || mode === this.Mode_.SCROLL) {\n\t this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n\t if (this.tabBar_) {\n\t this.tabBar_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n\t }\n\t } else if (mode === this.Mode_.WATERFALL) {\n\t // Add and remove shadows depending on scroll position.\n\t // Also add/remove auxiliary class for styling of the compact version of\n\t // the header.\n\t this.content_.addEventListener('scroll', this.contentScrollHandler_.bind(this));\n\t this.contentScrollHandler_();\n\t }\n\t }\n\t // Add drawer toggling button to our layout, if we have an openable drawer.\n\t if (this.drawer_) {\n\t var drawerButton = this.innerContainer_.querySelector('.' + this.CssClasses_.DRAWER_BTN);\n\t if (!drawerButton) {\n\t drawerButton = document.createElement('div');\n\t drawerButton.setAttribute('aria-expanded', 'false');\n\t drawerButton.setAttribute('role', 'button');\n\t drawerButton.setAttribute('tabindex', '0');\n\t drawerButton.classList.add(this.CssClasses_.DRAWER_BTN);\n\t var drawerButtonIcon = document.createElement('i');\n\t drawerButtonIcon.classList.add(this.CssClasses_.ICON);\n\t drawerButtonIcon.innerHTML = this.Constant_.MENU_ICON;\n\t drawerButton.appendChild(drawerButtonIcon);\n\t }\n\t if (this.drawer_.classList.contains(this.CssClasses_.ON_LARGE_SCREEN)) {\n\t //If drawer has ON_LARGE_SCREEN class then add it to the drawer toggle button as well.\n\t drawerButton.classList.add(this.CssClasses_.ON_LARGE_SCREEN);\n\t } else if (this.drawer_.classList.contains(this.CssClasses_.ON_SMALL_SCREEN)) {\n\t //If drawer has ON_SMALL_SCREEN class then add it to the drawer toggle button as well.\n\t drawerButton.classList.add(this.CssClasses_.ON_SMALL_SCREEN);\n\t }\n\t drawerButton.addEventListener('click', this.drawerToggleHandler_.bind(this));\n\t drawerButton.addEventListener('keydown', this.drawerToggleHandler_.bind(this));\n\t // Add a class if the layout has a drawer, for altering the left padding.\n\t // Adds the HAS_DRAWER to the elements since this.header_ may or may\n\t // not be present.\n\t this.element_.classList.add(this.CssClasses_.HAS_DRAWER);\n\t // If we have a fixed header, add the button to the header rather than\n\t // the layout.\n\t if (this.element_.classList.contains(this.CssClasses_.FIXED_HEADER)) {\n\t this.header_.insertBefore(drawerButton, this.header_.firstChild);\n\t } else {\n\t this.innerContainer_.insertBefore(drawerButton, this.content_);\n\t }\n\t var obfuscator = document.createElement('div');\n\t obfuscator.classList.add(this.CssClasses_.OBFUSCATOR);\n\t this.innerContainer_.appendChild(obfuscator);\n\t obfuscator.addEventListener('click', this.drawerToggleHandler_.bind(this));\n\t this.obfuscator_ = obfuscator;\n\t this.drawer_.addEventListener('keydown', this.keyboardEventHandler_.bind(this));\n\t this.drawer_.setAttribute('aria-hidden', 'true');\n\t }\n\t // Keep an eye on screen size, and add/remove auxiliary class for styling\n\t // of small screens.\n\t this.screenSizeMediaQuery_ = window.matchMedia(this.Constant_.MAX_WIDTH);\n\t this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this));\n\t this.screenSizeHandler_();\n\t // Initialize tabs, if any.\n\t if (this.header_ && this.tabBar_) {\n\t this.element_.classList.add(this.CssClasses_.HAS_TABS);\n\t var tabContainer = document.createElement('div');\n\t tabContainer.classList.add(this.CssClasses_.TAB_CONTAINER);\n\t this.header_.insertBefore(tabContainer, this.tabBar_);\n\t this.header_.removeChild(this.tabBar_);\n\t var leftButton = document.createElement('div');\n\t leftButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n\t leftButton.classList.add(this.CssClasses_.TAB_BAR_LEFT_BUTTON);\n\t var leftButtonIcon = document.createElement('i');\n\t leftButtonIcon.classList.add(this.CssClasses_.ICON);\n\t leftButtonIcon.textContent = this.Constant_.CHEVRON_LEFT;\n\t leftButton.appendChild(leftButtonIcon);\n\t leftButton.addEventListener('click', function () {\n\t this.tabBar_.scrollLeft -= this.Constant_.TAB_SCROLL_PIXELS;\n\t }.bind(this));\n\t var rightButton = document.createElement('div');\n\t rightButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n\t rightButton.classList.add(this.CssClasses_.TAB_BAR_RIGHT_BUTTON);\n\t var rightButtonIcon = document.createElement('i');\n\t rightButtonIcon.classList.add(this.CssClasses_.ICON);\n\t rightButtonIcon.textContent = this.Constant_.CHEVRON_RIGHT;\n\t rightButton.appendChild(rightButtonIcon);\n\t rightButton.addEventListener('click', function () {\n\t this.tabBar_.scrollLeft += this.Constant_.TAB_SCROLL_PIXELS;\n\t }.bind(this));\n\t tabContainer.appendChild(leftButton);\n\t tabContainer.appendChild(this.tabBar_);\n\t tabContainer.appendChild(rightButton);\n\t // Add and remove tab buttons depending on scroll position and total\n\t // window size.\n\t var tabUpdateHandler = function () {\n\t if (this.tabBar_.scrollLeft > 0) {\n\t leftButton.classList.add(this.CssClasses_.IS_ACTIVE);\n\t } else {\n\t leftButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n\t }\n\t if (this.tabBar_.scrollLeft < this.tabBar_.scrollWidth - this.tabBar_.offsetWidth) {\n\t rightButton.classList.add(this.CssClasses_.IS_ACTIVE);\n\t } else {\n\t rightButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n\t }\n\t }.bind(this);\n\t this.tabBar_.addEventListener('scroll', tabUpdateHandler);\n\t tabUpdateHandler();\n\t // Update tabs when the window resizes.\n\t var windowResizeHandler = function () {\n\t // Use timeouts to make sure it doesn't happen too often.\n\t if (this.resizeTimeoutId_) {\n\t clearTimeout(this.resizeTimeoutId_);\n\t }\n\t this.resizeTimeoutId_ = setTimeout(function () {\n\t tabUpdateHandler();\n\t this.resizeTimeoutId_ = null;\n\t }.bind(this), this.Constant_.RESIZE_TIMEOUT);\n\t }.bind(this);\n\t window.addEventListener('resize', windowResizeHandler);\n\t if (this.tabBar_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n\t this.tabBar_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n\t }\n\t // Select element tabs, document panels\n\t var tabs = this.tabBar_.querySelectorAll('.' + this.CssClasses_.TAB);\n\t var panels = this.content_.querySelectorAll('.' + this.CssClasses_.PANEL);\n\t // Create new tabs for each tab element\n\t for (var i = 0; i < tabs.length; i++) {\n\t new MaterialLayoutTab(tabs[i], tabs, panels, this);\n\t }\n\t }\n\t this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n\t }\n\t};\n\t/**\n\t * Constructor for an individual tab.\n\t *\n\t * @constructor\n\t * @param {HTMLElement} tab The HTML element for the tab.\n\t * @param {!Array<HTMLElement>} tabs Array with HTML elements for all tabs.\n\t * @param {!Array<HTMLElement>} panels Array with HTML elements for all panels.\n\t * @param {MaterialLayout} layout The MaterialLayout object that owns the tab.\n\t */\n\tfunction MaterialLayoutTab(tab, tabs, panels, layout) {\n\t /**\n\t * Auxiliary method to programmatically select a tab in the UI.\n\t */\n\t function selectTab() {\n\t layout.resetTabState_(tabs);\n\t tab.classList.add(layout.CssClasses_.IS_ACTIVE);\n\t }\n\t if (layout.tabBar_.classList.contains(layout.CssClasses_.JS_RIPPLE_EFFECT)) {\n\t var rippleContainer = document.createElement('span');\n\t rippleContainer.classList.add(layout.CssClasses_.RIPPLE_CONTAINER);\n\t rippleContainer.classList.add(layout.CssClasses_.JS_RIPPLE_EFFECT);\n\t var ripple = document.createElement('span');\n\t ripple.classList.add(layout.CssClasses_.RIPPLE);\n\t rippleContainer.appendChild(ripple);\n\t tab.appendChild(rippleContainer);\n\t }\n\t tab.addEventListener('click', function (e) {\n\t e.preventDefault();\n\t selectTab();\n\t });\n\t tab.show = selectTab;\n\t}\n\twindow['MaterialLayoutTab'] = MaterialLayoutTab;\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialLayout,\n\t classAsString: 'MaterialLayout',\n\t cssClass: 'mdl-js-layout'\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Data Table Card MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {Element} element The element that will be upgraded.\n\t */\n\tvar MaterialDataTable = function MaterialDataTable(element) {\n\t this.element_ = element;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialDataTable'] = MaterialDataTable;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialDataTable.prototype.Constant_ = {};\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialDataTable.prototype.CssClasses_ = {\n\t DATA_TABLE: 'mdl-data-table',\n\t SELECTABLE: 'mdl-data-table--selectable',\n\t SELECT_ELEMENT: 'mdl-data-table__select',\n\t IS_SELECTED: 'is-selected',\n\t IS_UPGRADED: 'is-upgraded'\n\t};\n\t/**\n\t * Generates and returns a function that toggles the selection state of a\n\t * single row (or multiple rows).\n\t *\n\t * @param {Element} checkbox Checkbox that toggles the selection state.\n\t * @param {Element} row Row to toggle when checkbox changes.\n\t * @param {(Array<Object>|NodeList)=} opt_rows Rows to toggle when checkbox changes.\n\t * @private\n\t */\n\tMaterialDataTable.prototype.selectRow_ = function (checkbox, row, opt_rows) {\n\t if (row) {\n\t return function () {\n\t if (checkbox.checked) {\n\t row.classList.add(this.CssClasses_.IS_SELECTED);\n\t } else {\n\t row.classList.remove(this.CssClasses_.IS_SELECTED);\n\t }\n\t }.bind(this);\n\t }\n\t if (opt_rows) {\n\t return function () {\n\t var i;\n\t var el;\n\t if (checkbox.checked) {\n\t for (i = 0; i < opt_rows.length; i++) {\n\t el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');\n\t el['MaterialCheckbox'].check();\n\t opt_rows[i].classList.add(this.CssClasses_.IS_SELECTED);\n\t }\n\t } else {\n\t for (i = 0; i < opt_rows.length; i++) {\n\t el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');\n\t el['MaterialCheckbox'].uncheck();\n\t opt_rows[i].classList.remove(this.CssClasses_.IS_SELECTED);\n\t }\n\t }\n\t }.bind(this);\n\t }\n\t};\n\t/**\n\t * Creates a checkbox for a single or or multiple rows and hooks up the\n\t * event handling.\n\t *\n\t * @param {Element} row Row to toggle when checkbox changes.\n\t * @param {(Array<Object>|NodeList)=} opt_rows Rows to toggle when checkbox changes.\n\t * @private\n\t */\n\tMaterialDataTable.prototype.createCheckbox_ = function (row, opt_rows) {\n\t var label = document.createElement('label');\n\t var labelClasses = [\n\t 'mdl-checkbox',\n\t 'mdl-js-checkbox',\n\t 'mdl-js-ripple-effect',\n\t this.CssClasses_.SELECT_ELEMENT\n\t ];\n\t label.className = labelClasses.join(' ');\n\t var checkbox = document.createElement('input');\n\t checkbox.type = 'checkbox';\n\t checkbox.classList.add('mdl-checkbox__input');\n\t if (row) {\n\t checkbox.checked = row.classList.contains(this.CssClasses_.IS_SELECTED);\n\t checkbox.addEventListener('change', this.selectRow_(checkbox, row));\n\t } else if (opt_rows) {\n\t checkbox.addEventListener('change', this.selectRow_(checkbox, null, opt_rows));\n\t }\n\t label.appendChild(checkbox);\n\t componentHandler.upgradeElement(label, 'MaterialCheckbox');\n\t return label;\n\t};\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialDataTable.prototype.init = function () {\n\t if (this.element_) {\n\t var firstHeader = this.element_.querySelector('th');\n\t var bodyRows = Array.prototype.slice.call(this.element_.querySelectorAll('tbody tr'));\n\t var footRows = Array.prototype.slice.call(this.element_.querySelectorAll('tfoot tr'));\n\t var rows = bodyRows.concat(footRows);\n\t if (this.element_.classList.contains(this.CssClasses_.SELECTABLE)) {\n\t var th = document.createElement('th');\n\t var headerCheckbox = this.createCheckbox_(null, rows);\n\t th.appendChild(headerCheckbox);\n\t firstHeader.parentElement.insertBefore(th, firstHeader);\n\t for (var i = 0; i < rows.length; i++) {\n\t var firstCell = rows[i].querySelector('td');\n\t if (firstCell) {\n\t var td = document.createElement('td');\n\t if (rows[i].parentNode.nodeName.toUpperCase() === 'TBODY') {\n\t var rowCheckbox = this.createCheckbox_(rows[i]);\n\t td.appendChild(rowCheckbox);\n\t }\n\t rows[i].insertBefore(td, firstCell);\n\t }\n\t }\n\t this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n\t }\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialDataTable,\n\t classAsString: 'MaterialDataTable',\n\t cssClass: 'mdl-js-data-table'\n\t});\n\t/**\n\t * @license\n\t * Copyright 2015 Google Inc. All Rights Reserved.\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t/**\n\t * Class constructor for Ripple MDL component.\n\t * Implements MDL component design pattern defined at:\n\t * https://github.com/jasonmayes/mdl-component-design-pattern\n\t *\n\t * @constructor\n\t * @param {HTMLElement} element The element that will be upgraded.\n\t */\n\tvar MaterialRipple = function MaterialRipple(element) {\n\t this.element_ = element;\n\t // Initialize instance.\n\t this.init();\n\t};\n\twindow['MaterialRipple'] = MaterialRipple;\n\t/**\n\t * Store constants in one place so they can be updated easily.\n\t *\n\t * @enum {string | number}\n\t * @private\n\t */\n\tMaterialRipple.prototype.Constant_ = {\n\t INITIAL_SCALE: 'scale(0.0001, 0.0001)',\n\t INITIAL_SIZE: '1px',\n\t INITIAL_OPACITY: '0.4',\n\t FINAL_OPACITY: '0',\n\t FINAL_SCALE: ''\n\t};\n\t/**\n\t * Store strings for class names defined by this component that are used in\n\t * JavaScript. This allows us to simply change it in one place should we\n\t * decide to modify at a later date.\n\t *\n\t * @enum {string}\n\t * @private\n\t */\n\tMaterialRipple.prototype.CssClasses_ = {\n\t RIPPLE_CENTER: 'mdl-ripple--center',\n\t RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n\t RIPPLE: 'mdl-ripple',\n\t IS_ANIMATING: 'is-animating',\n\t IS_VISIBLE: 'is-visible'\n\t};\n\t/**\n\t * Handle mouse / finger down on element.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialRipple.prototype.downHandler_ = function (event) {\n\t if (!this.rippleElement_.style.width && !this.rippleElement_.style.height) {\n\t var rect = this.element_.getBoundingClientRect();\n\t this.boundHeight = rect.height;\n\t this.boundWidth = rect.width;\n\t this.rippleSize_ = Math.sqrt(rect.width * rect.width + rect.height * rect.height) * 2 + 2;\n\t this.rippleElement_.style.width = this.rippleSize_ + 'px';\n\t this.rippleElement_.style.height = this.rippleSize_ + 'px';\n\t }\n\t this.rippleElement_.classList.add(this.CssClasses_.IS_VISIBLE);\n\t if (event.type === 'mousedown' && this.ignoringMouseDown_) {\n\t this.ignoringMouseDown_ = false;\n\t } else {\n\t if (event.type === 'touchstart') {\n\t this.ignoringMouseDown_ = true;\n\t }\n\t var frameCount = this.getFrameCount();\n\t if (frameCount > 0) {\n\t return;\n\t }\n\t this.setFrameCount(1);\n\t var bound = event.currentTarget.getBoundingClientRect();\n\t var x;\n\t var y;\n\t // Check if we are handling a keyboard click.\n\t if (event.clientX === 0 && event.clientY === 0) {\n\t x = Math.round(bound.width / 2);\n\t y = Math.round(bound.height / 2);\n\t } else {\n\t var clientX = event.clientX ? event.clientX : event.touches[0].clientX;\n\t var clientY = event.clientY ? event.clientY : event.touches[0].clientY;\n\t x = Math.round(clientX - bound.left);\n\t y = Math.round(clientY - bound.top);\n\t }\n\t this.setRippleXY(x, y);\n\t this.setRippleStyles(true);\n\t window.requestAnimationFrame(this.animFrameHandler.bind(this));\n\t }\n\t};\n\t/**\n\t * Handle mouse / finger up on element.\n\t *\n\t * @param {Event} event The event that fired.\n\t * @private\n\t */\n\tMaterialRipple.prototype.upHandler_ = function (event) {\n\t // Don't fire for the artificial \"mouseup\" generated by a double-click.\n\t if (event && event.detail !== 2) {\n\t // Allow a repaint to occur before removing this class, so the animation\n\t // shows for tap events, which seem to trigger a mouseup too soon after\n\t // mousedown.\n\t window.setTimeout(function () {\n\t this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE);\n\t }.bind(this), 0);\n\t }\n\t};\n\t/**\n\t * Initialize element.\n\t */\n\tMaterialRipple.prototype.init = function () {\n\t if (this.element_) {\n\t var recentering = this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);\n\t if (!this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)) {\n\t this.rippleElement_ = this.element_.querySelector('.' + this.CssClasses_.RIPPLE);\n\t this.frameCount_ = 0;\n\t this.rippleSize_ = 0;\n\t this.x_ = 0;\n\t this.y_ = 0;\n\t // Touch start produces a compat mouse down event, which would cause a\n\t // second ripples. To avoid that, we use this property to ignore the first\n\t // mouse down after a touch start.\n\t this.ignoringMouseDown_ = false;\n\t this.boundDownHandler = this.downHandler_.bind(this);\n\t this.element_.addEventListener('mousedown', this.boundDownHandler);\n\t this.element_.addEventListener('touchstart', this.boundDownHandler);\n\t this.boundUpHandler = this.upHandler_.bind(this);\n\t this.element_.addEventListener('mouseup', this.boundUpHandler);\n\t this.element_.addEventListener('mouseleave', this.boundUpHandler);\n\t this.element_.addEventListener('touchend', this.boundUpHandler);\n\t this.element_.addEventListener('blur', this.boundUpHandler);\n\t /**\n\t * Getter for frameCount_.\n\t * @return {number} the frame count.\n\t */\n\t this.getFrameCount = function () {\n\t return this.frameCount_;\n\t };\n\t /**\n\t * Setter for frameCount_.\n\t * @param {number} fC the frame count.\n\t */\n\t this.setFrameCount = function (fC) {\n\t this.frameCount_ = fC;\n\t };\n\t /**\n\t * Getter for rippleElement_.\n\t * @return {Element} the ripple element.\n\t */\n\t this.getRippleElement = function () {\n\t return this.rippleElement_;\n\t };\n\t /**\n\t * Sets the ripple X and Y coordinates.\n\t * @param {number} newX the new X coordinate\n\t * @param {number} newY the new Y coordinate\n\t */\n\t this.setRippleXY = function (newX, newY) {\n\t this.x_ = newX;\n\t this.y_ = newY;\n\t };\n\t /**\n\t * Sets the ripple styles.\n\t * @param {boolean} start whether or not this is the start frame.\n\t */\n\t this.setRippleStyles = function (start) {\n\t if (this.rippleElement_ !== null) {\n\t var transformString;\n\t var scale;\n\t var size;\n\t var offset = 'translate(' + this.x_ + 'px, ' + this.y_ + 'px)';\n\t if (start) {\n\t scale = this.Constant_.INITIAL_SCALE;\n\t size = this.Constant_.INITIAL_SIZE;\n\t } else {\n\t scale = this.Constant_.FINAL_SCALE;\n\t size = this.rippleSize_ + 'px';\n\t if (recentering) {\n\t offset = 'translate(' + this.boundWidth / 2 + 'px, ' + this.boundHeight / 2 + 'px)';\n\t }\n\t }\n\t transformString = 'translate(-50%, -50%) ' + offset + scale;\n\t this.rippleElement_.style.webkitTransform = transformString;\n\t this.rippleElement_.style.msTransform = transformString;\n\t this.rippleElement_.style.transform = transformString;\n\t if (start) {\n\t this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING);\n\t } else {\n\t this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING);\n\t }\n\t }\n\t };\n\t /**\n\t * Handles an animation frame.\n\t */\n\t this.animFrameHandler = function () {\n\t if (this.frameCount_-- > 0) {\n\t window.requestAnimationFrame(this.animFrameHandler.bind(this));\n\t } else {\n\t this.setRippleStyles(false);\n\t }\n\t };\n\t }\n\t }\n\t};\n\t// The component registers itself. It can assume componentHandler is available\n\t// in the global scope.\n\tcomponentHandler.register({\n\t constructor: MaterialRipple,\n\t classAsString: 'MaterialRipple',\n\t cssClass: 'mdl-js-ripple-effect',\n\t widget: false\n\t});\n\t}());\n\n\n/***/ },\n/* 340 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t children: _react.PropTypes.oneOfType([_react.PropTypes.element, _react.PropTypes.string]),\n\t className: _react.PropTypes.string,\n\t text: _react.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.number]),\n\t overlap: _react.PropTypes.bool,\n\t noBackground: _react.PropTypes.bool\n\t};\n\t\n\tvar Badge = function Badge(props) {\n\t var children = props.children,\n\t className = props.className,\n\t text = props.text,\n\t overlap = props.overlap,\n\t noBackground = props.noBackground,\n\t rest = _objectWithoutProperties(props, ['children', 'className', 'text', 'overlap', 'noBackground']);\n\t\n\t // No badge if no children\n\t // TODO: In React 15, we can return null instead\n\t\n\t\n\t if (!_react2.default.Children.count(children)) return _react2.default.createElement('noscript', null);\n\t\n\t var element = typeof children === 'string' ? _react2.default.createElement(\n\t 'span',\n\t null,\n\t children\n\t ) : _react2.default.Children.only(children);\n\t\n\t // No text -> No need of badge\n\t if (text === null || typeof text === 'undefined') return element;\n\t\n\t return _react2.default.cloneElement(element, _extends({}, rest, {\n\t className: (0, _classnames2.default)(className, element.props.className, 'mdl-badge', {\n\t 'mdl-badge--overlap': !!overlap,\n\t 'mdl-badge--no-background': !!noBackground\n\t }),\n\t 'data-badge': text\n\t }));\n\t};\n\t\n\tBadge.propTypes = propTypes;\n\t\n\texports.default = Badge;\n\n/***/ },\n/* 341 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _clamp = __webpack_require__(48);\n\t\n\tvar _clamp2 = _interopRequireDefault(_clamp);\n\t\n\tvar _shadows = __webpack_require__(58);\n\t\n\tvar _shadows2 = _interopRequireDefault(_shadows);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t className: _react.PropTypes.string,\n\t shadow: _react.PropTypes.number\n\t};\n\t\n\tvar Card = function Card(props) {\n\t var className = props.className,\n\t shadow = props.shadow,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'shadow', 'children']);\n\t\n\t var hasShadow = typeof shadow !== 'undefined';\n\t var shadowLevel = (0, _clamp2.default)(shadow || 0, 0, _shadows2.default.length - 1);\n\t\n\t var classes = (0, _classnames2.default)('mdl-card', _defineProperty({}, _shadows2.default[shadowLevel], hasShadow), className);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ className: classes }, otherProps),\n\t children\n\t );\n\t};\n\t\n\tCard.propTypes = propTypes;\n\t\n\texports.default = Card;\n\n/***/ },\n/* 342 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t border: _react.PropTypes.bool,\n\t className: _react.PropTypes.string\n\t};\n\t\n\tvar CardActions = function CardActions(props) {\n\t var className = props.className,\n\t border = props.border,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'border', 'children']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-card__actions', {\n\t 'mdl-card--border': border\n\t }, className);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ className: classes }, otherProps),\n\t children\n\t );\n\t};\n\t\n\tCardActions.propTypes = propTypes;\n\t\n\texports.default = CardActions;\n\n/***/ },\n/* 343 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t className: _react.PropTypes.string,\n\t expand: _react.PropTypes.bool\n\t};\n\t\n\tvar CardTitle = function CardTitle(props) {\n\t var className = props.className,\n\t children = props.children,\n\t expand = props.expand,\n\t otherProps = _objectWithoutProperties(props, ['className', 'children', 'expand']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-card__title', {\n\t 'mdl-card--expand': expand\n\t }, className);\n\t\n\t var title = typeof children === 'string' ? _react2.default.createElement(\n\t 'h2',\n\t { className: 'mdl-card__title-text' },\n\t children\n\t ) : children;\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ className: classes }, otherProps),\n\t title\n\t );\n\t};\n\t\n\tCardTitle.propTypes = propTypes;\n\t\n\texports.default = CardTitle;\n\n/***/ },\n/* 344 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.CardMedia = exports.CardActions = exports.CardTitle = exports.CardMenu = exports.CardText = exports.Card = undefined;\n\t\n\tvar _Card = __webpack_require__(341);\n\t\n\tObject.defineProperty(exports, 'Card', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Card).default;\n\t }\n\t});\n\t\n\tvar _CardTitle = __webpack_require__(343);\n\t\n\tObject.defineProperty(exports, 'CardTitle', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_CardTitle).default;\n\t }\n\t});\n\t\n\tvar _CardActions = __webpack_require__(342);\n\t\n\tObject.defineProperty(exports, 'CardActions', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_CardActions).default;\n\t }\n\t});\n\t\n\tvar _basicClassCreator = __webpack_require__(33);\n\t\n\tvar _basicClassCreator2 = _interopRequireDefault(_basicClassCreator);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar CardText = exports.CardText = (0, _basicClassCreator2.default)('CardText', 'mdl-card__supporting-text');\n\tvar CardMenu = exports.CardMenu = (0, _basicClassCreator2.default)('CardMenu', 'mdl-card__menu');\n\tvar CardMedia = exports.CardMedia = (0, _basicClassCreator2.default)('CardMedia', 'mdl-card__media');\n\n/***/ },\n/* 345 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.Chip = exports.ChipText = exports.ChipContact = undefined;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _basicClassCreator = __webpack_require__(33);\n\t\n\tvar _basicClassCreator2 = _interopRequireDefault(_basicClassCreator);\n\t\n\tvar _Icon = __webpack_require__(44);\n\t\n\tvar _Icon2 = _interopRequireDefault(_Icon);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t className: _react.PropTypes.string,\n\t onClick: _react.PropTypes.func,\n\t onClose: _react.PropTypes.func\n\t};\n\t\n\tvar ChipContact = exports.ChipContact = (0, _basicClassCreator2.default)('ChipContact', 'mdl-chip__contact', 'span');\n\tvar ChipText = exports.ChipText = (0, _basicClassCreator2.default)('ChipText', 'mdl-chip__text', 'span');\n\t\n\tvar Chip = exports.Chip = function Chip(props) {\n\t var className = props.className,\n\t onClick = props.onClick,\n\t onClose = props.onClose,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'onClick', 'onClose', 'children']);\n\t\n\t var childrenArray = _react2.default.Children.toArray(children);\n\t var contactIndex = childrenArray.findIndex(function (c) {\n\t return c.type === ChipContact;\n\t });\n\t\n\t var chipContent = [];\n\t\n\t if (contactIndex >= 0) {\n\t chipContent.push(childrenArray[contactIndex], _react2.default.createElement(\n\t ChipText,\n\t { key: 'text' },\n\t childrenArray.slice(0, contactIndex).concat(childrenArray.slice(contactIndex + 1))\n\t ));\n\t } else {\n\t chipContent.push(_react2.default.createElement(\n\t ChipText,\n\t { key: 'text' },\n\t children\n\t ));\n\t }\n\t\n\t if (onClose) {\n\t chipContent.push(_react2.default.createElement(\n\t 'button',\n\t { key: 'btn', type: 'button', className: 'mdl-chip__action', onClick: onClose },\n\t _react2.default.createElement(_Icon2.default, { name: 'cancel' })\n\t ));\n\t }\n\t\n\t var elt = onClick ? 'button' : 'span';\n\t\n\t return _react2.default.createElement(elt, _extends({\n\t className: (0, _classnames2.default)('mdl-chip', {\n\t 'mdl-chip--contact': contactIndex > -1,\n\t 'mdl-chip--deletable': !!onClose\n\t }, className),\n\t type: onClick ? 'button' : null,\n\t onClick: onClick\n\t }, otherProps), chipContent);\n\t};\n\t\n\tChip.propTypes = propTypes;\n\n/***/ },\n/* 346 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _lodash = __webpack_require__(264);\n\t\n\tvar _lodash2 = _interopRequireDefault(_lodash);\n\t\n\tvar _TableHeader = __webpack_require__(56);\n\t\n\tvar _TableHeader2 = _interopRequireDefault(_TableHeader);\n\t\n\tvar _Checkbox = __webpack_require__(138);\n\t\n\tvar _Checkbox2 = _interopRequireDefault(_Checkbox);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t columns: function columns(props, propName, componentName) {\n\t return props[propName] && new Error(componentName + ': `' + propName + '` is deprecated, please use the component `TableHeader` instead.');\n\t },\n\t data: function data(props, propName, componentName) {\n\t return props[propName] && new Error(componentName + ': `' + propName + '` is deprecated, please use `rows` instead. `' + propName + '` will be removed in the next major release.');\n\t },\n\t onSelectionChanged: _react.PropTypes.func,\n\t rowKeyColumn: _react.PropTypes.string,\n\t rows: _react.PropTypes.arrayOf(_react.PropTypes.object).isRequired,\n\t selectable: _react.PropTypes.bool\n\t};\n\t\n\tvar defaultProps = {\n\t onSelectionChanged: function onSelectionChanged() {\n\t // do nothing\n\t }\n\t};\n\t\n\texports.default = function (Component) {\n\t var Selectable = function (_React$Component) {\n\t _inherits(Selectable, _React$Component);\n\t\n\t function Selectable(props) {\n\t _classCallCheck(this, Selectable);\n\t\n\t var _this = _possibleConstructorReturn(this, (Selectable.__proto__ || Object.getPrototypeOf(Selectable)).call(this, props));\n\t\n\t _this.handleChangeHeaderCheckbox = _this.handleChangeHeaderCheckbox.bind(_this);\n\t _this.handleChangeRowCheckbox = _this.handleChangeRowCheckbox.bind(_this);\n\t _this.builRowCheckbox = _this.builRowCheckbox.bind(_this);\n\t\n\t if (props.selectable) {\n\t _this.state = {\n\t headerSelected: false,\n\t selectedRows: []\n\t };\n\t }\n\t return _this;\n\t }\n\t\n\t _createClass(Selectable, [{\n\t key: 'componentWillReceiveProps',\n\t value: function componentWillReceiveProps(nextProps) {\n\t var _this2 = this;\n\t\n\t if (nextProps.selectable) {\n\t (function () {\n\t var rows = nextProps.rows,\n\t data = nextProps.data,\n\t rowKeyColumn = nextProps.rowKeyColumn;\n\t\n\t var rrows = rows || data;\n\t\n\t if (!(0, _lodash2.default)(_this2.props.rows || _this2.props.data, rrows)) {\n\t // keep only existing rows\n\t var selectedRows = _this2.state.selectedRows.filter(function (k) {\n\t return rrows.map(function (row, i) {\n\t return row[rowKeyColumn] || row.key || i;\n\t }).indexOf(k) > -1;\n\t });\n\t\n\t _this2.setState({\n\t headerSelected: selectedRows.length === rrows.length,\n\t selectedRows: selectedRows\n\t });\n\t\n\t nextProps.onSelectionChanged(selectedRows);\n\t }\n\t })();\n\t }\n\t }\n\t }, {\n\t key: 'handleChangeHeaderCheckbox',\n\t value: function handleChangeHeaderCheckbox(e) {\n\t var _props = this.props,\n\t rowKeyColumn = _props.rowKeyColumn,\n\t rows = _props.rows,\n\t data = _props.data;\n\t\n\t var selected = e.target.checked;\n\t var selectedRows = selected ? (rows || data).map(function (row, idx) {\n\t return row[rowKeyColumn] || row.key || idx;\n\t }) : [];\n\t\n\t this.setState({\n\t headerSelected: selected,\n\t selectedRows: selectedRows\n\t });\n\t\n\t this.props.onSelectionChanged(selectedRows);\n\t }\n\t }, {\n\t key: 'handleChangeRowCheckbox',\n\t value: function handleChangeRowCheckbox(e) {\n\t var _props2 = this.props,\n\t rows = _props2.rows,\n\t data = _props2.data;\n\t\n\t var rowId = JSON.parse(e.target.dataset.reactmdl).id;\n\t var rowChecked = e.target.checked;\n\t var selectedRows = this.state.selectedRows;\n\t\n\t if (rowChecked) {\n\t selectedRows.push(rowId);\n\t } else {\n\t var idx = selectedRows.indexOf(rowId);\n\t selectedRows.splice(idx, 1);\n\t }\n\t\n\t this.setState({\n\t headerSelected: (rows || data).length === selectedRows.length,\n\t selectedRows: selectedRows\n\t });\n\t\n\t this.props.onSelectionChanged(selectedRows);\n\t }\n\t }, {\n\t key: 'builRowCheckbox',\n\t value: function builRowCheckbox(content, row, idx) {\n\t var rowKey = row[this.props.rowKeyColumn] || row.key || idx;\n\t var isSelected = this.state.selectedRows.indexOf(rowKey) > -1;\n\t return _react2.default.createElement(_Checkbox2.default, {\n\t className: 'mdl-data-table__select',\n\t 'data-reactmdl': JSON.stringify({ id: rowKey }),\n\t checked: isSelected,\n\t onChange: this.handleChangeRowCheckbox\n\t });\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this3 = this;\n\t\n\t var _props3 = this.props,\n\t rows = _props3.rows,\n\t data = _props3.data,\n\t selectable = _props3.selectable,\n\t children = _props3.children,\n\t rowKeyColumn = _props3.rowKeyColumn,\n\t otherProps = _objectWithoutProperties(_props3, ['rows', 'data', 'selectable', 'children', 'rowKeyColumn']);\n\t\n\t // remove unwatned props\n\t // see https://github.com/Hacker0x01/react-datepicker/issues/517#issuecomment-230171426\n\t\n\t\n\t delete otherProps.onSelectionChanged;\n\t\n\t var realRows = selectable ? (rows || data).map(function (row, idx) {\n\t var rowKey = row[rowKeyColumn] || row.key || idx;\n\t return _extends({}, row, {\n\t className: (0, _classnames2.default)({\n\t 'is-selected': _this3.state.selectedRows.indexOf(rowKey) > -1\n\t }, row.className)\n\t });\n\t }) : rows || data;\n\t\n\t return _react2.default.createElement(\n\t Component,\n\t _extends({ rows: realRows }, otherProps),\n\t selectable && _react2.default.createElement(\n\t _TableHeader2.default,\n\t { name: 'mdl-header-select', cellFormatter: this.builRowCheckbox },\n\t _react2.default.createElement(_Checkbox2.default, {\n\t className: 'mdl-data-table__select',\n\t checked: this.state.headerSelected,\n\t onChange: this.handleChangeHeaderCheckbox\n\t })\n\t ),\n\t children\n\t );\n\t }\n\t }]);\n\t\n\t return Selectable;\n\t }(_react2.default.Component);\n\t\n\t Selectable.propTypes = propTypes;\n\t Selectable.defaultProps = defaultProps;\n\t return Selectable;\n\t};\n\n/***/ },\n/* 347 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _TableHeader = __webpack_require__(56);\n\t\n\tvar _TableHeader2 = _interopRequireDefault(_TableHeader);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tfunction initState(props) {\n\t return {\n\t rows: (props.rows || props.data).slice(),\n\t sortHeader: null,\n\t isAsc: true\n\t };\n\t}\n\t\n\tvar propTypes = {\n\t columns: function columns(props, propName, componentName) {\n\t return props[propName] && new Error(componentName + ': `' + propName + '` is deprecated, please use the component `TableHeader` instead.');\n\t },\n\t data: function data(props, propName, componentName) {\n\t return props[propName] && new Error(componentName + ': `' + propName + '` is deprecated, please use `rows` instead. `' + propName + '` will be removed in the next major release.');\n\t },\n\t rows: _react.PropTypes.arrayOf(_react.PropTypes.object).isRequired,\n\t sortable: _react.PropTypes.bool\n\t};\n\t\n\texports.default = function (Component) {\n\t var Sortable = function (_React$Component) {\n\t _inherits(Sortable, _React$Component);\n\t\n\t function Sortable(props) {\n\t _classCallCheck(this, Sortable);\n\t\n\t var _this = _possibleConstructorReturn(this, (Sortable.__proto__ || Object.getPrototypeOf(Sortable)).call(this, props));\n\t\n\t _this.handleClickColumn = _this.handleClickColumn.bind(_this);\n\t\n\t if (props.sortable) {\n\t _this.state = initState(props);\n\t }\n\t return _this;\n\t }\n\t\n\t _createClass(Sortable, [{\n\t key: 'componentWillReceiveProps',\n\t value: function componentWillReceiveProps(nextProps) {\n\t if (nextProps.sortable) {\n\t var realRows = nextProps.rows || nextProps.data;\n\t var rows = this.state.sortHeader ? this.getSortedRowsForColumn(this.state.isAsc, this.state.sortHeader, realRows) : realRows;\n\t\n\t this.setState({\n\t rows: rows\n\t });\n\t }\n\t }\n\t }, {\n\t key: 'getColumnClass',\n\t value: function getColumnClass(column) {\n\t var _state = this.state,\n\t sortHeader = _state.sortHeader,\n\t isAsc = _state.isAsc;\n\t\n\t\n\t return (0, _classnames2.default)(column.className, {\n\t 'mdl-data-table__header--sorted-ascending': sortHeader === column.name && isAsc,\n\t 'mdl-data-table__header--sorted-descending': sortHeader === column.name && !isAsc\n\t });\n\t }\n\t }, {\n\t key: 'getDefaultSortFn',\n\t value: function getDefaultSortFn(a, b, isAsc) {\n\t return isAsc ? a.localeCompare(b) : b.localeCompare(a);\n\t }\n\t }, {\n\t key: 'getSortedRowsForColumn',\n\t value: function getSortedRowsForColumn(isAsc, columnName, rows) {\n\t var columns = !!this.props.children ? _react2.default.Children.map(this.props.children, function (child) {\n\t return child.props;\n\t }) : this.props.columns;\n\t\n\t var sortFn = this.getDefaultSortFn;\n\t for (var i = 0; i < columns.length; i++) {\n\t if (columns[i].name === columnName && columns[i].sortFn) {\n\t sortFn = columns[i].sortFn;\n\t break;\n\t }\n\t }\n\t\n\t return rows.sort(function (a, b) {\n\t return sortFn(String(a[columnName]), String(b[columnName]), isAsc);\n\t });\n\t }\n\t }, {\n\t key: 'handleClickColumn',\n\t value: function handleClickColumn(e, columnName) {\n\t var isAsc = this.state.sortHeader === columnName ? !this.state.isAsc : true;\n\t var rows = this.getSortedRowsForColumn(isAsc, columnName, this.state.rows);\n\t this.setState({\n\t sortHeader: columnName,\n\t isAsc: isAsc,\n\t rows: rows\n\t });\n\t }\n\t }, {\n\t key: 'renderTableHeaders',\n\t value: function renderTableHeaders() {\n\t var _this2 = this;\n\t\n\t var _props = this.props,\n\t children = _props.children,\n\t columns = _props.columns,\n\t sortable = _props.sortable;\n\t\n\t\n\t if (sortable) {\n\t return children ? _react2.default.Children.map(children, function (child) {\n\t return _react2.default.cloneElement(child, {\n\t className: _this2.getColumnClass(child.props),\n\t onClick: _this2.handleClickColumn\n\t });\n\t }) : columns.map(function (column) {\n\t return _react2.default.createElement(\n\t _TableHeader2.default,\n\t {\n\t key: column.name,\n\t className: _this2.getColumnClass(column),\n\t name: column.name,\n\t numeric: column.numeric,\n\t tooltip: column.tooltip,\n\t onClick: _this2.handleClickColumn\n\t },\n\t column.label\n\t );\n\t });\n\t }\n\t return children;\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props2 = this.props,\n\t rows = _props2.rows,\n\t data = _props2.data,\n\t otherProps = _objectWithoutProperties(_props2, ['rows', 'data']);\n\t\n\t var realRows = this.state && this.state.rows || rows || data;\n\t\n\t // remove unwanted props\n\t delete otherProps.sortable;\n\t\n\t return _react2.default.createElement(\n\t Component,\n\t _extends({ rows: realRows }, otherProps),\n\t this.renderTableHeaders()\n\t );\n\t }\n\t }]);\n\t\n\t return Sortable;\n\t }(_react2.default.Component);\n\t\n\t Sortable.propTypes = propTypes;\n\t return Sortable;\n\t};\n\n/***/ },\n/* 348 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.UndecoratedTable = undefined;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _clamp = __webpack_require__(48);\n\t\n\tvar _clamp2 = _interopRequireDefault(_clamp);\n\t\n\tvar _shadows = __webpack_require__(58);\n\t\n\tvar _shadows2 = _interopRequireDefault(_shadows);\n\t\n\tvar _TableHeader = __webpack_require__(56);\n\t\n\tvar _TableHeader2 = _interopRequireDefault(_TableHeader);\n\t\n\tvar _Selectable = __webpack_require__(346);\n\t\n\tvar _Selectable2 = _interopRequireDefault(_Selectable);\n\t\n\tvar _Sortable = __webpack_require__(347);\n\t\n\tvar _Sortable2 = _interopRequireDefault(_Sortable);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t className: _react.PropTypes.string,\n\t columns: function columns(props, propName, componentName) {\n\t return props[propName] && new Error(componentName + ': `' + propName + '` is deprecated, please use the component `TableHeader` instead.');\n\t },\n\t data: function data(props, propName, componentName) {\n\t return props[propName] && new Error(componentName + ': `' + propName + '` is deprecated, please use `rows` instead. `' + propName + '` will be removed in the next major release.');\n\t },\n\t rowKeyColumn: _react.PropTypes.string,\n\t rows: _react.PropTypes.arrayOf(_react.PropTypes.object).isRequired,\n\t shadow: _react.PropTypes.number\n\t};\n\t\n\tvar Table = function (_React$Component) {\n\t _inherits(Table, _React$Component);\n\t\n\t function Table() {\n\t _classCallCheck(this, Table);\n\t\n\t return _possibleConstructorReturn(this, (Table.__proto__ || Object.getPrototypeOf(Table)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Table, [{\n\t key: 'renderCell',\n\t value: function renderCell(column, row, idx) {\n\t var className = !column.numeric ? 'mdl-data-table__cell--non-numeric' : '';\n\t return _react2.default.createElement(\n\t 'td',\n\t { key: column.name, className: className },\n\t column.cellFormatter ? column.cellFormatter(row[column.name], row, idx) : row[column.name]\n\t );\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props,\n\t className = _props.className,\n\t columns = _props.columns,\n\t shadow = _props.shadow,\n\t children = _props.children,\n\t rowKeyColumn = _props.rowKeyColumn,\n\t rows = _props.rows,\n\t data = _props.data,\n\t otherProps = _objectWithoutProperties(_props, ['className', 'columns', 'shadow', 'children', 'rowKeyColumn', 'rows', 'data']);\n\t\n\t var realRows = rows || data;\n\t\n\t var hasShadow = typeof shadow !== 'undefined';\n\t var shadowLevel = (0, _clamp2.default)(shadow || 0, 0, _shadows2.default.length - 1);\n\t\n\t var classes = (0, _classnames2.default)('mdl-data-table', _defineProperty({}, _shadows2.default[shadowLevel], hasShadow), className);\n\t\n\t var columnChildren = !!children ? _react2.default.Children.toArray(children) : columns.map(function (column) {\n\t return _react2.default.createElement(\n\t _TableHeader2.default,\n\t {\n\t key: column.name,\n\t className: column.className,\n\t name: column.name,\n\t numeric: column.numeric,\n\t tooltip: column.tooltip\n\t },\n\t column.label\n\t );\n\t });\n\t return _react2.default.createElement(\n\t 'table',\n\t _extends({ className: classes }, otherProps),\n\t _react2.default.createElement(\n\t 'thead',\n\t null,\n\t _react2.default.createElement(\n\t 'tr',\n\t null,\n\t columnChildren\n\t )\n\t ),\n\t _react2.default.createElement(\n\t 'tbody',\n\t null,\n\t realRows.map(function (row, idx) {\n\t var _ref = row.mdlRowProps || {},\n\t mdlRowPropsClassName = _ref.className,\n\t remainingMdlRowProps = _objectWithoutProperties(_ref, ['className']);\n\t\n\t return _react2.default.createElement(\n\t 'tr',\n\t _extends({\n\t key: row[rowKeyColumn] || row.key || idx,\n\t className: (0, _classnames2.default)(row.className, mdlRowPropsClassName)\n\t }, remainingMdlRowProps),\n\t columnChildren.map(function (child) {\n\t return _this2.renderCell(child.props, row, idx);\n\t })\n\t );\n\t })\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return Table;\n\t}(_react2.default.Component);\n\t\n\tTable.propTypes = propTypes;\n\t\n\texports.default = (0, _Sortable2.default)((0, _Selectable2.default)(Table));\n\tvar UndecoratedTable = exports.UndecoratedTable = Table;\n\n/***/ },\n/* 349 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _TableHeader = __webpack_require__(56);\n\t\n\tObject.defineProperty(exports, 'TableHeader', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_TableHeader).default;\n\t }\n\t});\n\t\n\tvar _Table = __webpack_require__(348);\n\t\n\tObject.defineProperty(exports, 'Table', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Table).default;\n\t }\n\t});\n\tObject.defineProperty(exports, 'default', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Table).default;\n\t }\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ },\n/* 350 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(13);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t className: _react.PropTypes.string,\n\t onCancel: _react.PropTypes.func,\n\t open: _react.PropTypes.bool\n\t};\n\t\n\tvar defaultProps = {\n\t onCancel: function onCancel(e) {\n\t return e.preventDefault();\n\t }\n\t};\n\t\n\tvar Dialog = function (_React$Component) {\n\t _inherits(Dialog, _React$Component);\n\t\n\t function Dialog() {\n\t _classCallCheck(this, Dialog);\n\t\n\t return _possibleConstructorReturn(this, (Dialog.__proto__ || Object.getPrototypeOf(Dialog)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Dialog, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t this.dialogRef.addEventListener('cancel', this.props.onCancel);\n\t if (this.props.open) {\n\t (0, _reactDom.findDOMNode)(this).showModal();\n\t }\n\t }\n\t }, {\n\t key: 'componentDidUpdate',\n\t value: function componentDidUpdate(prevProps) {\n\t if (this.props.open !== prevProps.open) {\n\t if (this.props.open) {\n\t (0, _reactDom.findDOMNode)(this).showModal();\n\t\n\t // display the dialog at the right location\n\t // needed for the polyfill, otherwise it's not at the right position\n\t var windowHeight = window.innerHeight;\n\t if (this.dialogRef) {\n\t var dialogHeight = this.dialogRef.clientHeight;\n\t this.dialogRef.style.position = 'fixed';\n\t this.dialogRef.style.top = (windowHeight - dialogHeight) / 2 + 'px';\n\t }\n\t } else {\n\t (0, _reactDom.findDOMNode)(this).close();\n\t }\n\t }\n\t }\n\t }, {\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t this.dialogRef.removeEventListener('cancel', this.props.onCancel);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t // We cannot set the `open` prop on the Dialog if we manage its state manually with `showModal`,\n\t // this the disabled eslint rule\n\t // eslint-disable-next-line no-unused-vars\n\t var _props = this.props,\n\t className = _props.className,\n\t open = _props.open,\n\t onCancel = _props.onCancel,\n\t children = _props.children,\n\t otherProps = _objectWithoutProperties(_props, ['className', 'open', 'onCancel', 'children']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-dialog', className);\n\t\n\t return _react2.default.createElement(\n\t 'dialog',\n\t _extends({ ref: function ref(c) {\n\t return _this2.dialogRef = c;\n\t }, className: classes }, otherProps),\n\t children\n\t );\n\t }\n\t }]);\n\t\n\t return Dialog;\n\t}(_react2.default.Component);\n\t\n\tDialog.propTypes = propTypes;\n\tDialog.defaultProps = defaultProps;\n\t\n\texports.default = Dialog;\n\n/***/ },\n/* 351 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar DialogActions = function DialogActions(props) {\n\t var className = props.className,\n\t fullWidth = props.fullWidth,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'fullWidth', 'children']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-dialog__actions', {\n\t 'mdl-dialog__actions--full-width': fullWidth\n\t }, className);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ className: classes }, otherProps),\n\t children\n\t );\n\t};\n\t\n\tDialogActions.propTypes = {\n\t className: _react.PropTypes.string,\n\t fullWidth: _react.PropTypes.bool\n\t};\n\t\n\texports.default = DialogActions;\n\n/***/ },\n/* 352 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar DialogTitle = function DialogTitle(props) {\n\t var className = props.className,\n\t component = props.component,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'component', 'children']);\n\t\n\t return _react2.default.createElement(component || 'h4', _extends({\n\t className: (0, _classnames2.default)('mdl-dialog__title', className)\n\t }, otherProps), children);\n\t};\n\t\n\tDialogTitle.propTypes = {\n\t className: _react.PropTypes.string,\n\t component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.func])\n\t};\n\t\n\texports.default = DialogTitle;\n\n/***/ },\n/* 353 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.DialogActions = exports.DialogContent = exports.DialogTitle = exports.Dialog = undefined;\n\t\n\tvar _Dialog = __webpack_require__(350);\n\t\n\tObject.defineProperty(exports, 'Dialog', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Dialog).default;\n\t }\n\t});\n\t\n\tvar _DialogTitle = __webpack_require__(352);\n\t\n\tObject.defineProperty(exports, 'DialogTitle', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_DialogTitle).default;\n\t }\n\t});\n\t\n\tvar _DialogActions = __webpack_require__(351);\n\t\n\tObject.defineProperty(exports, 'DialogActions', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_DialogActions).default;\n\t }\n\t});\n\t\n\tvar _basicClassCreator = __webpack_require__(33);\n\t\n\tvar _basicClassCreator2 = _interopRequireDefault(_basicClassCreator);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar DialogContent = exports.DialogContent = (0, _basicClassCreator2.default)('DialogContent', 'mdl-dialog__content');\n\n/***/ },\n/* 354 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _Button = __webpack_require__(88);\n\t\n\tvar _Button2 = _interopRequireDefault(_Button);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar FABButton = function FABButton(props) {\n\t var mini = props.mini,\n\t className = props.className,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['mini', 'className', 'children']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-button--fab', {\n\t 'mdl-button--mini-fab': mini\n\t }, className);\n\t\n\t return _react2.default.createElement(\n\t _Button2.default,\n\t _extends({ className: classes }, otherProps),\n\t children\n\t );\n\t};\n\t\n\tFABButton.propTypes = {\n\t className: _react.PropTypes.string,\n\t mini: _react.PropTypes.bool\n\t};\n\t\n\texports.default = FABButton;\n\n/***/ },\n/* 355 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _cloneChildren = __webpack_require__(57);\n\t\n\tvar _cloneChildren2 = _interopRequireDefault(_cloneChildren);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar DropDownSection = function DropDownSection(props) {\n\t var className = props.className,\n\t size = props.size,\n\t title = props.title,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'size', 'title', 'children']);\n\t\n\t var classes = (0, _classnames2.default)(_defineProperty({}, 'mdl-' + size + '-footer__drop-down-section', true), className);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ className: classes }, otherProps),\n\t _react2.default.createElement('input', { className: 'mdl-' + size + '-footer__heading-checkbox', type: 'checkbox', defaultChecked: true }),\n\t _react2.default.createElement(\n\t 'h1',\n\t { className: 'mdl-' + size + '-footer__heading' },\n\t title\n\t ),\n\t (0, _cloneChildren2.default)(children, { size: size })\n\t );\n\t};\n\t\n\tDropDownSection.propTypes = {\n\t className: _react.PropTypes.string,\n\t size: _react.PropTypes.oneOf(['mini', 'mega']),\n\t title: _react.PropTypes.node.isRequired\n\t};\n\tDropDownSection.defaultProps = {\n\t size: 'mega'\n\t};\n\t\n\texports.default = DropDownSection;\n\n/***/ },\n/* 356 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _cloneChildren = __webpack_require__(57);\n\t\n\tvar _cloneChildren2 = _interopRequireDefault(_cloneChildren);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar Footer = function Footer(props) {\n\t var className = props.className,\n\t size = props.size,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'size', 'children']);\n\t\n\t var classes = (0, _classnames2.default)(_defineProperty({}, 'mdl-' + size + '-footer', true), className);\n\t\n\t return _react2.default.createElement(\n\t 'footer',\n\t _extends({ className: classes }, otherProps),\n\t (0, _cloneChildren2.default)(children, { size: size })\n\t );\n\t};\n\t\n\tFooter.propTypes = {\n\t className: _react.PropTypes.string,\n\t size: _react.PropTypes.oneOf(['mini', 'mega'])\n\t};\n\tFooter.defaultProps = {\n\t size: 'mega'\n\t};\n\t\n\texports.default = Footer;\n\n/***/ },\n/* 357 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar LinkList = function LinkList(props) {\n\t var className = props.className,\n\t size = props.size,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'size', 'children']);\n\t\n\t var classes = (0, _classnames2.default)(_defineProperty({}, 'mdl-' + size + '-footer__link-list', true), className);\n\t\n\t return _react2.default.createElement(\n\t 'ul',\n\t _extends({ className: classes }, otherProps),\n\t _react2.default.Children.map(children, function (child) {\n\t return _react2.default.createElement(\n\t 'li',\n\t null,\n\t child\n\t );\n\t })\n\t );\n\t};\n\t\n\tLinkList.propTypes = {\n\t className: _react.PropTypes.string,\n\t size: _react.PropTypes.oneOf(['mini', 'mega'])\n\t};\n\tLinkList.defaultProps = {\n\t size: 'mega'\n\t};\n\t\n\texports.default = LinkList;\n\n/***/ },\n/* 358 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _cloneChildren = __webpack_require__(57);\n\t\n\tvar _cloneChildren2 = _interopRequireDefault(_cloneChildren);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar Section = function Section(props) {\n\t var className = props.className,\n\t logo = props.logo,\n\t size = props.size,\n\t type = props.type,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'logo', 'size', 'type', 'children']);\n\t\n\t var classes = (0, _classnames2.default)(_defineProperty({}, 'mdl-' + size + '-footer__' + type + '-section', true), className);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ className: classes }, otherProps),\n\t logo ? _react2.default.createElement(\n\t 'div',\n\t { className: 'mdl-logo' },\n\t logo\n\t ) : null,\n\t (0, _cloneChildren2.default)(children, { size: size })\n\t );\n\t};\n\t\n\tSection.propTypes = {\n\t className: _react.PropTypes.string,\n\t logo: _react.PropTypes.node,\n\t size: _react.PropTypes.oneOf(['mini', 'mega']),\n\t type: _react.PropTypes.oneOf(['top', 'middle', 'bottom', 'left', 'right'])\n\t};\n\tSection.defaultProps = {\n\t size: 'mega',\n\t type: 'left'\n\t};\n\t\n\texports.default = Section;\n\n/***/ },\n/* 359 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _Footer = __webpack_require__(356);\n\t\n\tObject.defineProperty(exports, 'Footer', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Footer).default;\n\t }\n\t});\n\t\n\tvar _Section = __webpack_require__(358);\n\t\n\tObject.defineProperty(exports, 'FooterSection', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Section).default;\n\t }\n\t});\n\t\n\tvar _DropDownSection = __webpack_require__(355);\n\t\n\tObject.defineProperty(exports, 'FooterDropDownSection', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_DropDownSection).default;\n\t }\n\t});\n\t\n\tvar _LinkList = __webpack_require__(357);\n\t\n\tObject.defineProperty(exports, 'FooterLinkList', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_LinkList).default;\n\t }\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ },\n/* 360 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _clamp = __webpack_require__(48);\n\t\n\tvar _clamp2 = _interopRequireDefault(_clamp);\n\t\n\tvar _shadows = __webpack_require__(58);\n\t\n\tvar _shadows2 = _interopRequireDefault(_shadows);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t align: _react.PropTypes.oneOf(['top', 'middle', 'bottom', 'stretch']),\n\t className: _react.PropTypes.string,\n\t col: _react.PropTypes.number,\n\t component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.func]),\n\t phone: _react.PropTypes.number,\n\t tablet: _react.PropTypes.number,\n\t offset: _react.PropTypes.number,\n\t offsetDesktop: _react.PropTypes.number,\n\t offsetTablet: _react.PropTypes.number,\n\t offsetPhone: _react.PropTypes.number,\n\t hideDesktop: _react.PropTypes.bool,\n\t hidePhone: _react.PropTypes.bool,\n\t hideTablet: _react.PropTypes.bool,\n\t shadow: _react.PropTypes.number\n\t};\n\t\n\tfunction isDefined(data) {\n\t return typeof data !== 'undefined';\n\t}\n\t\n\tvar Cell = function Cell(props) {\n\t var _classNames;\n\t\n\t var align = props.align,\n\t className = props.className,\n\t children = props.children,\n\t col = props.col,\n\t phone = props.phone,\n\t tablet = props.tablet,\n\t component = props.component,\n\t hideDesktop = props.hideDesktop,\n\t hidePhone = props.hidePhone,\n\t hideTablet = props.hideTablet,\n\t shadow = props.shadow,\n\t offset = props.offset,\n\t offsetDesktop = props.offsetDesktop,\n\t offsetTablet = props.offsetTablet,\n\t offsetPhone = props.offsetPhone,\n\t otherProps = _objectWithoutProperties(props, ['align', 'className', 'children', 'col', 'phone', 'tablet', 'component', 'hideDesktop', 'hidePhone', 'hideTablet', 'shadow', 'offset', 'offsetDesktop', 'offsetTablet', 'offsetPhone']);\n\t\n\t var hasShadow = isDefined(shadow);\n\t var shadowLevel = (0, _clamp2.default)(shadow || 0, 0, _shadows2.default.length - 1);\n\t\n\t var classes = (0, _classnames2.default)('mdl-cell', (_classNames = {}, _defineProperty(_classNames, 'mdl-cell--' + col + '-col', isDefined(col)), _defineProperty(_classNames, 'mdl-cell--' + phone + '-col-phone', isDefined(phone)), _defineProperty(_classNames, 'mdl-cell--' + tablet + '-col-tablet', isDefined(tablet)), _defineProperty(_classNames, 'mdl-cell--' + align, isDefined(align)), _defineProperty(_classNames, 'mdl-cell--' + offset + '-offset', isDefined(offset)), _defineProperty(_classNames, 'mdl-cell--' + offsetDesktop + '-offset-desktop', isDefined(offsetDesktop)), _defineProperty(_classNames, 'mdl-cell--' + offsetTablet + '-offset-tablet', isDefined(offsetTablet)), _defineProperty(_classNames, 'mdl-cell--' + offsetPhone + '-offset-phone', isDefined(offsetPhone)), _defineProperty(_classNames, 'mdl-cell--hide-desktop', hideDesktop), _defineProperty(_classNames, 'mdl-cell--hide-phone', hidePhone), _defineProperty(_classNames, 'mdl-cell--hide-tablet', hideTablet), _defineProperty(_classNames, _shadows2.default[shadowLevel], hasShadow), _classNames), className);\n\t\n\t return _react2.default.createElement(component || 'div', _extends({\n\t className: classes\n\t }, otherProps), children);\n\t};\n\t\n\tCell.propTypes = propTypes;\n\t\n\texports.default = Cell;\n\n/***/ },\n/* 361 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _clamp = __webpack_require__(48);\n\t\n\tvar _clamp2 = _interopRequireDefault(_clamp);\n\t\n\tvar _shadows = __webpack_require__(58);\n\t\n\tvar _shadows2 = _interopRequireDefault(_shadows);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t className: _react.PropTypes.string,\n\t component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.func]),\n\t noSpacing: _react.PropTypes.bool,\n\t shadow: _react.PropTypes.number\n\t};\n\t\n\tvar Grid = function Grid(props) {\n\t var noSpacing = props.noSpacing,\n\t className = props.className,\n\t children = props.children,\n\t component = props.component,\n\t shadow = props.shadow,\n\t otherProps = _objectWithoutProperties(props, ['noSpacing', 'className', 'children', 'component', 'shadow']);\n\t\n\t var hasShadow = typeof shadow !== 'undefined';\n\t var shadowLevel = (0, _clamp2.default)(shadow || 0, 0, _shadows2.default.length - 1);\n\t\n\t var classes = (0, _classnames2.default)('mdl-grid', _defineProperty({\n\t 'mdl-grid--no-spacing': noSpacing\n\t }, _shadows2.default[shadowLevel], hasShadow), className);\n\t\n\t return _react2.default.createElement(component || 'div', _extends({\n\t className: classes\n\t }, otherProps), children);\n\t};\n\t\n\tGrid.propTypes = propTypes;\n\t\n\texports.default = Grid;\n\n/***/ },\n/* 362 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _Grid = __webpack_require__(361);\n\t\n\tObject.defineProperty(exports, 'default', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Grid).default;\n\t }\n\t});\n\tObject.defineProperty(exports, 'Grid', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Grid).default;\n\t }\n\t});\n\t\n\tvar _Cell = __webpack_require__(360);\n\t\n\tObject.defineProperty(exports, 'Cell', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Cell).default;\n\t }\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ },\n/* 363 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _Button = __webpack_require__(88);\n\t\n\tvar _Button2 = _interopRequireDefault(_Button);\n\t\n\tvar _Icon = __webpack_require__(44);\n\t\n\tvar _Icon2 = _interopRequireDefault(_Icon);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar IconButton = function IconButton(props) {\n\t var className = props.className,\n\t name = props.name,\n\t otherProps = _objectWithoutProperties(props, ['className', 'name']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-button--icon', className);\n\t\n\t return _react2.default.createElement(\n\t _Button2.default,\n\t _extends({ className: classes }, otherProps),\n\t _react2.default.createElement(_Icon2.default, { name: name })\n\t );\n\t};\n\t\n\tIconButton.propTypes = {\n\t className: _react.PropTypes.string,\n\t name: _react.PropTypes.string.isRequired\n\t};\n\t\n\texports.default = IconButton;\n\n/***/ },\n/* 364 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(13);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _Icon = __webpack_require__(44);\n\t\n\tvar _Icon2 = _interopRequireDefault(_Icon);\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t checked: _react.PropTypes.bool,\n\t className: _react.PropTypes.string,\n\t disabled: _react.PropTypes.bool,\n\t name: _react.PropTypes.string.isRequired,\n\t onChange: _react.PropTypes.func,\n\t ripple: _react.PropTypes.bool\n\t};\n\t\n\tvar IconToggle = function (_React$Component) {\n\t _inherits(IconToggle, _React$Component);\n\t\n\t function IconToggle() {\n\t _classCallCheck(this, IconToggle);\n\t\n\t return _possibleConstructorReturn(this, (IconToggle.__proto__ || Object.getPrototypeOf(IconToggle)).apply(this, arguments));\n\t }\n\t\n\t _createClass(IconToggle, [{\n\t key: 'componentDidUpdate',\n\t value: function componentDidUpdate(prevProps) {\n\t if (this.props.disabled !== prevProps.disabled) {\n\t var fnName = this.props.disabled ? 'disable' : 'enable';\n\t (0, _reactDom.findDOMNode)(this).MaterialIconToggle[fnName]();\n\t }\n\t if (this.props.checked !== prevProps.checked) {\n\t var _fnName = this.props.checked ? 'check' : 'uncheck';\n\t (0, _reactDom.findDOMNode)(this).MaterialIconToggle[_fnName]();\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t className = _props.className,\n\t name = _props.name,\n\t ripple = _props.ripple,\n\t inputProps = _objectWithoutProperties(_props, ['className', 'name', 'ripple']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-icon-toggle mdl-js-icon-toggle', {\n\t 'mdl-js-ripple-effect': ripple\n\t }, className);\n\t\n\t return _react2.default.createElement(\n\t 'label',\n\t { className: classes },\n\t _react2.default.createElement('input', _extends({\n\t type: 'checkbox',\n\t className: 'mdl-icon-toggle__input'\n\t }, inputProps)),\n\t _react2.default.createElement(_Icon2.default, { className: 'mdl-icon-toggle__label', name: name })\n\t );\n\t }\n\t }]);\n\t\n\t return IconToggle;\n\t}(_react2.default.Component);\n\t\n\tIconToggle.propTypes = propTypes;\n\t\n\texports.default = (0, _mdlUpgrade2.default)(IconToggle, true);\n\n/***/ },\n/* 365 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar Content = function Content(props) {\n\t var children = props.children,\n\t className = props.className,\n\t component = props.component,\n\t otherProps = _objectWithoutProperties(props, ['children', 'className', 'component']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-layout__content', className);\n\t\n\t return _react2.default.createElement(component || 'div', _extends({\n\t className: classes\n\t }, otherProps), children);\n\t};\n\t\n\tContent.propTypes = {\n\t className: _react.PropTypes.string,\n\t component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.func])\n\t};\n\t\n\texports.default = Content;\n\n/***/ },\n/* 366 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar Drawer = function Drawer(props) {\n\t var className = props.className,\n\t title = props.title,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'title', 'children']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-layout__drawer', className);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ className: classes }, otherProps),\n\t title ? _react2.default.createElement(\n\t 'span',\n\t { className: 'mdl-layout-title' },\n\t title\n\t ) : null,\n\t children\n\t );\n\t};\n\tDrawer.propTypes = {\n\t className: _react.PropTypes.string,\n\t title: _react.PropTypes.node\n\t};\n\t\n\texports.default = Drawer;\n\n/***/ },\n/* 367 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _HeaderRow = __webpack_require__(139);\n\t\n\tvar _HeaderRow2 = _interopRequireDefault(_HeaderRow);\n\t\n\tvar _HeaderTabs = __webpack_require__(140);\n\t\n\tvar _HeaderTabs2 = _interopRequireDefault(_HeaderTabs);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar Header = function Header(props) {\n\t var className = props.className,\n\t scroll = props.scroll,\n\t seamed = props.seamed,\n\t title = props.title,\n\t transparent = props.transparent,\n\t waterfall = props.waterfall,\n\t hideTop = props.hideTop,\n\t hideSpacer = props.hideSpacer,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'scroll', 'seamed', 'title', 'transparent', 'waterfall', 'hideTop', 'hideSpacer', 'children']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-layout__header', {\n\t 'mdl-layout__header--scroll': scroll,\n\t 'mdl-layout__header--seamed': seamed,\n\t 'mdl-layout__header--transparent': transparent,\n\t 'mdl-layout__header--waterfall': waterfall,\n\t 'mdl-layout__header--waterfall-hide-top': waterfall && hideTop\n\t }, className);\n\t\n\t var isRowOrTab = false;\n\t _react2.default.Children.forEach(children, function (child) {\n\t if (child && (child.type === _HeaderRow2.default || child.type === _HeaderTabs2.default)) {\n\t isRowOrTab = true;\n\t }\n\t });\n\t\n\t return _react2.default.createElement(\n\t 'header',\n\t _extends({ className: classes }, otherProps),\n\t isRowOrTab ? children : _react2.default.createElement(\n\t _HeaderRow2.default,\n\t { title: title, hideSpacer: hideSpacer },\n\t children\n\t )\n\t );\n\t};\n\tHeader.propTypes = {\n\t className: _react.PropTypes.string,\n\t scroll: _react.PropTypes.bool,\n\t seamed: _react.PropTypes.bool,\n\t title: _react.PropTypes.node,\n\t transparent: _react.PropTypes.bool,\n\t waterfall: _react.PropTypes.bool,\n\t hideTop: _react.PropTypes.bool,\n\t hideSpacer: _react.PropTypes.bool\n\t};\n\t\n\texports.default = Header;\n\n/***/ },\n/* 368 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t className: _react.PropTypes.string,\n\t fixedDrawer: _react.PropTypes.bool,\n\t fixedHeader: _react.PropTypes.bool,\n\t fixedTabs: _react.PropTypes.bool\n\t};\n\t\n\t// eslint-disable-next-line react/prefer-stateless-function\n\t\n\tvar Layout = function (_React$Component) {\n\t _inherits(Layout, _React$Component);\n\t\n\t function Layout() {\n\t _classCallCheck(this, Layout);\n\t\n\t return _possibleConstructorReturn(this, (Layout.__proto__ || Object.getPrototypeOf(Layout)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Layout, [{\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t className = _props.className,\n\t fixedDrawer = _props.fixedDrawer,\n\t fixedHeader = _props.fixedHeader,\n\t fixedTabs = _props.fixedTabs,\n\t otherProps = _objectWithoutProperties(_props, ['className', 'fixedDrawer', 'fixedHeader', 'fixedTabs']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-layout mdl-js-layout', {\n\t 'mdl-layout--fixed-drawer': fixedDrawer,\n\t 'mdl-layout--fixed-header': fixedHeader,\n\t 'mdl-layout--fixed-tabs': fixedTabs\n\t }, className);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ className: classes }, otherProps),\n\t _react2.default.createElement(\n\t 'div',\n\t { className: 'mdl-layout__inner-container' },\n\t this.props.children\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return Layout;\n\t}(_react2.default.Component);\n\t\n\tLayout.propTypes = propTypes;\n\t\n\texports.default = (0, _mdlUpgrade2.default)(Layout, true);\n\n/***/ },\n/* 369 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _cloneChildren = __webpack_require__(57);\n\t\n\tvar _cloneChildren2 = _interopRequireDefault(_cloneChildren);\n\t\n\tvar _Spacer = __webpack_require__(89);\n\t\n\tvar _Spacer2 = _interopRequireDefault(_Spacer);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar Navigation = function Navigation(props) {\n\t var className = props.className,\n\t children = props.children,\n\t otherProps = _objectWithoutProperties(props, ['className', 'children']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-navigation', className);\n\t\n\t return _react2.default.createElement(\n\t 'nav',\n\t _extends({ className: classes }, otherProps),\n\t (0, _cloneChildren2.default)(children, function (child) {\n\t return {\n\t className: (0, _classnames2.default)({ 'mdl-navigation__link': child.type !== _Spacer2.default }, child.props.className)\n\t };\n\t })\n\t );\n\t};\n\tNavigation.propTypes = {\n\t className: _react.PropTypes.string\n\t};\n\t\n\texports.default = Navigation;\n\n/***/ },\n/* 370 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _Layout = __webpack_require__(368);\n\t\n\tObject.defineProperty(exports, 'Layout', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Layout).default;\n\t }\n\t});\n\t\n\tvar _Content = __webpack_require__(365);\n\t\n\tObject.defineProperty(exports, 'Content', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Content).default;\n\t }\n\t});\n\t\n\tvar _Drawer = __webpack_require__(366);\n\t\n\tObject.defineProperty(exports, 'Drawer', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Drawer).default;\n\t }\n\t});\n\t\n\tvar _Header = __webpack_require__(367);\n\t\n\tObject.defineProperty(exports, 'Header', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Header).default;\n\t }\n\t});\n\t\n\tvar _HeaderRow = __webpack_require__(139);\n\t\n\tObject.defineProperty(exports, 'HeaderRow', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_HeaderRow).default;\n\t }\n\t});\n\t\n\tvar _HeaderTabs = __webpack_require__(140);\n\t\n\tObject.defineProperty(exports, 'HeaderTabs', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_HeaderTabs).default;\n\t }\n\t});\n\t\n\tvar _Navigation = __webpack_require__(369);\n\t\n\tObject.defineProperty(exports, 'Navigation', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Navigation).default;\n\t }\n\t});\n\t\n\tvar _Spacer = __webpack_require__(89);\n\t\n\tObject.defineProperty(exports, 'Spacer', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Spacer).default;\n\t }\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ },\n/* 371 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _ListItemContent = __webpack_require__(141);\n\t\n\tvar _ListItemContent2 = _interopRequireDefault(_ListItemContent);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t children: _react.PropTypes.node,\n\t className: _react.PropTypes.string,\n\t twoLine: _react.PropTypes.bool,\n\t threeLine: _react.PropTypes.bool\n\t};\n\t\n\tvar ListItem = function ListItem(props) {\n\t var className = props.className,\n\t twoLine = props.twoLine,\n\t threeLine = props.threeLine,\n\t otherProps = _objectWithoutProperties(props, ['className', 'twoLine', 'threeLine']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-list__item', {\n\t 'mdl-list__item--two-line': twoLine && !threeLine,\n\t 'mdl-list__item--three-line': !twoLine && threeLine\n\t }, className);\n\t\n\t var children = _react.Children.map(otherProps.children, function (child) {\n\t if (typeof child === 'string') {\n\t return _react2.default.createElement(\n\t _ListItemContent2.default,\n\t null,\n\t child\n\t );\n\t }\n\t if (child.type === _ListItemContent2.default) {\n\t return (0, _react.cloneElement)(child, {\n\t useBodyClass: !!threeLine\n\t });\n\t }\n\t return child;\n\t });\n\t\n\t return _react2.default.createElement(\n\t 'li',\n\t _extends({ className: classes }, otherProps),\n\t children\n\t );\n\t};\n\t\n\tListItem.propTypes = propTypes;\n\t\n\texports.default = ListItem;\n\n/***/ },\n/* 372 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar propTypes = {\n\t children: _react.PropTypes.node,\n\t className: _react.PropTypes.string,\n\t info: _react.PropTypes.string\n\t};\n\t\n\tvar ListItemAction = function ListItemAction(props) {\n\t var children = props.children,\n\t className = props.className,\n\t info = props.info,\n\t otherProps = _objectWithoutProperties(props, ['children', 'className', 'info']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-list__item-secondary-content', className);\n\t\n\t return _react2.default.createElement(\n\t 'span',\n\t _extends({ className: classes }, otherProps),\n\t info && _react2.default.createElement(\n\t 'span',\n\t { className: 'mdl-list__item-secondary-info' },\n\t info\n\t ),\n\t _react2.default.createElement(\n\t 'span',\n\t { className: 'mdl-list__item-secondary-action' },\n\t children\n\t )\n\t );\n\t};\n\t\n\tListItemAction.propTypes = propTypes;\n\t\n\texports.default = ListItemAction;\n\n/***/ },\n/* 373 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.ListItemContent = exports.ListItemAction = exports.ListItem = exports.List = undefined;\n\t\n\tvar _ListItem = __webpack_require__(371);\n\t\n\tObject.defineProperty(exports, 'ListItem', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_ListItem).default;\n\t }\n\t});\n\t\n\tvar _ListItemAction = __webpack_require__(372);\n\t\n\tObject.defineProperty(exports, 'ListItemAction', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_ListItemAction).default;\n\t }\n\t});\n\t\n\tvar _ListItemContent = __webpack_require__(141);\n\t\n\tObject.defineProperty(exports, 'ListItemContent', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_ListItemContent).default;\n\t }\n\t});\n\t\n\tvar _basicClassCreator = __webpack_require__(33);\n\t\n\tvar _basicClassCreator2 = _interopRequireDefault(_basicClassCreator);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar List = exports.List = (0, _basicClassCreator2.default)('List', 'mdl-list', 'ul');\n\n/***/ },\n/* 374 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.MenuItem = undefined;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(13);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _basicClassCreator = __webpack_require__(33);\n\t\n\tvar _basicClassCreator2 = _interopRequireDefault(_basicClassCreator);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t align: _react.PropTypes.oneOf(['left', 'right']),\n\t className: _react.PropTypes.string,\n\t ripple: _react.PropTypes.bool,\n\t target: _react.PropTypes.string.isRequired,\n\t valign: _react.PropTypes.oneOf(['bottom', 'top'])\n\t};\n\t\n\tvar defaultProps = {\n\t align: 'left',\n\t valign: 'bottom'\n\t};\n\t\n\t// eslint-disable-next-line react/prefer-stateless-function\n\t\n\tvar Menu = function (_React$Component) {\n\t _inherits(Menu, _React$Component);\n\t\n\t function Menu() {\n\t _classCallCheck(this, Menu);\n\t\n\t return _possibleConstructorReturn(this, (Menu.__proto__ || Object.getPrototypeOf(Menu)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Menu, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t window.componentHandler.upgradeElements((0, _reactDom.findDOMNode)(this));\n\t }\n\t }, {\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t var elt = (0, _reactDom.findDOMNode)(this);\n\t\n\t window.componentHandler.downgradeElements(elt);\n\t\n\t var parent = elt.parentElement;\n\t var grandparent = parent && parent.parentElement;\n\t\n\t if (parent && grandparent && parent.classList.contains('mdl-menu__container')) {\n\t grandparent.replaceChild(elt, parent);\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _classNames;\n\t\n\t var _props = this.props,\n\t align = _props.align,\n\t children = _props.children,\n\t className = _props.className,\n\t ripple = _props.ripple,\n\t target = _props.target,\n\t valign = _props.valign,\n\t otherProps = _objectWithoutProperties(_props, ['align', 'children', 'className', 'ripple', 'target', 'valign']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-menu mdl-js-menu', (_classNames = {}, _defineProperty(_classNames, 'mdl-menu--' + valign + '-' + align, true), _defineProperty(_classNames, 'mdl-js-ripple-effect', ripple), _classNames), className);\n\t\n\t return _react2.default.createElement(\n\t 'ul',\n\t _extends({ className: classes, 'data-mdl-for': target }, otherProps),\n\t children\n\t );\n\t }\n\t }]);\n\t\n\t return Menu;\n\t}(_react2.default.Component);\n\t\n\tMenu.propTypes = propTypes;\n\tMenu.defaultProps = defaultProps;\n\t\n\texports.default = Menu;\n\tvar MenuItem = exports.MenuItem = (0, _basicClassCreator2.default)('MenuItem', 'mdl-menu__item', 'li');\n\n/***/ },\n/* 375 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(13);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t buffer: _react.PropTypes.number,\n\t className: _react.PropTypes.string,\n\t indeterminate: _react.PropTypes.bool,\n\t progress: _react.PropTypes.number\n\t};\n\t\n\tvar ProgressBar = function (_React$Component) {\n\t _inherits(ProgressBar, _React$Component);\n\t\n\t function ProgressBar() {\n\t _classCallCheck(this, ProgressBar);\n\t\n\t return _possibleConstructorReturn(this, (ProgressBar.__proto__ || Object.getPrototypeOf(ProgressBar)).apply(this, arguments));\n\t }\n\t\n\t _createClass(ProgressBar, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t this.setProgress(this.props.progress);\n\t this.setBuffer(this.props.buffer);\n\t }\n\t }, {\n\t key: 'componentDidUpdate',\n\t value: function componentDidUpdate() {\n\t this.setProgress(this.props.progress);\n\t this.setBuffer(this.props.buffer);\n\t }\n\t }, {\n\t key: 'setProgress',\n\t value: function setProgress(progress) {\n\t if (!this.props.indeterminate && progress !== undefined) {\n\t (0, _reactDom.findDOMNode)(this).MaterialProgress.setProgress(progress);\n\t }\n\t }\n\t }, {\n\t key: 'setBuffer',\n\t value: function setBuffer(buffer) {\n\t if (buffer !== undefined) {\n\t (0, _reactDom.findDOMNode)(this).MaterialProgress.setBuffer(buffer);\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t className = _props.className,\n\t indeterminate = _props.indeterminate,\n\t buffer = _props.buffer,\n\t progress = _props.progress,\n\t otherProps = _objectWithoutProperties(_props, ['className', 'indeterminate', 'buffer', 'progress']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-progress mdl-js-progress', {\n\t 'mdl-progress__indeterminate': indeterminate\n\t }, className);\n\t\n\t return _react2.default.createElement('div', _extends({ className: classes }, otherProps));\n\t }\n\t }]);\n\t\n\t return ProgressBar;\n\t}(_react2.default.Component);\n\t\n\tProgressBar.propTypes = propTypes;\n\t\n\texports.default = (0, _mdlUpgrade2.default)(ProgressBar);\n\n/***/ },\n/* 376 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _Radio = __webpack_require__(142);\n\t\n\tvar _Radio2 = _interopRequireDefault(_Radio);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar RadioGroup = function RadioGroup(props) {\n\t var name = props.name,\n\t value = props.value,\n\t children = props.children,\n\t container = props.container,\n\t childContainer = props.childContainer,\n\t onChange = props.onChange,\n\t otherProps = _objectWithoutProperties(props, ['name', 'value', 'children', 'container', 'childContainer', 'onChange']);\n\t\n\t var hasOnChange = typeof onChange === 'function';\n\t var checked = hasOnChange ? 'checked' : 'defaultChecked';\n\t\n\t return _react2.default.createElement(container, otherProps, _react2.default.Children.map(children, function (child) {\n\t var _extends2;\n\t\n\t var clonedChild = _react2.default.cloneElement(child, _extends((_extends2 = {}, _defineProperty(_extends2, checked, child.props.value === value), _defineProperty(_extends2, 'name', name), _defineProperty(_extends2, 'onChange', onChange), _extends2), otherProps));\n\t\n\t return childContainer ? _react2.default.createElement(childContainer, {}, clonedChild) : clonedChild;\n\t }));\n\t};\n\t\n\tRadioGroup.propTypes = {\n\t childContainer: _react.PropTypes.string,\n\t children: _react.PropTypes.arrayOf(function (props, propName, componentName) {\n\t var prop = props[propName];\n\t return prop.type !== _Radio2.default && new Error('\\'' + componentName + '\\' only accepts \\'Radio\\' as children.');\n\t }),\n\t container: _react.PropTypes.string,\n\t name: _react.PropTypes.string.isRequired,\n\t onChange: _react.PropTypes.func,\n\t value: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]).isRequired\n\t};\n\t\n\tRadioGroup.defaultProps = {\n\t container: 'div'\n\t};\n\t\n\texports.default = RadioGroup;\n\n/***/ },\n/* 377 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(13);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t className: _react.PropTypes.string,\n\t max: _react.PropTypes.number.isRequired,\n\t min: _react.PropTypes.number.isRequired,\n\t onChange: _react.PropTypes.func,\n\t value: _react.PropTypes.number\n\t};\n\t\n\tvar Slider = function (_React$Component) {\n\t _inherits(Slider, _React$Component);\n\t\n\t function Slider() {\n\t _classCallCheck(this, Slider);\n\t\n\t return _possibleConstructorReturn(this, (Slider.__proto__ || Object.getPrototypeOf(Slider)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Slider, [{\n\t key: 'componentDidUpdate',\n\t value: function componentDidUpdate() {\n\t if (typeof this.props.value !== 'undefined') {\n\t (0, _reactDom.findDOMNode)(this).MaterialSlider.change(this.props.value);\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t className = _props.className,\n\t otherProps = _objectWithoutProperties(_props, ['className']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-slider mdl-js-slider', className);\n\t\n\t return _react2.default.createElement('input', _extends({\n\t className: classes,\n\t type: 'range'\n\t }, otherProps));\n\t }\n\t }]);\n\t\n\t return Slider;\n\t}(_react2.default.Component);\n\t\n\tSlider.propTypes = propTypes;\n\t\n\texports.default = (0, _mdlUpgrade2.default)(Slider);\n\n/***/ },\n/* 378 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\t// This component doesn't use the javascript from MDL.\n\t// This is the expected behavior and the reason is because it's not written in\n\t// a way to make it easy to use with React.\n\tvar ANIMATION_LENGTH = 250;\n\t\n\tvar propTypes = {\n\t action: _react.PropTypes.string,\n\t active: _react.PropTypes.bool.isRequired,\n\t className: _react.PropTypes.string,\n\t onActionClick: _react.PropTypes.func,\n\t onTimeout: _react.PropTypes.func.isRequired,\n\t timeout: _react.PropTypes.number\n\t};\n\t\n\tvar defaultProps = {\n\t timeout: 2750\n\t};\n\t\n\tvar Snackbar = function (_React$Component) {\n\t _inherits(Snackbar, _React$Component);\n\t\n\t function Snackbar(props) {\n\t _classCallCheck(this, Snackbar);\n\t\n\t var _this = _possibleConstructorReturn(this, (Snackbar.__proto__ || Object.getPrototypeOf(Snackbar)).call(this, props));\n\t\n\t _this.clearTimer = _this.clearTimer.bind(_this);\n\t _this.timeoutId = null;\n\t _this.clearTimeoutId = null;\n\t _this.state = {\n\t open: false\n\t };\n\t return _this;\n\t }\n\t\n\t _createClass(Snackbar, [{\n\t key: 'componentWillReceiveProps',\n\t value: function componentWillReceiveProps(nextProps) {\n\t this.setState({\n\t open: nextProps.active\n\t });\n\t }\n\t }, {\n\t key: 'componentDidUpdate',\n\t value: function componentDidUpdate() {\n\t if (this.timeoutId) {\n\t clearTimeout(this.timeoutId);\n\t }\n\t\n\t if (this.props.active) {\n\t this.timeoutId = setTimeout(this.clearTimer, this.props.timeout);\n\t }\n\t }\n\t }, {\n\t key: 'componentWillUnmount',\n\t value: function componentWillUnmount() {\n\t if (this.timeoutId) {\n\t clearTimeout(this.timeoutId);\n\t this.timeoutId = null;\n\t }\n\t if (this.clearTimeoutId) {\n\t clearTimeout(this.clearTimeoutId);\n\t this.clearTimeoutId = null;\n\t }\n\t }\n\t }, {\n\t key: 'clearTimer',\n\t value: function clearTimer() {\n\t var _this2 = this;\n\t\n\t this.timeoutId = null;\n\t this.setState({ open: false });\n\t\n\t this.clearTimeoutId = setTimeout(function () {\n\t _this2.clearTimeoutId = null;\n\t _this2.props.onTimeout();\n\t }, ANIMATION_LENGTH);\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t action = _props.action,\n\t active = _props.active,\n\t className = _props.className,\n\t children = _props.children,\n\t onActionClick = _props.onActionClick,\n\t otherProps = _objectWithoutProperties(_props, ['action', 'active', 'className', 'children', 'onActionClick']);\n\t\n\t var open = this.state.open;\n\t\n\t\n\t var classes = (0, _classnames2.default)('mdl-snackbar', {\n\t 'mdl-snackbar--active': open\n\t }, className);\n\t\n\t delete otherProps.onTimeout;\n\t delete otherProps.timeout;\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ className: classes, 'aria-hidden': !open }, otherProps),\n\t _react2.default.createElement(\n\t 'div',\n\t { className: 'mdl-snackbar__text' },\n\t active && children\n\t ),\n\t active && action && _react2.default.createElement(\n\t 'button',\n\t { className: 'mdl-snackbar__action', type: 'button', onClick: onActionClick },\n\t action\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return Snackbar;\n\t}(_react2.default.Component);\n\t\n\tSnackbar.propTypes = propTypes;\n\tSnackbar.defaultProps = defaultProps;\n\t\n\texports.default = Snackbar;\n\n/***/ },\n/* 379 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t className: _react.PropTypes.string,\n\t singleColor: _react.PropTypes.bool\n\t};\n\t\n\t// eslint-disable-next-line react/prefer-stateless-function\n\t\n\tvar Spinner = function (_React$Component) {\n\t _inherits(Spinner, _React$Component);\n\t\n\t function Spinner() {\n\t _classCallCheck(this, Spinner);\n\t\n\t return _possibleConstructorReturn(this, (Spinner.__proto__ || Object.getPrototypeOf(Spinner)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Spinner, [{\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t className = _props.className,\n\t singleColor = _props.singleColor,\n\t otherProps = _objectWithoutProperties(_props, ['className', 'singleColor']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-spinner mdl-js-spinner is-active', {\n\t 'mdl-spinner--single-color': singleColor\n\t }, className);\n\t\n\t return _react2.default.createElement('div', _extends({ className: classes }, otherProps));\n\t }\n\t }]);\n\t\n\t return Spinner;\n\t}(_react2.default.Component);\n\t\n\tSpinner.propTypes = propTypes;\n\t\n\texports.default = (0, _mdlUpgrade2.default)(Spinner);\n\n/***/ },\n/* 380 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(13);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t checked: _react.PropTypes.bool,\n\t className: _react.PropTypes.string,\n\t disabled: _react.PropTypes.bool,\n\t onChange: _react.PropTypes.func,\n\t ripple: _react.PropTypes.bool\n\t};\n\t\n\tvar Switch = function (_React$Component) {\n\t _inherits(Switch, _React$Component);\n\t\n\t function Switch() {\n\t _classCallCheck(this, Switch);\n\t\n\t return _possibleConstructorReturn(this, (Switch.__proto__ || Object.getPrototypeOf(Switch)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Switch, [{\n\t key: 'componentDidUpdate',\n\t value: function componentDidUpdate(prevProps) {\n\t if (this.props.disabled !== prevProps.disabled) {\n\t var fnName = this.props.disabled ? 'disable' : 'enable';\n\t (0, _reactDom.findDOMNode)(this).MaterialSwitch[fnName]();\n\t }\n\t if (this.props.checked !== prevProps.checked) {\n\t var _fnName = this.props.checked ? 'on' : 'off';\n\t (0, _reactDom.findDOMNode)(this).MaterialSwitch[_fnName]();\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _props = this.props,\n\t className = _props.className,\n\t ripple = _props.ripple,\n\t children = _props.children,\n\t inputProps = _objectWithoutProperties(_props, ['className', 'ripple', 'children']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-switch mdl-js-switch', {\n\t 'mdl-js-ripple-effect': ripple\n\t }, className);\n\t\n\t return _react2.default.createElement(\n\t 'label',\n\t { className: classes },\n\t _react2.default.createElement('input', _extends({\n\t type: 'checkbox',\n\t className: 'mdl-switch__input'\n\t }, inputProps)),\n\t _react2.default.createElement(\n\t 'span',\n\t { className: 'mdl-switch__label' },\n\t children\n\t )\n\t );\n\t }\n\t }]);\n\t\n\t return Switch;\n\t}(_react2.default.Component);\n\t\n\tSwitch.propTypes = propTypes;\n\t\n\texports.default = (0, _mdlUpgrade2.default)(Switch, true);\n\n/***/ },\n/* 381 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _Tab = __webpack_require__(143);\n\t\n\tvar _Tab2 = _interopRequireDefault(_Tab);\n\t\n\tvar _TabBar = __webpack_require__(90);\n\t\n\tvar _TabBar2 = _interopRequireDefault(_TabBar);\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar TabPropType = function TabPropType(props, propName, componentName) {\n\t var prop = props[propName];\n\t return prop.type !== _Tab2.default && new Error('\\'' + componentName + '\\' only accepts \\'Tab\\' as children.');\n\t};\n\t\n\tvar propTypes = {\n\t activeTab: _react.PropTypes.number,\n\t children: _react.PropTypes.oneOfType([TabPropType, _react.PropTypes.arrayOf(TabPropType)]),\n\t className: _react.PropTypes.string,\n\t onChange: _react.PropTypes.func,\n\t tabBarProps: _react.PropTypes.object,\n\t ripple: _react.PropTypes.bool\n\t};\n\t\n\tvar Tabs = function Tabs(props) {\n\t var activeTab = props.activeTab,\n\t className = props.className,\n\t onChange = props.onChange,\n\t children = props.children,\n\t tabBarProps = props.tabBarProps,\n\t ripple = props.ripple,\n\t otherProps = _objectWithoutProperties(props, ['activeTab', 'className', 'onChange', 'children', 'tabBarProps', 'ripple']);\n\t\n\t var classes = (0, _classnames2.default)('mdl-tabs mdl-js-tabs', {\n\t 'mdl-js-ripple-effect': ripple\n\t }, className);\n\t\n\t return _react2.default.createElement(\n\t 'div',\n\t _extends({ className: classes }, otherProps),\n\t _react2.default.createElement(\n\t _TabBar2.default,\n\t _extends({ cssPrefix: 'mdl-tabs', activeTab: activeTab, onChange: onChange }, tabBarProps),\n\t children\n\t )\n\t );\n\t};\n\t\n\tTabs.propTypes = propTypes;\n\t\n\texports.default = (0, _mdlUpgrade2.default)(Tabs, true);\n\n/***/ },\n/* 382 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _Tabs = __webpack_require__(381);\n\t\n\tObject.defineProperty(exports, 'Tabs', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Tabs).default;\n\t }\n\t});\n\t\n\tvar _TabBar = __webpack_require__(90);\n\t\n\tObject.defineProperty(exports, 'TabBar', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_TabBar).default;\n\t }\n\t});\n\t\n\tvar _Tab = __webpack_require__(143);\n\t\n\tObject.defineProperty(exports, 'Tab', {\n\t enumerable: true,\n\t get: function get() {\n\t return _interopRequireDefault(_Tab).default;\n\t }\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/***/ },\n/* 383 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _reactDom = __webpack_require__(13);\n\t\n\tvar _classnames = __webpack_require__(2);\n\t\n\tvar _classnames2 = _interopRequireDefault(_classnames);\n\t\n\tvar _mdlUpgrade = __webpack_require__(14);\n\t\n\tvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar propTypes = {\n\t className: _react.PropTypes.string,\n\t disabled: _react.PropTypes.bool,\n\t error: _react.PropTypes.node,\n\t expandable: _react.PropTypes.bool,\n\t expandableIcon: _react.PropTypes.string,\n\t floatingLabel: _react.PropTypes.bool,\n\t id: _react.PropTypes.string,\n\t inputClassName: _react.PropTypes.string,\n\t label: _react.PropTypes.string.isRequired,\n\t maxRows: _react.PropTypes.number,\n\t onChange: _react.PropTypes.func,\n\t pattern: _react.PropTypes.string,\n\t required: _react.PropTypes.bool,\n\t rows: _react.PropTypes.number,\n\t style: _react.PropTypes.object,\n\t value: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number])\n\t};\n\t\n\tvar Textfield = function (_React$Component) {\n\t _inherits(Textfield, _React$Component);\n\t\n\t function Textfield() {\n\t _classCallCheck(this, Textfield);\n\t\n\t return _possibleConstructorReturn(this, (Textfield.__proto__ || Object.getPrototypeOf(Textfield)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Textfield, [{\n\t key: 'componentDidMount',\n\t value: function componentDidMount() {\n\t if (this.props.error && !this.props.pattern) {\n\t this.setAsInvalid();\n\t }\n\t }\n\t }, {\n\t key: 'componentDidUpdate',\n\t value: function componentDidUpdate(prevProps) {\n\t if (this.props.required !== prevProps.required || this.props.pattern !== prevProps.pattern || this.props.error !== prevProps.error) {\n\t (0, _reactDom.findDOMNode)(this).MaterialTextfield.checkValidity();\n\t }\n\t if (this.props.disabled !== prevProps.disabled) {\n\t (0, _reactDom.findDOMNode)(this).MaterialTextfield.checkDisabled();\n\t }\n\t if (this.props.value !== prevProps.value && this.inputRef !== document.activeElement) {\n\t (0, _reactDom.findDOMNode)(this).MaterialTextfield.change(this.props.value);\n\t }\n\t if (this.props.error && !this.props.pattern) {\n\t // Every time the input gets updated by MDL (checkValidity() or change())\n\t // its invalid class gets reset. We have to put it again if the input is specifically set as \"invalid\"\n\t this.setAsInvalid();\n\t }\n\t }\n\t }, {\n\t key: 'setAsInvalid',\n\t value: function setAsInvalid() {\n\t var elt = (0, _reactDom.findDOMNode)(this);\n\t if (elt.className.indexOf('is-invalid') < 0) {\n\t elt.className = (0, _classnames2.default)(elt.className, 'is-invalid');\n\t }\n\t }\n\t }, {\n\t key: 'render',\n\t value: function render() {\n\t var _this2 = this;\n\t\n\t var _props = this.props,\n\t className = _props.className,\n\t inputClassName = _props.inputClassName,\n\t id = _props.id,\n\t error = _props.error,\n\t expandable = _props.expandable,\n\t expandableIcon = _props.expandableIcon,\n\t floatingLabel = _props.floatingLabel,\n\t label = _props.label,\n\t maxRows = _props.maxRows,\n\t rows = _props.rows,\n\t style = _props.style,\n\t children = _props.children,\n\t otherProps = _objectWithoutProperties(_props, ['className', 'inputClassName', 'id', 'error', 'expandable', 'expandableIcon', 'floatingLabel', 'label', 'maxRows', 'rows', 'style', 'children']);\n\t\n\t var hasRows = !!rows;\n\t var customId = id || 'textfield-' + label.replace(/[^a-z0-9]/gi, '');\n\t var inputTag = hasRows || maxRows > 1 ? 'textarea' : 'input';\n\t\n\t var inputProps = _extends({\n\t className: (0, _classnames2.default)('mdl-textfield__input', inputClassName),\n\t id: customId,\n\t rows: rows,\n\t ref: function ref(c) {\n\t return _this2.inputRef = c;\n\t }\n\t }, otherProps);\n\t\n\t var input = _react2.default.createElement(inputTag, inputProps);\n\t var labelContainer = _react2.default.createElement(\n\t 'label',\n\t { className: 'mdl-textfield__label', htmlFor: customId },\n\t label\n\t );\n\t var errorContainer = !!error && _react2.default.createElement(\n\t 'span',\n\t { className: 'mdl-textfield__error' },\n\t error\n\t );\n\t\n\t var containerClasses = (0, _classnames2.default)('mdl-textfield mdl-js-textfield', {\n\t 'mdl-textfield--floating-label': floatingLabel,\n\t 'mdl-textfield--expandable': expandable\n\t }, className);\n\t\n\t return expandable ? _react2.default.createElement(\n\t 'div',\n\t { className: containerClasses, style: style },\n\t _react2.default.createElement(\n\t 'label',\n\t { className: 'mdl-button mdl-js-button mdl-button--icon', htmlFor: customId },\n\t _react2.default.createElement(\n\t 'i',\n\t { className: 'material-icons' },\n\t expandableIcon\n\t )\n\t ),\n\t _react2.default.createElement(\n\t 'div',\n\t { className: 'mdl-textfield__expandable-holder' },\n\t input,\n\t labelContainer,\n\t errorContainer\n\t ),\n\t children\n\t ) : _react2.default.createElement(\n\t 'div',\n\t { className: containerClasses, style: style },\n\t input,\n\t labelContainer,\n\t errorContainer,\n\t children\n\t );\n\t }\n\t }]);\n\t\n\t return Textfield;\n\t}(_react2.default.Component);\n\t\n\tTextfield.propTypes = propTypes;\n\t\n\texports.default = (0, _mdlUpgrade2.default)(Textfield);\n\n/***/ },\n/* 384 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.getColorClass = getColorClass;\n\texports.getTextColorClass = getTextColorClass;\n\t// see https://github.com/google/material-design-lite/blob/master/src/palette/_palette.scss\n\t// for the color and level possibilities\n\t\n\tfunction getColorClass(color, level) {\n\t var lvlClass = level ? '-' + level : '';\n\t return 'mdl-color--' + color + lvlClass;\n\t}\n\t\n\tfunction getTextColorClass(color, level) {\n\t var lvlClass = level ? '-' + level : '';\n\t return 'mdl-color-text--' + color + lvlClass;\n\t}\n\n/***/ },\n/* 385 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar React = __webpack_require__(1);\n\tvar ReactDOM = __webpack_require__(13);\n\tvar ExecutionEnvironment = __webpack_require__(241);\n\tvar ModalPortal = React.createFactory(__webpack_require__(386));\n\tvar ariaAppHider = __webpack_require__(387);\n\tvar elementClass = __webpack_require__(240);\n\tvar renderSubtreeIntoContainer = __webpack_require__(13).unstable_renderSubtreeIntoContainer;\n\tvar Assign = __webpack_require__(116);\n\t\n\tvar SafeHTMLElement = ExecutionEnvironment.canUseDOM ? window.HTMLElement : {};\n\tvar AppElement = ExecutionEnvironment.canUseDOM ? document.body : {appendChild: function() {}};\n\t\n\tfunction getParentElement(parentSelector) {\n\t return parentSelector();\n\t}\n\t\n\tvar Modal = React.createClass({\n\t\n\t displayName: 'Modal',\n\t statics: {\n\t setAppElement: function(element) {\n\t AppElement = ariaAppHider.setElement(element);\n\t },\n\t injectCSS: function() {\n\t \"production\" !== (\"production\")\n\t && console.warn('React-Modal: injectCSS has been deprecated ' +\n\t 'and no longer has any effect. It will be removed in a later version');\n\t }\n\t },\n\t\n\t propTypes: {\n\t isOpen: React.PropTypes.bool.isRequired,\n\t style: React.PropTypes.shape({\n\t content: React.PropTypes.object,\n\t overlay: React.PropTypes.object\n\t }),\n\t portalClassName: React.PropTypes.string,\n\t appElement: React.PropTypes.instanceOf(SafeHTMLElement),\n\t onAfterOpen: React.PropTypes.func,\n\t onRequestClose: React.PropTypes.func,\n\t closeTimeoutMS: React.PropTypes.number,\n\t ariaHideApp: React.PropTypes.bool,\n\t shouldCloseOnOverlayClick: React.PropTypes.bool,\n\t parentSelector: React.PropTypes.func,\n\t role: React.PropTypes.string,\n\t contentLabel: React.PropTypes.string.isRequired\n\t },\n\t\n\t getDefaultProps: function () {\n\t return {\n\t isOpen: false,\n\t portalClassName: 'ReactModalPortal',\n\t ariaHideApp: true,\n\t closeTimeoutMS: 0,\n\t shouldCloseOnOverlayClick: true,\n\t parentSelector: function () { return document.body; }\n\t };\n\t },\n\t\n\t componentDidMount: function() {\n\t this.node = document.createElement('div');\n\t this.node.className = this.props.portalClassName;\n\t\n\t var parent = getParentElement(this.props.parentSelector);\n\t parent.appendChild(this.node);\n\t this.renderPortal(this.props);\n\t },\n\t\n\t componentWillReceiveProps: function(newProps) {\n\t var currentParent = getParentElement(this.props.parentSelector);\n\t var newParent = getParentElement(newProps.parentSelector);\n\t\n\t if(newParent !== currentParent) {\n\t currentParent.removeChild(this.node);\n\t newParent.appendChild(this.node);\n\t }\n\t\n\t this.renderPortal(newProps);\n\t },\n\t\n\t componentWillUnmount: function() {\n\t if (this.props.ariaHideApp) {\n\t ariaAppHider.show(this.props.appElement);\n\t }\n\t\n\t ReactDOM.unmountComponentAtNode(this.node);\n\t var parent = getParentElement(this.props.parentSelector);\n\t parent.removeChild(this.node);\n\t elementClass(document.body).remove('ReactModal__Body--open');\n\t },\n\t\n\t renderPortal: function(props) {\n\t if (props.isOpen) {\n\t elementClass(document.body).add('ReactModal__Body--open');\n\t } else {\n\t elementClass(document.body).remove('ReactModal__Body--open');\n\t }\n\t\n\t if (props.ariaHideApp) {\n\t ariaAppHider.toggle(props.isOpen, props.appElement);\n\t }\n\t\n\t this.portal = renderSubtreeIntoContainer(this, ModalPortal(Assign({}, props, {defaultStyles: Modal.defaultStyles})), this.node);\n\t },\n\t\n\t render: function () {\n\t return React.DOM.noscript();\n\t }\n\t});\n\t\n\tModal.defaultStyles = {\n\t overlay: {\n\t position : 'fixed',\n\t top : 0,\n\t left : 0,\n\t right : 0,\n\t bottom : 0,\n\t backgroundColor : 'rgba(255, 255, 255, 0.75)'\n\t },\n\t content: {\n\t position : 'absolute',\n\t top : '40px',\n\t left : '40px',\n\t right : '40px',\n\t bottom : '40px',\n\t border : '1px solid #ccc',\n\t background : '#fff',\n\t overflow : 'auto',\n\t WebkitOverflowScrolling : 'touch',\n\t borderRadius : '4px',\n\t outline : 'none',\n\t padding : '20px'\n\t }\n\t}\n\t\n\tmodule.exports = Modal\n\n\n/***/ },\n/* 386 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar React = __webpack_require__(1);\n\tvar div = React.DOM.div;\n\tvar focusManager = __webpack_require__(388);\n\tvar scopeTab = __webpack_require__(389);\n\tvar Assign = __webpack_require__(116);\n\t\n\t// so that our CSS is statically analyzable\n\tvar CLASS_NAMES = {\n\t overlay: {\n\t base: 'ReactModal__Overlay',\n\t afterOpen: 'ReactModal__Overlay--after-open',\n\t beforeClose: 'ReactModal__Overlay--before-close'\n\t },\n\t content: {\n\t base: 'ReactModal__Content',\n\t afterOpen: 'ReactModal__Content--after-open',\n\t beforeClose: 'ReactModal__Content--before-close'\n\t }\n\t};\n\t\n\tvar ModalPortal = module.exports = React.createClass({\n\t\n\t displayName: 'ModalPortal',\n\t shouldClose: null,\n\t\n\t getDefaultProps: function() {\n\t return {\n\t style: {\n\t overlay: {},\n\t content: {}\n\t }\n\t };\n\t },\n\t\n\t getInitialState: function() {\n\t return {\n\t afterOpen: false,\n\t beforeClose: false\n\t };\n\t },\n\t\n\t componentDidMount: function() {\n\t // Focus needs to be set when mounting and already open\n\t if (this.props.isOpen) {\n\t this.setFocusAfterRender(true);\n\t this.open();\n\t }\n\t },\n\t\n\t componentWillUnmount: function() {\n\t clearTimeout(this.closeTimer);\n\t },\n\t\n\t componentWillReceiveProps: function(newProps) {\n\t // Focus only needs to be set once when the modal is being opened\n\t if (!this.props.isOpen && newProps.isOpen) {\n\t this.setFocusAfterRender(true);\n\t this.open();\n\t } else if (this.props.isOpen && !newProps.isOpen) {\n\t this.close();\n\t }\n\t },\n\t\n\t componentDidUpdate: function () {\n\t if (this.focusAfterRender) {\n\t this.focusContent();\n\t this.setFocusAfterRender(false);\n\t }\n\t },\n\t\n\t setFocusAfterRender: function (focus) {\n\t this.focusAfterRender = focus;\n\t },\n\t\n\t open: function() {\n\t if (this.state.afterOpen && this.state.beforeClose) {\n\t clearTimeout(this.closeTimer);\n\t this.setState({ beforeClose: false });\n\t } else {\n\t focusManager.setupScopedFocus(this.node);\n\t focusManager.markForFocusLater();\n\t this.setState({isOpen: true}, function() {\n\t this.setState({afterOpen: true});\n\t\n\t if (this.props.isOpen && this.props.onAfterOpen) {\n\t this.props.onAfterOpen();\n\t }\n\t }.bind(this));\n\t }\n\t },\n\t\n\t close: function() {\n\t if (!this.ownerHandlesClose())\n\t return;\n\t if (this.props.closeTimeoutMS > 0)\n\t this.closeWithTimeout();\n\t else\n\t this.closeWithoutTimeout();\n\t },\n\t\n\t focusContent: function() {\n\t // Don't steal focus from inner elements\n\t if (!this.contentHasFocus()) {\n\t this.refs.content.focus();\n\t }\n\t },\n\t\n\t closeWithTimeout: function() {\n\t this.setState({beforeClose: true}, function() {\n\t this.closeTimer = setTimeout(this.closeWithoutTimeout, this.props.closeTimeoutMS);\n\t }.bind(this));\n\t },\n\t\n\t closeWithoutTimeout: function() {\n\t this.setState({\n\t beforeClose: false,\n\t isOpen: false,\n\t afterOpen: false,\n\t }, this.afterClose);\n\t },\n\t\n\t afterClose: function() {\n\t focusManager.returnFocus();\n\t focusManager.teardownScopedFocus();\n\t },\n\t\n\t handleKeyDown: function(event) {\n\t if (event.keyCode == 9 /*tab*/) scopeTab(this.refs.content, event);\n\t if (event.keyCode == 27 /*esc*/) {\n\t event.preventDefault();\n\t this.requestClose(event);\n\t }\n\t },\n\t\n\t handleOverlayMouseDown: function(event) {\n\t if (this.shouldClose === null) {\n\t this.shouldClose = true;\n\t }\n\t },\n\t\n\t handleOverlayMouseUp: function(event) {\n\t if (this.shouldClose && this.props.shouldCloseOnOverlayClick) {\n\t if (this.ownerHandlesClose())\n\t this.requestClose(event);\n\t else\n\t this.focusContent();\n\t }\n\t this.shouldClose = null;\n\t },\n\t\n\t handleContentMouseDown: function(event) {\n\t this.shouldClose = false;\n\t },\n\t\n\t handleContentMouseUp: function(event) {\n\t this.shouldClose = false;\n\t },\n\t\n\t requestClose: function(event) {\n\t if (this.ownerHandlesClose())\n\t this.props.onRequestClose(event);\n\t },\n\t\n\t ownerHandlesClose: function() {\n\t return this.props.onRequestClose;\n\t },\n\t\n\t shouldBeClosed: function() {\n\t return !this.props.isOpen && !this.state.beforeClose;\n\t },\n\t\n\t contentHasFocus: function() {\n\t return document.activeElement === this.refs.content || this.refs.content.contains(document.activeElement);\n\t },\n\t\n\t buildClassName: function(which, additional) {\n\t var className = CLASS_NAMES[which].base;\n\t if (this.state.afterOpen)\n\t className += ' '+CLASS_NAMES[which].afterOpen;\n\t if (this.state.beforeClose)\n\t className += ' '+CLASS_NAMES[which].beforeClose;\n\t return additional ? className + ' ' + additional : className;\n\t },\n\t\n\t render: function() {\n\t var contentStyles = (this.props.className) ? {} : this.props.defaultStyles.content;\n\t var overlayStyles = (this.props.overlayClassName) ? {} : this.props.defaultStyles.overlay;\n\t\n\t return this.shouldBeClosed() ? div() : (\n\t div({\n\t ref: \"overlay\",\n\t className: this.buildClassName('overlay', this.props.overlayClassName),\n\t style: Assign({}, overlayStyles, this.props.style.overlay || {}),\n\t onMouseDown: this.handleOverlayMouseDown,\n\t onMouseUp: this.handleOverlayMouseUp\n\t },\n\t div({\n\t ref: \"content\",\n\t style: Assign({}, contentStyles, this.props.style.content || {}),\n\t className: this.buildClassName('content', this.props.className),\n\t tabIndex: \"-1\",\n\t onKeyDown: this.handleKeyDown,\n\t onMouseDown: this.handleContentMouseDown,\n\t onMouseUp: this.handleContentMouseUp,\n\t role: this.props.role,\n\t \"aria-label\": this.props.contentLabel\n\t },\n\t this.props.children\n\t )\n\t )\n\t );\n\t }\n\t});\n\n\n/***/ },\n/* 387 */\n/***/ function(module, exports) {\n\n\tvar _element = typeof document !== 'undefined' ? document.body : null;\n\t\n\tfunction setElement(element) {\n\t if (typeof element === 'string') {\n\t var el = document.querySelectorAll(element);\n\t element = 'length' in el ? el[0] : el;\n\t }\n\t _element = element || _element;\n\t return _element;\n\t}\n\t\n\tfunction hide(appElement) {\n\t validateElement(appElement);\n\t (appElement || _element).setAttribute('aria-hidden', 'true');\n\t}\n\t\n\tfunction show(appElement) {\n\t validateElement(appElement);\n\t (appElement || _element).removeAttribute('aria-hidden');\n\t}\n\t\n\tfunction toggle(shouldHide, appElement) {\n\t if (shouldHide)\n\t hide(appElement);\n\t else\n\t show(appElement);\n\t}\n\t\n\tfunction validateElement(appElement) {\n\t if (!appElement && !_element)\n\t throw new Error('react-modal: You must set an element with `Modal.setAppElement(el)` to make this accessible');\n\t}\n\t\n\tfunction resetForTesting() {\n\t _element = document.body;\n\t}\n\t\n\texports.toggle = toggle;\n\texports.setElement = setElement;\n\texports.show = show;\n\texports.hide = hide;\n\texports.resetForTesting = resetForTesting;\n\n\n/***/ },\n/* 388 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar findTabbable = __webpack_require__(145);\n\tvar modalElement = null;\n\tvar focusLaterElement = null;\n\tvar needToFocus = false;\n\t\n\tfunction handleBlur(event) {\n\t needToFocus = true;\n\t}\n\t\n\tfunction handleFocus(event) {\n\t if (needToFocus) {\n\t needToFocus = false;\n\t if (!modalElement) {\n\t return;\n\t }\n\t // need to see how jQuery shims document.on('focusin') so we don't need the\n\t // setTimeout, firefox doesn't support focusin, if it did, we could focus\n\t // the element outside of a setTimeout. Side-effect of this implementation \n\t // is that the document.body gets focus, and then we focus our element right \n\t // after, seems fine.\n\t setTimeout(function() {\n\t if (modalElement.contains(document.activeElement))\n\t return;\n\t var el = (findTabbable(modalElement)[0] || modalElement);\n\t el.focus();\n\t }, 0);\n\t }\n\t}\n\t\n\texports.markForFocusLater = function() {\n\t focusLaterElement = document.activeElement;\n\t};\n\t\n\texports.returnFocus = function() {\n\t try {\n\t focusLaterElement.focus();\n\t }\n\t catch (e) {\n\t console.warn('You tried to return focus to '+focusLaterElement+' but it is not in the DOM anymore');\n\t }\n\t focusLaterElement = null;\n\t};\n\t\n\texports.setupScopedFocus = function(element) {\n\t modalElement = element;\n\t\n\t if (window.addEventListener) {\n\t window.addEventListener('blur', handleBlur, false);\n\t document.addEventListener('focus', handleFocus, true);\n\t } else {\n\t window.attachEvent('onBlur', handleBlur);\n\t document.attachEvent('onFocus', handleFocus);\n\t }\n\t};\n\t\n\texports.teardownScopedFocus = function() {\n\t modalElement = null;\n\t\n\t if (window.addEventListener) {\n\t window.removeEventListener('blur', handleBlur);\n\t document.removeEventListener('focus', handleFocus);\n\t } else {\n\t window.detachEvent('onBlur', handleBlur);\n\t document.detachEvent('onFocus', handleFocus);\n\t }\n\t};\n\t\n\t\n\n\n/***/ },\n/* 389 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar findTabbable = __webpack_require__(145);\n\t\n\tmodule.exports = function(node, event) {\n\t var tabbable = findTabbable(node);\n\t if (!tabbable.length) {\n\t event.preventDefault();\n\t return;\n\t }\n\t var finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1];\n\t var leavingFinalTabbable = (\n\t finalTabbable === document.activeElement ||\n\t // handle immediate shift+tab after opening with mouse\n\t node === document.activeElement\n\t );\n\t if (!leavingFinalTabbable) return;\n\t event.preventDefault();\n\t var target = tabbable[event.shiftKey ? tabbable.length - 1 : 0];\n\t target.focus();\n\t};\n\n\n/***/ },\n/* 390 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(385);\n\t\n\n\n/***/ },\n/* 391 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports[\"default\"] = undefined;\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _storeShape = __webpack_require__(146);\n\t\n\tvar _storeShape2 = _interopRequireDefault(_storeShape);\n\t\n\tvar _warning = __webpack_require__(147);\n\t\n\tvar _warning2 = _interopRequireDefault(_warning);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar didWarnAboutReceivingStore = false;\n\tfunction warnAboutReceivingStore() {\n\t if (didWarnAboutReceivingStore) {\n\t return;\n\t }\n\t didWarnAboutReceivingStore = true;\n\t\n\t (0, _warning2[\"default\"])('<Provider> does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reactjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n\t}\n\t\n\tvar Provider = function (_Component) {\n\t _inherits(Provider, _Component);\n\t\n\t Provider.prototype.getChildContext = function getChildContext() {\n\t return { store: this.store };\n\t };\n\t\n\t function Provider(props, context) {\n\t _classCallCheck(this, Provider);\n\t\n\t var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\t\n\t _this.store = props.store;\n\t return _this;\n\t }\n\t\n\t Provider.prototype.render = function render() {\n\t return _react.Children.only(this.props.children);\n\t };\n\t\n\t return Provider;\n\t}(_react.Component);\n\t\n\texports[\"default\"] = Provider;\n\t\n\t\n\tif (false) {\n\t Provider.prototype.componentWillReceiveProps = function (nextProps) {\n\t var store = this.store;\n\t var nextStore = nextProps.store;\n\t\n\t\n\t if (store !== nextStore) {\n\t warnAboutReceivingStore();\n\t }\n\t };\n\t}\n\t\n\tProvider.propTypes = {\n\t store: _storeShape2[\"default\"].isRequired,\n\t children: _react.PropTypes.element.isRequired\n\t};\n\tProvider.childContextTypes = {\n\t store: _storeShape2[\"default\"].isRequired\n\t};\n\n/***/ },\n/* 392 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\texports[\"default\"] = connect;\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _storeShape = __webpack_require__(146);\n\t\n\tvar _storeShape2 = _interopRequireDefault(_storeShape);\n\t\n\tvar _shallowEqual = __webpack_require__(393);\n\t\n\tvar _shallowEqual2 = _interopRequireDefault(_shallowEqual);\n\t\n\tvar _wrapActionCreators = __webpack_require__(394);\n\t\n\tvar _wrapActionCreators2 = _interopRequireDefault(_wrapActionCreators);\n\t\n\tvar _warning = __webpack_require__(147);\n\t\n\tvar _warning2 = _interopRequireDefault(_warning);\n\t\n\tvar _isPlainObject = __webpack_require__(70);\n\t\n\tvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\t\n\tvar _hoistNonReactStatics = __webpack_require__(115);\n\t\n\tvar _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\t\n\tfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\t\n\tvar defaultMapStateToProps = function defaultMapStateToProps(state) {\n\t return {};\n\t}; // eslint-disable-line no-unused-vars\n\tvar defaultMapDispatchToProps = function defaultMapDispatchToProps(dispatch) {\n\t return { dispatch: dispatch };\n\t};\n\tvar defaultMergeProps = function defaultMergeProps(stateProps, dispatchProps, parentProps) {\n\t return _extends({}, parentProps, stateProps, dispatchProps);\n\t};\n\t\n\tfunction getDisplayName(WrappedComponent) {\n\t return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\t}\n\t\n\tvar errorObject = { value: null };\n\tfunction tryCatch(fn, ctx) {\n\t try {\n\t return fn.apply(ctx);\n\t } catch (e) {\n\t errorObject.value = e;\n\t return errorObject;\n\t }\n\t}\n\t\n\t// Helps track hot reloading.\n\tvar nextVersion = 0;\n\t\n\tfunction connect(mapStateToProps, mapDispatchToProps, mergeProps) {\n\t var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\t\n\t var shouldSubscribe = Boolean(mapStateToProps);\n\t var mapState = mapStateToProps || defaultMapStateToProps;\n\t\n\t var mapDispatch = void 0;\n\t if (typeof mapDispatchToProps === 'function') {\n\t mapDispatch = mapDispatchToProps;\n\t } else if (!mapDispatchToProps) {\n\t mapDispatch = defaultMapDispatchToProps;\n\t } else {\n\t mapDispatch = (0, _wrapActionCreators2[\"default\"])(mapDispatchToProps);\n\t }\n\t\n\t var finalMergeProps = mergeProps || defaultMergeProps;\n\t var _options$pure = options.pure,\n\t pure = _options$pure === undefined ? true : _options$pure,\n\t _options$withRef = options.withRef,\n\t withRef = _options$withRef === undefined ? false : _options$withRef;\n\t\n\t var checkMergedEquals = pure && finalMergeProps !== defaultMergeProps;\n\t\n\t // Helps track hot reloading.\n\t var version = nextVersion++;\n\t\n\t return function wrapWithConnect(WrappedComponent) {\n\t var connectDisplayName = 'Connect(' + getDisplayName(WrappedComponent) + ')';\n\t\n\t function checkStateShape(props, methodName) {\n\t if (!(0, _isPlainObject2[\"default\"])(props)) {\n\t (0, _warning2[\"default\"])(methodName + '() in ' + connectDisplayName + ' must return a plain object. ' + ('Instead received ' + props + '.'));\n\t }\n\t }\n\t\n\t function computeMergedProps(stateProps, dispatchProps, parentProps) {\n\t var mergedProps = finalMergeProps(stateProps, dispatchProps, parentProps);\n\t if (false) {\n\t checkStateShape(mergedProps, 'mergeProps');\n\t }\n\t return mergedProps;\n\t }\n\t\n\t var Connect = function (_Component) {\n\t _inherits(Connect, _Component);\n\t\n\t Connect.prototype.shouldComponentUpdate = function shouldComponentUpdate() {\n\t return !pure || this.haveOwnPropsChanged || this.hasStoreStateChanged;\n\t };\n\t\n\t function Connect(props, context) {\n\t _classCallCheck(this, Connect);\n\t\n\t var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\t\n\t _this.version = version;\n\t _this.store = props.store || context.store;\n\t\n\t (0, _invariant2[\"default\"])(_this.store, 'Could not find \"store\" in either the context or ' + ('props of \"' + connectDisplayName + '\". ') + 'Either wrap the root component in a <Provider>, ' + ('or explicitly pass \"store\" as a prop to \"' + connectDisplayName + '\".'));\n\t\n\t var storeState = _this.store.getState();\n\t _this.state = { storeState: storeState };\n\t _this.clearCache();\n\t return _this;\n\t }\n\t\n\t Connect.prototype.computeStateProps = function computeStateProps(store, props) {\n\t if (!this.finalMapStateToProps) {\n\t return this.configureFinalMapState(store, props);\n\t }\n\t\n\t var state = store.getState();\n\t var stateProps = this.doStatePropsDependOnOwnProps ? this.finalMapStateToProps(state, props) : this.finalMapStateToProps(state);\n\t\n\t if (false) {\n\t checkStateShape(stateProps, 'mapStateToProps');\n\t }\n\t return stateProps;\n\t };\n\t\n\t Connect.prototype.configureFinalMapState = function configureFinalMapState(store, props) {\n\t var mappedState = mapState(store.getState(), props);\n\t var isFactory = typeof mappedState === 'function';\n\t\n\t this.finalMapStateToProps = isFactory ? mappedState : mapState;\n\t this.doStatePropsDependOnOwnProps = this.finalMapStateToProps.length !== 1;\n\t\n\t if (isFactory) {\n\t return this.computeStateProps(store, props);\n\t }\n\t\n\t if (false) {\n\t checkStateShape(mappedState, 'mapStateToProps');\n\t }\n\t return mappedState;\n\t };\n\t\n\t Connect.prototype.computeDispatchProps = function computeDispatchProps(store, props) {\n\t if (!this.finalMapDispatchToProps) {\n\t return this.configureFinalMapDispatch(store, props);\n\t }\n\t\n\t var dispatch = store.dispatch;\n\t\n\t var dispatchProps = this.doDispatchPropsDependOnOwnProps ? this.finalMapDispatchToProps(dispatch, props) : this.finalMapDispatchToProps(dispatch);\n\t\n\t if (false) {\n\t checkStateShape(dispatchProps, 'mapDispatchToProps');\n\t }\n\t return dispatchProps;\n\t };\n\t\n\t Connect.prototype.configureFinalMapDispatch = function configureFinalMapDispatch(store, props) {\n\t var mappedDispatch = mapDispatch(store.dispatch, props);\n\t var isFactory = typeof mappedDispatch === 'function';\n\t\n\t this.finalMapDispatchToProps = isFactory ? mappedDispatch : mapDispatch;\n\t this.doDispatchPropsDependOnOwnProps = this.finalMapDispatchToProps.length !== 1;\n\t\n\t if (isFactory) {\n\t return this.computeDispatchProps(store, props);\n\t }\n\t\n\t if (false) {\n\t checkStateShape(mappedDispatch, 'mapDispatchToProps');\n\t }\n\t return mappedDispatch;\n\t };\n\t\n\t Connect.prototype.updateStatePropsIfNeeded = function updateStatePropsIfNeeded() {\n\t var nextStateProps = this.computeStateProps(this.store, this.props);\n\t if (this.stateProps && (0, _shallowEqual2[\"default\"])(nextStateProps, this.stateProps)) {\n\t return false;\n\t }\n\t\n\t this.stateProps = nextStateProps;\n\t return true;\n\t };\n\t\n\t Connect.prototype.updateDispatchPropsIfNeeded = function updateDispatchPropsIfNeeded() {\n\t var nextDispatchProps = this.computeDispatchProps(this.store, this.props);\n\t if (this.dispatchProps && (0, _shallowEqual2[\"default\"])(nextDispatchProps, this.dispatchProps)) {\n\t return false;\n\t }\n\t\n\t this.dispatchProps = nextDispatchProps;\n\t return true;\n\t };\n\t\n\t Connect.prototype.updateMergedPropsIfNeeded = function updateMergedPropsIfNeeded() {\n\t var nextMergedProps = computeMergedProps(this.stateProps, this.dispatchProps, this.props);\n\t if (this.mergedProps && checkMergedEquals && (0, _shallowEqual2[\"default\"])(nextMergedProps, this.mergedProps)) {\n\t return false;\n\t }\n\t\n\t this.mergedProps = nextMergedProps;\n\t return true;\n\t };\n\t\n\t Connect.prototype.isSubscribed = function isSubscribed() {\n\t return typeof this.unsubscribe === 'function';\n\t };\n\t\n\t Connect.prototype.trySubscribe = function trySubscribe() {\n\t if (shouldSubscribe && !this.unsubscribe) {\n\t this.unsubscribe = this.store.subscribe(this.handleChange.bind(this));\n\t this.handleChange();\n\t }\n\t };\n\t\n\t Connect.prototype.tryUnsubscribe = function tryUnsubscribe() {\n\t if (this.unsubscribe) {\n\t this.unsubscribe();\n\t this.unsubscribe = null;\n\t }\n\t };\n\t\n\t Connect.prototype.componentDidMount = function componentDidMount() {\n\t this.trySubscribe();\n\t };\n\t\n\t Connect.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n\t if (!pure || !(0, _shallowEqual2[\"default\"])(nextProps, this.props)) {\n\t this.haveOwnPropsChanged = true;\n\t }\n\t };\n\t\n\t Connect.prototype.componentWillUnmount = function componentWillUnmount() {\n\t this.tryUnsubscribe();\n\t this.clearCache();\n\t };\n\t\n\t Connect.prototype.clearCache = function clearCache() {\n\t this.dispatchProps = null;\n\t this.stateProps = null;\n\t this.mergedProps = null;\n\t this.haveOwnPropsChanged = true;\n\t this.hasStoreStateChanged = true;\n\t this.haveStatePropsBeenPrecalculated = false;\n\t this.statePropsPrecalculationError = null;\n\t this.renderedElement = null;\n\t this.finalMapDispatchToProps = null;\n\t this.finalMapStateToProps = null;\n\t };\n\t\n\t Connect.prototype.handleChange = function handleChange() {\n\t if (!this.unsubscribe) {\n\t return;\n\t }\n\t\n\t var storeState = this.store.getState();\n\t var prevStoreState = this.state.storeState;\n\t if (pure && prevStoreState === storeState) {\n\t return;\n\t }\n\t\n\t if (pure && !this.doStatePropsDependOnOwnProps) {\n\t var haveStatePropsChanged = tryCatch(this.updateStatePropsIfNeeded, this);\n\t if (!haveStatePropsChanged) {\n\t return;\n\t }\n\t if (haveStatePropsChanged === errorObject) {\n\t this.statePropsPrecalculationError = errorObject.value;\n\t }\n\t this.haveStatePropsBeenPrecalculated = true;\n\t }\n\t\n\t this.hasStoreStateChanged = true;\n\t this.setState({ storeState: storeState });\n\t };\n\t\n\t Connect.prototype.getWrappedInstance = function getWrappedInstance() {\n\t (0, _invariant2[\"default\"])(withRef, 'To access the wrapped instance, you need to specify ' + '{ withRef: true } as the fourth argument of the connect() call.');\n\t\n\t return this.refs.wrappedInstance;\n\t };\n\t\n\t Connect.prototype.render = function render() {\n\t var haveOwnPropsChanged = this.haveOwnPropsChanged,\n\t hasStoreStateChanged = this.hasStoreStateChanged,\n\t haveStatePropsBeenPrecalculated = this.haveStatePropsBeenPrecalculated,\n\t statePropsPrecalculationError = this.statePropsPrecalculationError,\n\t renderedElement = this.renderedElement;\n\t\n\t\n\t this.haveOwnPropsChanged = false;\n\t this.hasStoreStateChanged = false;\n\t this.haveStatePropsBeenPrecalculated = false;\n\t this.statePropsPrecalculationError = null;\n\t\n\t if (statePropsPrecalculationError) {\n\t throw statePropsPrecalculationError;\n\t }\n\t\n\t var shouldUpdateStateProps = true;\n\t var shouldUpdateDispatchProps = true;\n\t if (pure && renderedElement) {\n\t shouldUpdateStateProps = hasStoreStateChanged || haveOwnPropsChanged && this.doStatePropsDependOnOwnProps;\n\t shouldUpdateDispatchProps = haveOwnPropsChanged && this.doDispatchPropsDependOnOwnProps;\n\t }\n\t\n\t var haveStatePropsChanged = false;\n\t var haveDispatchPropsChanged = false;\n\t if (haveStatePropsBeenPrecalculated) {\n\t haveStatePropsChanged = true;\n\t } else if (shouldUpdateStateProps) {\n\t haveStatePropsChanged = this.updateStatePropsIfNeeded();\n\t }\n\t if (shouldUpdateDispatchProps) {\n\t haveDispatchPropsChanged = this.updateDispatchPropsIfNeeded();\n\t }\n\t\n\t var haveMergedPropsChanged = true;\n\t if (haveStatePropsChanged || haveDispatchPropsChanged || haveOwnPropsChanged) {\n\t haveMergedPropsChanged = this.updateMergedPropsIfNeeded();\n\t } else {\n\t haveMergedPropsChanged = false;\n\t }\n\t\n\t if (!haveMergedPropsChanged && renderedElement) {\n\t return renderedElement;\n\t }\n\t\n\t if (withRef) {\n\t this.renderedElement = (0, _react.createElement)(WrappedComponent, _extends({}, this.mergedProps, {\n\t ref: 'wrappedInstance'\n\t }));\n\t } else {\n\t this.renderedElement = (0, _react.createElement)(WrappedComponent, this.mergedProps);\n\t }\n\t\n\t return this.renderedElement;\n\t };\n\t\n\t return Connect;\n\t }(_react.Component);\n\t\n\t Connect.displayName = connectDisplayName;\n\t Connect.WrappedComponent = WrappedComponent;\n\t Connect.contextTypes = {\n\t store: _storeShape2[\"default\"]\n\t };\n\t Connect.propTypes = {\n\t store: _storeShape2[\"default\"]\n\t };\n\t\n\t if (false) {\n\t Connect.prototype.componentWillUpdate = function componentWillUpdate() {\n\t if (this.version === version) {\n\t return;\n\t }\n\t\n\t // We are hot reloading!\n\t this.version = version;\n\t this.trySubscribe();\n\t this.clearCache();\n\t };\n\t }\n\t\n\t return (0, _hoistNonReactStatics2[\"default\"])(Connect, WrappedComponent);\n\t };\n\t}\n\n/***/ },\n/* 393 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\texports.__esModule = true;\n\texports[\"default\"] = shallowEqual;\n\tfunction shallowEqual(objA, objB) {\n\t if (objA === objB) {\n\t return true;\n\t }\n\t\n\t var keysA = Object.keys(objA);\n\t var keysB = Object.keys(objB);\n\t\n\t if (keysA.length !== keysB.length) {\n\t return false;\n\t }\n\t\n\t // Test for A's keys different from B.\n\t var hasOwn = Object.prototype.hasOwnProperty;\n\t for (var i = 0; i < keysA.length; i++) {\n\t if (!hasOwn.call(objB, keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t}\n\n/***/ },\n/* 394 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports[\"default\"] = wrapActionCreators;\n\t\n\tvar _redux = __webpack_require__(98);\n\t\n\tfunction wrapActionCreators(actionCreators) {\n\t return function (dispatch) {\n\t return (0, _redux.bindActionCreators)(actionCreators, dispatch);\n\t };\n\t}\n\n/***/ },\n/* 395 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _Link = __webpack_require__(148);\n\t\n\tvar _Link2 = _interopRequireDefault(_Link);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/**\n\t * An <IndexLink> is used to link to an <IndexRoute>.\n\t */\n\tvar IndexLink = _react2.default.createClass({\n\t displayName: 'IndexLink',\n\t render: function render() {\n\t return _react2.default.createElement(_Link2.default, _extends({}, this.props, { onlyActiveOnIndex: true }));\n\t }\n\t});\n\t\n\texports.default = IndexLink;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 396 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _routerWarning = __webpack_require__(35);\n\t\n\tvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _Redirect = __webpack_require__(150);\n\t\n\tvar _Redirect2 = _interopRequireDefault(_Redirect);\n\t\n\tvar _InternalPropTypes = __webpack_require__(45);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _React$PropTypes = _react2.default.PropTypes,\n\t string = _React$PropTypes.string,\n\t object = _React$PropTypes.object;\n\t\n\t/**\n\t * An <IndexRedirect> is used to redirect from an indexRoute.\n\t */\n\t/* eslint-disable react/require-render-return */\n\t\n\tvar IndexRedirect = _react2.default.createClass({\n\t displayName: 'IndexRedirect',\n\t\n\t\n\t statics: {\n\t createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {\n\t /* istanbul ignore else: sanity check */\n\t if (parentRoute) {\n\t parentRoute.indexRoute = _Redirect2.default.createRouteFromReactElement(element);\n\t } else {\n\t false ? (0, _routerWarning2.default)(false, 'An <IndexRedirect> does not make sense at the root of your route config') : void 0;\n\t }\n\t }\n\t },\n\t\n\t propTypes: {\n\t to: string.isRequired,\n\t query: object,\n\t state: object,\n\t onEnter: _InternalPropTypes.falsy,\n\t children: _InternalPropTypes.falsy\n\t },\n\t\n\t /* istanbul ignore next: sanity check */\n\t render: function render() {\n\t true ? false ? (0, _invariant2.default)(false, '<IndexRedirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n\t }\n\t});\n\t\n\texports.default = IndexRedirect;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 397 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _routerWarning = __webpack_require__(35);\n\t\n\tvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _RouteUtils = __webpack_require__(24);\n\t\n\tvar _InternalPropTypes = __webpack_require__(45);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar func = _react2.default.PropTypes.func;\n\t\n\t/**\n\t * An <IndexRoute> is used to specify its parent's <Route indexRoute> in\n\t * a JSX route config.\n\t */\n\t/* eslint-disable react/require-render-return */\n\t\n\tvar IndexRoute = _react2.default.createClass({\n\t displayName: 'IndexRoute',\n\t\n\t\n\t statics: {\n\t createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {\n\t /* istanbul ignore else: sanity check */\n\t if (parentRoute) {\n\t parentRoute.indexRoute = (0, _RouteUtils.createRouteFromReactElement)(element);\n\t } else {\n\t false ? (0, _routerWarning2.default)(false, 'An <IndexRoute> does not make sense at the root of your route config') : void 0;\n\t }\n\t }\n\t },\n\t\n\t propTypes: {\n\t path: _InternalPropTypes.falsy,\n\t component: _InternalPropTypes.component,\n\t components: _InternalPropTypes.components,\n\t getComponent: func,\n\t getComponents: func\n\t },\n\t\n\t /* istanbul ignore next: sanity check */\n\t render: function render() {\n\t true ? false ? (0, _invariant2.default)(false, '<IndexRoute> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n\t }\n\t});\n\t\n\texports.default = IndexRoute;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 398 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _RouteUtils = __webpack_require__(24);\n\t\n\tvar _InternalPropTypes = __webpack_require__(45);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar _React$PropTypes = _react2.default.PropTypes,\n\t string = _React$PropTypes.string,\n\t func = _React$PropTypes.func;\n\t\n\t/**\n\t * A <Route> is used to declare which components are rendered to the\n\t * page when the URL matches a given pattern.\n\t *\n\t * Routes are arranged in a nested tree structure. When a new URL is\n\t * requested, the tree is searched depth-first to find a route whose\n\t * path matches the URL. When one is found, all routes in the tree\n\t * that lead to it are considered \"active\" and their components are\n\t * rendered into the DOM, nested in the same order as in the tree.\n\t */\n\t/* eslint-disable react/require-render-return */\n\t\n\tvar Route = _react2.default.createClass({\n\t displayName: 'Route',\n\t\n\t\n\t statics: {\n\t createRouteFromReactElement: _RouteUtils.createRouteFromReactElement\n\t },\n\t\n\t propTypes: {\n\t path: string,\n\t component: _InternalPropTypes.component,\n\t components: _InternalPropTypes.components,\n\t getComponent: func,\n\t getComponents: func\n\t },\n\t\n\t /* istanbul ignore next: sanity check */\n\t render: function render() {\n\t true ? false ? (0, _invariant2.default)(false, '<Route> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n\t }\n\t});\n\t\n\texports.default = Route;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 399 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _createTransitionManager2 = __webpack_require__(154);\n\t\n\tvar _createTransitionManager3 = _interopRequireDefault(_createTransitionManager2);\n\t\n\tvar _InternalPropTypes = __webpack_require__(45);\n\t\n\tvar _RouterContext = __webpack_require__(95);\n\t\n\tvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\t\n\tvar _RouteUtils = __webpack_require__(24);\n\t\n\tvar _RouterUtils = __webpack_require__(151);\n\t\n\tvar _routerWarning = __webpack_require__(35);\n\t\n\tvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\tvar _React$PropTypes = _react2.default.PropTypes,\n\t func = _React$PropTypes.func,\n\t object = _React$PropTypes.object;\n\t\n\t/**\n\t * A <Router> is a high-level API for automatically setting up\n\t * a router that renders a <RouterContext> with all the props\n\t * it needs each time the URL changes.\n\t */\n\t\n\tvar Router = _react2.default.createClass({\n\t displayName: 'Router',\n\t\n\t\n\t propTypes: {\n\t history: object,\n\t children: _InternalPropTypes.routes,\n\t routes: _InternalPropTypes.routes, // alias for children\n\t render: func,\n\t createElement: func,\n\t onError: func,\n\t onUpdate: func,\n\t\n\t // PRIVATE: For client-side rehydration of server match.\n\t matchContext: object\n\t },\n\t\n\t getDefaultProps: function getDefaultProps() {\n\t return {\n\t render: function render(props) {\n\t return _react2.default.createElement(_RouterContext2.default, props);\n\t }\n\t };\n\t },\n\t getInitialState: function getInitialState() {\n\t return {\n\t location: null,\n\t routes: null,\n\t params: null,\n\t components: null\n\t };\n\t },\n\t handleError: function handleError(error) {\n\t if (this.props.onError) {\n\t this.props.onError.call(this, error);\n\t } else {\n\t // Throw errors by default so we don't silently swallow them!\n\t throw error; // This error probably occurred in getChildRoutes or getComponents.\n\t }\n\t },\n\t createRouterObject: function createRouterObject(state) {\n\t var matchContext = this.props.matchContext;\n\t\n\t if (matchContext) {\n\t return matchContext.router;\n\t }\n\t\n\t var history = this.props.history;\n\t\n\t return (0, _RouterUtils.createRouterObject)(history, this.transitionManager, state);\n\t },\n\t createTransitionManager: function createTransitionManager() {\n\t var matchContext = this.props.matchContext;\n\t\n\t if (matchContext) {\n\t return matchContext.transitionManager;\n\t }\n\t\n\t var history = this.props.history;\n\t var _props = this.props,\n\t routes = _props.routes,\n\t children = _props.children;\n\t\n\t\n\t !history.getCurrentLocation ? false ? (0, _invariant2.default)(false, 'You have provided a history object created with history v2.x or ' + 'earlier. This version of React Router is only compatible with v3 ' + 'history objects. Please upgrade to history v3.x.') : (0, _invariant2.default)(false) : void 0;\n\t\n\t return (0, _createTransitionManager3.default)(history, (0, _RouteUtils.createRoutes)(routes || children));\n\t },\n\t componentWillMount: function componentWillMount() {\n\t var _this = this;\n\t\n\t this.transitionManager = this.createTransitionManager();\n\t this.router = this.createRouterObject(this.state);\n\t\n\t this._unlisten = this.transitionManager.listen(function (error, state) {\n\t if (error) {\n\t _this.handleError(error);\n\t } else {\n\t // Keep the identity of this.router because of a caveat in ContextUtils:\n\t // they only work if the object identity is preserved.\n\t (0, _RouterUtils.assignRouterState)(_this.router, state);\n\t _this.setState(state, _this.props.onUpdate);\n\t }\n\t });\n\t },\n\t\n\t\n\t /* istanbul ignore next: sanity check */\n\t componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n\t false ? (0, _routerWarning2.default)(nextProps.history === this.props.history, 'You cannot change <Router history>; it will be ignored') : void 0;\n\t\n\t false ? (0, _routerWarning2.default)((nextProps.routes || nextProps.children) === (this.props.routes || this.props.children), 'You cannot change <Router routes>; it will be ignored') : void 0;\n\t },\n\t componentWillUnmount: function componentWillUnmount() {\n\t if (this._unlisten) this._unlisten();\n\t },\n\t render: function render() {\n\t var _state = this.state,\n\t location = _state.location,\n\t routes = _state.routes,\n\t params = _state.params,\n\t components = _state.components;\n\t\n\t var _props2 = this.props,\n\t createElement = _props2.createElement,\n\t render = _props2.render,\n\t props = _objectWithoutProperties(_props2, ['createElement', 'render']);\n\t\n\t if (location == null) return null; // Async match\n\t\n\t // Only forward non-Router-specific props to routing context, as those are\n\t // the only ones that might be custom routing context props.\n\t Object.keys(Router.propTypes).forEach(function (propType) {\n\t return delete props[propType];\n\t });\n\t\n\t return render(_extends({}, props, {\n\t router: this.router,\n\t location: location,\n\t routes: routes,\n\t params: params,\n\t components: components,\n\t createElement: createElement\n\t }));\n\t }\n\t});\n\t\n\texports.default = Router;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 400 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports.runEnterHooks = runEnterHooks;\n\texports.runChangeHooks = runChangeHooks;\n\texports.runLeaveHooks = runLeaveHooks;\n\t\n\tvar _AsyncUtils = __webpack_require__(92);\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar PendingHooks = function PendingHooks() {\n\t var _this = this;\n\t\n\t _classCallCheck(this, PendingHooks);\n\t\n\t this.hooks = [];\n\t\n\t this.add = function (hook) {\n\t return _this.hooks.push(hook);\n\t };\n\t\n\t this.remove = function (hook) {\n\t return _this.hooks = _this.hooks.filter(function (h) {\n\t return h !== hook;\n\t });\n\t };\n\t\n\t this.has = function (hook) {\n\t return _this.hooks.indexOf(hook) !== -1;\n\t };\n\t\n\t this.clear = function () {\n\t return _this.hooks = [];\n\t };\n\t};\n\t\n\tvar enterHooks = new PendingHooks();\n\tvar changeHooks = new PendingHooks();\n\t\n\tfunction createTransitionHook(hook, route, asyncArity, pendingHooks) {\n\t var isSync = hook.length < asyncArity;\n\t\n\t var transitionHook = function transitionHook() {\n\t for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\t\n\t hook.apply(route, args);\n\t\n\t if (isSync) {\n\t var callback = args[args.length - 1];\n\t // Assume hook executes synchronously and\n\t // automatically call the callback.\n\t callback();\n\t }\n\t };\n\t\n\t pendingHooks.add(transitionHook);\n\t\n\t return transitionHook;\n\t}\n\t\n\tfunction getEnterHooks(routes) {\n\t return routes.reduce(function (hooks, route) {\n\t if (route.onEnter) hooks.push(createTransitionHook(route.onEnter, route, 3, enterHooks));\n\t return hooks;\n\t }, []);\n\t}\n\t\n\tfunction getChangeHooks(routes) {\n\t return routes.reduce(function (hooks, route) {\n\t if (route.onChange) hooks.push(createTransitionHook(route.onChange, route, 4, changeHooks));\n\t return hooks;\n\t }, []);\n\t}\n\t\n\tfunction runTransitionHooks(length, iter, callback) {\n\t if (!length) {\n\t callback();\n\t return;\n\t }\n\t\n\t var redirectInfo = void 0;\n\t function replace(location) {\n\t redirectInfo = location;\n\t }\n\t\n\t (0, _AsyncUtils.loopAsync)(length, function (index, next, done) {\n\t iter(index, replace, function (error) {\n\t if (error || redirectInfo) {\n\t done(error, redirectInfo); // No need to continue.\n\t } else {\n\t next();\n\t }\n\t });\n\t }, callback);\n\t}\n\t\n\t/**\n\t * Runs all onEnter hooks in the given array of routes in order\n\t * with onEnter(nextState, replace, callback) and calls\n\t * callback(error, redirectInfo) when finished. The first hook\n\t * to use replace short-circuits the loop.\n\t *\n\t * If a hook needs to run asynchronously, it may use the callback\n\t * function. However, doing so will cause the transition to pause,\n\t * which could lead to a non-responsive UI if the hook is slow.\n\t */\n\tfunction runEnterHooks(routes, nextState, callback) {\n\t enterHooks.clear();\n\t var hooks = getEnterHooks(routes);\n\t return runTransitionHooks(hooks.length, function (index, replace, next) {\n\t var wrappedNext = function wrappedNext() {\n\t if (enterHooks.has(hooks[index])) {\n\t next();\n\t enterHooks.remove(hooks[index]);\n\t }\n\t };\n\t hooks[index](nextState, replace, wrappedNext);\n\t }, callback);\n\t}\n\t\n\t/**\n\t * Runs all onChange hooks in the given array of routes in order\n\t * with onChange(prevState, nextState, replace, callback) and calls\n\t * callback(error, redirectInfo) when finished. The first hook\n\t * to use replace short-circuits the loop.\n\t *\n\t * If a hook needs to run asynchronously, it may use the callback\n\t * function. However, doing so will cause the transition to pause,\n\t * which could lead to a non-responsive UI if the hook is slow.\n\t */\n\tfunction runChangeHooks(routes, state, nextState, callback) {\n\t changeHooks.clear();\n\t var hooks = getChangeHooks(routes);\n\t return runTransitionHooks(hooks.length, function (index, replace, next) {\n\t var wrappedNext = function wrappedNext() {\n\t if (changeHooks.has(hooks[index])) {\n\t next();\n\t changeHooks.remove(hooks[index]);\n\t }\n\t };\n\t hooks[index](state, nextState, replace, wrappedNext);\n\t }, callback);\n\t}\n\t\n\t/**\n\t * Runs all onLeave hooks in the given array of routes in order.\n\t */\n\tfunction runLeaveHooks(routes, prevState) {\n\t for (var i = 0, len = routes.length; i < len; ++i) {\n\t if (routes[i].onLeave) routes[i].onLeave.call(routes[i], prevState);\n\t }\n\t}\n\n/***/ },\n/* 401 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _RouterContext = __webpack_require__(95);\n\t\n\tvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\t\n\tvar _routerWarning = __webpack_require__(35);\n\t\n\tvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = function () {\n\t for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n\t middlewares[_key] = arguments[_key];\n\t }\n\t\n\t if (false) {\n\t middlewares.forEach(function (middleware, index) {\n\t process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(middleware.renderRouterContext || middleware.renderRouteComponent, 'The middleware specified at index ' + index + ' does not appear to be ' + 'a valid React Router middleware.') : void 0;\n\t });\n\t }\n\t\n\t var withContext = middlewares.map(function (middleware) {\n\t return middleware.renderRouterContext;\n\t }).filter(Boolean);\n\t var withComponent = middlewares.map(function (middleware) {\n\t return middleware.renderRouteComponent;\n\t }).filter(Boolean);\n\t\n\t var makeCreateElement = function makeCreateElement() {\n\t var baseCreateElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _react.createElement;\n\t return function (Component, props) {\n\t return withComponent.reduceRight(function (previous, renderRouteComponent) {\n\t return renderRouteComponent(previous, props);\n\t }, baseCreateElement(Component, props));\n\t };\n\t };\n\t\n\t return function (renderProps) {\n\t return withContext.reduceRight(function (previous, renderRouterContext) {\n\t return renderRouterContext(previous, renderProps);\n\t }, _react2.default.createElement(_RouterContext2.default, _extends({}, renderProps, {\n\t createElement: makeCreateElement(renderProps.createElement)\n\t })));\n\t };\n\t};\n\t\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 402 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _createBrowserHistory = __webpack_require__(261);\n\t\n\tvar _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);\n\t\n\tvar _createRouterHistory = __webpack_require__(153);\n\t\n\tvar _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = (0, _createRouterHistory2.default)(_createBrowserHistory2.default);\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 403 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _PatternUtils = __webpack_require__(34);\n\t\n\tfunction routeParamsChanged(route, prevState, nextState) {\n\t if (!route.path) return false;\n\t\n\t var paramNames = (0, _PatternUtils.getParamNames)(route.path);\n\t\n\t return paramNames.some(function (paramName) {\n\t return prevState.params[paramName] !== nextState.params[paramName];\n\t });\n\t}\n\t\n\t/**\n\t * Returns an object of { leaveRoutes, changeRoutes, enterRoutes } determined by\n\t * the change from prevState to nextState. We leave routes if either\n\t * 1) they are not in the next state or 2) they are in the next state\n\t * but their params have changed (i.e. /users/123 => /users/456).\n\t *\n\t * leaveRoutes are ordered starting at the leaf route of the tree\n\t * we're leaving up to the common parent route. enterRoutes are ordered\n\t * from the top of the tree we're entering down to the leaf route.\n\t *\n\t * changeRoutes are any routes that didn't leave or enter during\n\t * the transition.\n\t */\n\tfunction computeChangedRoutes(prevState, nextState) {\n\t var prevRoutes = prevState && prevState.routes;\n\t var nextRoutes = nextState.routes;\n\t\n\t var leaveRoutes = void 0,\n\t changeRoutes = void 0,\n\t enterRoutes = void 0;\n\t if (prevRoutes) {\n\t (function () {\n\t var parentIsLeaving = false;\n\t leaveRoutes = prevRoutes.filter(function (route) {\n\t if (parentIsLeaving) {\n\t return true;\n\t } else {\n\t var isLeaving = nextRoutes.indexOf(route) === -1 || routeParamsChanged(route, prevState, nextState);\n\t if (isLeaving) parentIsLeaving = true;\n\t return isLeaving;\n\t }\n\t });\n\t\n\t // onLeave hooks start at the leaf route.\n\t leaveRoutes.reverse();\n\t\n\t enterRoutes = [];\n\t changeRoutes = [];\n\t\n\t nextRoutes.forEach(function (route) {\n\t var isNew = prevRoutes.indexOf(route) === -1;\n\t var paramsChanged = leaveRoutes.indexOf(route) !== -1;\n\t\n\t if (isNew || paramsChanged) enterRoutes.push(route);else changeRoutes.push(route);\n\t });\n\t })();\n\t } else {\n\t leaveRoutes = [];\n\t changeRoutes = [];\n\t enterRoutes = nextRoutes;\n\t }\n\t\n\t return {\n\t leaveRoutes: leaveRoutes,\n\t changeRoutes: changeRoutes,\n\t enterRoutes: enterRoutes\n\t };\n\t}\n\t\n\texports.default = computeChangedRoutes;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 404 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _AsyncUtils = __webpack_require__(92);\n\t\n\tvar _PromiseUtils = __webpack_require__(149);\n\t\n\tfunction getComponentsForRoute(nextState, route, callback) {\n\t if (route.component || route.components) {\n\t callback(null, route.component || route.components);\n\t return;\n\t }\n\t\n\t var getComponent = route.getComponent || route.getComponents;\n\t if (getComponent) {\n\t var componentReturn = getComponent.call(route, nextState, callback);\n\t if ((0, _PromiseUtils.isPromise)(componentReturn)) componentReturn.then(function (component) {\n\t return callback(null, component);\n\t }, callback);\n\t } else {\n\t callback();\n\t }\n\t}\n\t\n\t/**\n\t * Asynchronously fetches all components needed for the given router\n\t * state and calls callback(error, components) when finished.\n\t *\n\t * Note: This operation may finish synchronously if no routes have an\n\t * asynchronous getComponents method.\n\t */\n\tfunction getComponents(nextState, callback) {\n\t (0, _AsyncUtils.mapAsync)(nextState.routes, function (route, index, callback) {\n\t getComponentsForRoute(nextState, route, callback);\n\t }, callback);\n\t}\n\t\n\texports.default = getComponents;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 405 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _PatternUtils = __webpack_require__(34);\n\t\n\t/**\n\t * Extracts an object of params the given route cares about from\n\t * the given params object.\n\t */\n\tfunction getRouteParams(route, params) {\n\t var routeParams = {};\n\t\n\t if (!route.path) return routeParams;\n\t\n\t (0, _PatternUtils.getParamNames)(route.path).forEach(function (p) {\n\t if (Object.prototype.hasOwnProperty.call(params, p)) {\n\t routeParams[p] = params[p];\n\t }\n\t });\n\t\n\t return routeParams;\n\t}\n\t\n\texports.default = getRouteParams;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 406 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _createHashHistory = __webpack_require__(262);\n\t\n\tvar _createHashHistory2 = _interopRequireDefault(_createHashHistory);\n\t\n\tvar _createRouterHistory = __webpack_require__(153);\n\t\n\tvar _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\texports.default = (0, _createRouterHistory2.default)(_createHashHistory2.default);\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 407 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\texports.default = isActive;\n\t\n\tvar _PatternUtils = __webpack_require__(34);\n\t\n\tfunction deepEqual(a, b) {\n\t if (a == b) return true;\n\t\n\t if (a == null || b == null) return false;\n\t\n\t if (Array.isArray(a)) {\n\t return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n\t return deepEqual(item, b[index]);\n\t });\n\t }\n\t\n\t if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object') {\n\t for (var p in a) {\n\t if (!Object.prototype.hasOwnProperty.call(a, p)) {\n\t continue;\n\t }\n\t\n\t if (a[p] === undefined) {\n\t if (b[p] !== undefined) {\n\t return false;\n\t }\n\t } else if (!Object.prototype.hasOwnProperty.call(b, p)) {\n\t return false;\n\t } else if (!deepEqual(a[p], b[p])) {\n\t return false;\n\t }\n\t }\n\t\n\t return true;\n\t }\n\t\n\t return String(a) === String(b);\n\t}\n\t\n\t/**\n\t * Returns true if the current pathname matches the supplied one, net of\n\t * leading and trailing slash normalization. This is sufficient for an\n\t * indexOnly route match.\n\t */\n\tfunction pathIsActive(pathname, currentPathname) {\n\t // Normalize leading slash for consistency. Leading slash on pathname has\n\t // already been normalized in isActive. See caveat there.\n\t if (currentPathname.charAt(0) !== '/') {\n\t currentPathname = '/' + currentPathname;\n\t }\n\t\n\t // Normalize the end of both path names too. Maybe `/foo/` shouldn't show\n\t // `/foo` as active, but in this case, we would already have failed the\n\t // match.\n\t if (pathname.charAt(pathname.length - 1) !== '/') {\n\t pathname += '/';\n\t }\n\t if (currentPathname.charAt(currentPathname.length - 1) !== '/') {\n\t currentPathname += '/';\n\t }\n\t\n\t return currentPathname === pathname;\n\t}\n\t\n\t/**\n\t * Returns true if the given pathname matches the active routes and params.\n\t */\n\tfunction routeIsActive(pathname, routes, params) {\n\t var remainingPathname = pathname,\n\t paramNames = [],\n\t paramValues = [];\n\t\n\t // for...of would work here but it's probably slower post-transpilation.\n\t for (var i = 0, len = routes.length; i < len; ++i) {\n\t var route = routes[i];\n\t var pattern = route.path || '';\n\t\n\t if (pattern.charAt(0) === '/') {\n\t remainingPathname = pathname;\n\t paramNames = [];\n\t paramValues = [];\n\t }\n\t\n\t if (remainingPathname !== null && pattern) {\n\t var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);\n\t if (matched) {\n\t remainingPathname = matched.remainingPathname;\n\t paramNames = [].concat(paramNames, matched.paramNames);\n\t paramValues = [].concat(paramValues, matched.paramValues);\n\t } else {\n\t remainingPathname = null;\n\t }\n\t\n\t if (remainingPathname === '') {\n\t // We have an exact match on the route. Just check that all the params\n\t // match.\n\t // FIXME: This doesn't work on repeated params.\n\t return paramNames.every(function (paramName, index) {\n\t return String(paramValues[index]) === String(params[paramName]);\n\t });\n\t }\n\t }\n\t }\n\t\n\t return false;\n\t}\n\t\n\t/**\n\t * Returns true if all key/value pairs in the given query are\n\t * currently active.\n\t */\n\tfunction queryIsActive(query, activeQuery) {\n\t if (activeQuery == null) return query == null;\n\t\n\t if (query == null) return true;\n\t\n\t return deepEqual(query, activeQuery);\n\t}\n\t\n\t/**\n\t * Returns true if a <Link> to the given pathname/query combination is\n\t * currently active.\n\t */\n\tfunction isActive(_ref, indexOnly, currentLocation, routes, params) {\n\t var pathname = _ref.pathname,\n\t query = _ref.query;\n\t\n\t if (currentLocation == null) return false;\n\t\n\t // TODO: This is a bit ugly. It keeps around support for treating pathnames\n\t // without preceding slashes as absolute paths, but possibly also works\n\t // around the same quirks with basenames as in matchRoutes.\n\t if (pathname.charAt(0) !== '/') {\n\t pathname = '/' + pathname;\n\t }\n\t\n\t if (!pathIsActive(pathname, currentLocation.pathname)) {\n\t // The path check is necessary and sufficient for indexOnly, but otherwise\n\t // we still need to check the routes.\n\t if (indexOnly || !routeIsActive(pathname, routes, params)) {\n\t return false;\n\t }\n\t }\n\t\n\t return queryIsActive(query, currentLocation.query);\n\t}\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 408 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _Actions = __webpack_require__(49);\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _createMemoryHistory = __webpack_require__(152);\n\t\n\tvar _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);\n\t\n\tvar _createTransitionManager = __webpack_require__(154);\n\t\n\tvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\t\n\tvar _RouteUtils = __webpack_require__(24);\n\t\n\tvar _RouterUtils = __webpack_require__(151);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\t\n\t/**\n\t * A high-level API to be used for server-side rendering.\n\t *\n\t * This function matches a location to a set of routes and calls\n\t * callback(error, redirectLocation, renderProps) when finished.\n\t *\n\t * Note: You probably don't want to use this in a browser unless you're using\n\t * server-side rendering with async routes.\n\t */\n\tfunction match(_ref, callback) {\n\t var history = _ref.history,\n\t routes = _ref.routes,\n\t location = _ref.location,\n\t options = _objectWithoutProperties(_ref, ['history', 'routes', 'location']);\n\t\n\t !(history || location) ? false ? (0, _invariant2.default)(false, 'match needs a history or a location') : (0, _invariant2.default)(false) : void 0;\n\t\n\t history = history ? history : (0, _createMemoryHistory2.default)(options);\n\t var transitionManager = (0, _createTransitionManager2.default)(history, (0, _RouteUtils.createRoutes)(routes));\n\t\n\t if (location) {\n\t // Allow match({ location: '/the/path', ... })\n\t location = history.createLocation(location);\n\t } else {\n\t location = history.getCurrentLocation();\n\t }\n\t\n\t transitionManager.match(location, function (error, redirectLocation, nextState) {\n\t var renderProps = void 0;\n\t\n\t if (nextState) {\n\t var router = (0, _RouterUtils.createRouterObject)(history, transitionManager, nextState);\n\t renderProps = _extends({}, nextState, {\n\t router: router,\n\t matchContext: { transitionManager: transitionManager, router: router }\n\t });\n\t }\n\t\n\t callback(error, redirectLocation && history.createLocation(redirectLocation, _Actions.REPLACE), renderProps);\n\t });\n\t}\n\t\n\texports.default = match;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 409 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\t\n\texports.default = matchRoutes;\n\t\n\tvar _AsyncUtils = __webpack_require__(92);\n\t\n\tvar _PromiseUtils = __webpack_require__(149);\n\t\n\tvar _PatternUtils = __webpack_require__(34);\n\t\n\tvar _routerWarning = __webpack_require__(35);\n\t\n\tvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\t\n\tvar _RouteUtils = __webpack_require__(24);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction getChildRoutes(route, location, paramNames, paramValues, callback) {\n\t if (route.childRoutes) {\n\t return [null, route.childRoutes];\n\t }\n\t if (!route.getChildRoutes) {\n\t return [];\n\t }\n\t\n\t var sync = true,\n\t result = void 0;\n\t\n\t var partialNextState = {\n\t location: location,\n\t params: createParams(paramNames, paramValues)\n\t };\n\t\n\t var childRoutesReturn = route.getChildRoutes(partialNextState, function (error, childRoutes) {\n\t childRoutes = !error && (0, _RouteUtils.createRoutes)(childRoutes);\n\t if (sync) {\n\t result = [error, childRoutes];\n\t return;\n\t }\n\t\n\t callback(error, childRoutes);\n\t });\n\t\n\t if ((0, _PromiseUtils.isPromise)(childRoutesReturn)) childRoutesReturn.then(function (childRoutes) {\n\t return callback(null, (0, _RouteUtils.createRoutes)(childRoutes));\n\t }, callback);\n\t\n\t sync = false;\n\t return result; // Might be undefined.\n\t}\n\t\n\tfunction getIndexRoute(route, location, paramNames, paramValues, callback) {\n\t if (route.indexRoute) {\n\t callback(null, route.indexRoute);\n\t } else if (route.getIndexRoute) {\n\t var partialNextState = {\n\t location: location,\n\t params: createParams(paramNames, paramValues)\n\t };\n\t\n\t var indexRoutesReturn = route.getIndexRoute(partialNextState, function (error, indexRoute) {\n\t callback(error, !error && (0, _RouteUtils.createRoutes)(indexRoute)[0]);\n\t });\n\t\n\t if ((0, _PromiseUtils.isPromise)(indexRoutesReturn)) indexRoutesReturn.then(function (indexRoute) {\n\t return callback(null, (0, _RouteUtils.createRoutes)(indexRoute)[0]);\n\t }, callback);\n\t } else if (route.childRoutes) {\n\t (function () {\n\t var pathless = route.childRoutes.filter(function (childRoute) {\n\t return !childRoute.path;\n\t });\n\t\n\t (0, _AsyncUtils.loopAsync)(pathless.length, function (index, next, done) {\n\t getIndexRoute(pathless[index], location, paramNames, paramValues, function (error, indexRoute) {\n\t if (error || indexRoute) {\n\t var routes = [pathless[index]].concat(Array.isArray(indexRoute) ? indexRoute : [indexRoute]);\n\t done(error, routes);\n\t } else {\n\t next();\n\t }\n\t });\n\t }, function (err, routes) {\n\t callback(null, routes);\n\t });\n\t })();\n\t } else {\n\t callback();\n\t }\n\t}\n\t\n\tfunction assignParams(params, paramNames, paramValues) {\n\t return paramNames.reduce(function (params, paramName, index) {\n\t var paramValue = paramValues && paramValues[index];\n\t\n\t if (Array.isArray(params[paramName])) {\n\t params[paramName].push(paramValue);\n\t } else if (paramName in params) {\n\t params[paramName] = [params[paramName], paramValue];\n\t } else {\n\t params[paramName] = paramValue;\n\t }\n\t\n\t return params;\n\t }, params);\n\t}\n\t\n\tfunction createParams(paramNames, paramValues) {\n\t return assignParams({}, paramNames, paramValues);\n\t}\n\t\n\tfunction matchRouteDeep(route, location, remainingPathname, paramNames, paramValues, callback) {\n\t var pattern = route.path || '';\n\t\n\t if (pattern.charAt(0) === '/') {\n\t remainingPathname = location.pathname;\n\t paramNames = [];\n\t paramValues = [];\n\t }\n\t\n\t // Only try to match the path if the route actually has a pattern, and if\n\t // we're not just searching for potential nested absolute paths.\n\t if (remainingPathname !== null && pattern) {\n\t try {\n\t var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);\n\t if (matched) {\n\t remainingPathname = matched.remainingPathname;\n\t paramNames = [].concat(paramNames, matched.paramNames);\n\t paramValues = [].concat(paramValues, matched.paramValues);\n\t } else {\n\t remainingPathname = null;\n\t }\n\t } catch (error) {\n\t callback(error);\n\t }\n\t\n\t // By assumption, pattern is non-empty here, which is the prerequisite for\n\t // actually terminating a match.\n\t if (remainingPathname === '') {\n\t var _ret2 = function () {\n\t var match = {\n\t routes: [route],\n\t params: createParams(paramNames, paramValues)\n\t };\n\t\n\t getIndexRoute(route, location, paramNames, paramValues, function (error, indexRoute) {\n\t if (error) {\n\t callback(error);\n\t } else {\n\t if (Array.isArray(indexRoute)) {\n\t var _match$routes;\n\t\n\t false ? (0, _routerWarning2.default)(indexRoute.every(function (route) {\n\t return !route.path;\n\t }), 'Index routes should not have paths') : void 0;\n\t (_match$routes = match.routes).push.apply(_match$routes, indexRoute);\n\t } else if (indexRoute) {\n\t false ? (0, _routerWarning2.default)(!indexRoute.path, 'Index routes should not have paths') : void 0;\n\t match.routes.push(indexRoute);\n\t }\n\t\n\t callback(null, match);\n\t }\n\t });\n\t\n\t return {\n\t v: void 0\n\t };\n\t }();\n\t\n\t if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === \"object\") return _ret2.v;\n\t }\n\t }\n\t\n\t if (remainingPathname != null || route.childRoutes) {\n\t // Either a) this route matched at least some of the path or b)\n\t // we don't have to load this route's children asynchronously. In\n\t // either case continue checking for matches in the subtree.\n\t var onChildRoutes = function onChildRoutes(error, childRoutes) {\n\t if (error) {\n\t callback(error);\n\t } else if (childRoutes) {\n\t // Check the child routes to see if any of them match.\n\t matchRoutes(childRoutes, location, function (error, match) {\n\t if (error) {\n\t callback(error);\n\t } else if (match) {\n\t // A child route matched! Augment the match and pass it up the stack.\n\t match.routes.unshift(route);\n\t callback(null, match);\n\t } else {\n\t callback();\n\t }\n\t }, remainingPathname, paramNames, paramValues);\n\t } else {\n\t callback();\n\t }\n\t };\n\t\n\t var result = getChildRoutes(route, location, paramNames, paramValues, onChildRoutes);\n\t if (result) {\n\t onChildRoutes.apply(undefined, result);\n\t }\n\t } else {\n\t callback();\n\t }\n\t}\n\t\n\t/**\n\t * Asynchronously matches the given location to a set of routes and calls\n\t * callback(error, state) when finished. The state object will have the\n\t * following properties:\n\t *\n\t * - routes An array of routes that matched, in hierarchical order\n\t * - params An object of URL parameters\n\t *\n\t * Note: This operation may finish synchronously if no routes have an\n\t * asynchronous getChildRoutes method.\n\t */\n\tfunction matchRoutes(routes, location, callback, remainingPathname) {\n\t var paramNames = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n\t var paramValues = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n\t\n\t if (remainingPathname === undefined) {\n\t // TODO: This is a little bit ugly, but it works around a quirk in history\n\t // that strips the leading slash from pathnames when using basenames with\n\t // trailing slashes.\n\t if (location.pathname.charAt(0) !== '/') {\n\t location = _extends({}, location, {\n\t pathname: '/' + location.pathname\n\t });\n\t }\n\t remainingPathname = location.pathname;\n\t }\n\t\n\t (0, _AsyncUtils.loopAsync)(routes.length, function (index, next, done) {\n\t matchRouteDeep(routes[index], location, remainingPathname, paramNames, paramValues, function (error, match) {\n\t if (error || match) {\n\t done(error, match);\n\t } else {\n\t next();\n\t }\n\t });\n\t }, callback);\n\t}\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 410 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\texports.default = withRouter;\n\t\n\tvar _invariant = __webpack_require__(10);\n\t\n\tvar _invariant2 = _interopRequireDefault(_invariant);\n\t\n\tvar _react = __webpack_require__(1);\n\t\n\tvar _react2 = _interopRequireDefault(_react);\n\t\n\tvar _hoistNonReactStatics = __webpack_require__(115);\n\t\n\tvar _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);\n\t\n\tvar _ContextUtils = __webpack_require__(93);\n\t\n\tvar _PropTypes = __webpack_require__(94);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction getDisplayName(WrappedComponent) {\n\t return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n\t}\n\t\n\tfunction withRouter(WrappedComponent, options) {\n\t var withRef = options && options.withRef;\n\t\n\t var WithRouter = _react2.default.createClass({\n\t displayName: 'WithRouter',\n\t\n\t mixins: [(0, _ContextUtils.ContextSubscriber)('router')],\n\t\n\t contextTypes: { router: _PropTypes.routerShape },\n\t propTypes: { router: _PropTypes.routerShape },\n\t\n\t getWrappedInstance: function getWrappedInstance() {\n\t !withRef ? false ? (0, _invariant2.default)(false, 'To access the wrapped instance, you need to specify ' + '`{ withRef: true }` as the second argument of the withRouter() call.') : (0, _invariant2.default)(false) : void 0;\n\t\n\t return this.wrappedInstance;\n\t },\n\t render: function render() {\n\t var _this = this;\n\t\n\t var router = this.props.router || this.context.router;\n\t var params = router.params,\n\t location = router.location,\n\t routes = router.routes;\n\t\n\t var props = _extends({}, this.props, { router: router, params: params, location: location, routes: routes });\n\t\n\t if (withRef) {\n\t props.ref = function (c) {\n\t _this.wrappedInstance = c;\n\t };\n\t }\n\t\n\t return _react2.default.createElement(WrappedComponent, props);\n\t }\n\t });\n\t\n\t WithRouter.displayName = 'withRouter(' + getDisplayName(WrappedComponent) + ')';\n\t WithRouter.WrappedComponent = WrappedComponent;\n\t\n\t return (0, _hoistNonReactStatics2.default)(WithRouter, WrappedComponent);\n\t}\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 411 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\t/**\n\t * Escape and wrap key so it is safe to use as a reactid\n\t *\n\t * @param {string} key to be escaped.\n\t * @return {string} the escaped key.\n\t */\n\t\n\tfunction escape(key) {\n\t var escapeRegex = /[=:]/g;\n\t var escaperLookup = {\n\t '=': '=0',\n\t ':': '=2'\n\t };\n\t var escapedString = ('' + key).replace(escapeRegex, function (match) {\n\t return escaperLookup[match];\n\t });\n\t\n\t return '$' + escapedString;\n\t}\n\t\n\t/**\n\t * Unescape and unwrap key for human-readable display\n\t *\n\t * @param {string} key to unescape.\n\t * @return {string} the unescaped key.\n\t */\n\tfunction unescape(key) {\n\t var unescapeRegex = /(=0|=2)/g;\n\t var unescaperLookup = {\n\t '=0': '=',\n\t '=2': ':'\n\t };\n\t var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\t\n\t return ('' + keySubstring).replace(unescapeRegex, function (match) {\n\t return unescaperLookup[match];\n\t });\n\t}\n\t\n\tvar KeyEscapeUtils = {\n\t escape: escape,\n\t unescape: unescape\n\t};\n\t\n\tmodule.exports = KeyEscapeUtils;\n\n/***/ },\n/* 412 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(38);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * Static poolers. Several custom versions for each potential number of\n\t * arguments. A completely generic pooler is easy to implement, but would\n\t * require accessing the `arguments` object. In each of these, `this` refers to\n\t * the Class itself, not an instance. If any others are needed, simply add them\n\t * here, or in their own files.\n\t */\n\tvar oneArgumentPooler = function (copyFieldsFrom) {\n\t var Klass = this;\n\t if (Klass.instancePool.length) {\n\t var instance = Klass.instancePool.pop();\n\t Klass.call(instance, copyFieldsFrom);\n\t return instance;\n\t } else {\n\t return new Klass(copyFieldsFrom);\n\t }\n\t};\n\t\n\tvar twoArgumentPooler = function (a1, a2) {\n\t var Klass = this;\n\t if (Klass.instancePool.length) {\n\t var instance = Klass.instancePool.pop();\n\t Klass.call(instance, a1, a2);\n\t return instance;\n\t } else {\n\t return new Klass(a1, a2);\n\t }\n\t};\n\t\n\tvar threeArgumentPooler = function (a1, a2, a3) {\n\t var Klass = this;\n\t if (Klass.instancePool.length) {\n\t var instance = Klass.instancePool.pop();\n\t Klass.call(instance, a1, a2, a3);\n\t return instance;\n\t } else {\n\t return new Klass(a1, a2, a3);\n\t }\n\t};\n\t\n\tvar fourArgumentPooler = function (a1, a2, a3, a4) {\n\t var Klass = this;\n\t if (Klass.instancePool.length) {\n\t var instance = Klass.instancePool.pop();\n\t Klass.call(instance, a1, a2, a3, a4);\n\t return instance;\n\t } else {\n\t return new Klass(a1, a2, a3, a4);\n\t }\n\t};\n\t\n\tvar fiveArgumentPooler = function (a1, a2, a3, a4, a5) {\n\t var Klass = this;\n\t if (Klass.instancePool.length) {\n\t var instance = Klass.instancePool.pop();\n\t Klass.call(instance, a1, a2, a3, a4, a5);\n\t return instance;\n\t } else {\n\t return new Klass(a1, a2, a3, a4, a5);\n\t }\n\t};\n\t\n\tvar standardReleaser = function (instance) {\n\t var Klass = this;\n\t !(instance instanceof Klass) ? false ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n\t instance.destructor();\n\t if (Klass.instancePool.length < Klass.poolSize) {\n\t Klass.instancePool.push(instance);\n\t }\n\t};\n\t\n\tvar DEFAULT_POOL_SIZE = 10;\n\tvar DEFAULT_POOLER = oneArgumentPooler;\n\t\n\t/**\n\t * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n\t * itself (statically) not adding any prototypical fields. Any CopyConstructor\n\t * you give this may have a `poolSize` property, and will look for a\n\t * prototypical `destructor` on instances.\n\t *\n\t * @param {Function} CopyConstructor Constructor that can be used to reset.\n\t * @param {Function} pooler Customizable pooler.\n\t */\n\tvar addPoolingTo = function (CopyConstructor, pooler) {\n\t // Casting as any so that flow ignores the actual implementation and trusts\n\t // it to match the type we declared\n\t var NewKlass = CopyConstructor;\n\t NewKlass.instancePool = [];\n\t NewKlass.getPooled = pooler || DEFAULT_POOLER;\n\t if (!NewKlass.poolSize) {\n\t NewKlass.poolSize = DEFAULT_POOL_SIZE;\n\t }\n\t NewKlass.release = standardReleaser;\n\t return NewKlass;\n\t};\n\t\n\tvar PooledClass = {\n\t addPoolingTo: addPoolingTo,\n\t oneArgumentPooler: oneArgumentPooler,\n\t twoArgumentPooler: twoArgumentPooler,\n\t threeArgumentPooler: threeArgumentPooler,\n\t fourArgumentPooler: fourArgumentPooler,\n\t fiveArgumentPooler: fiveArgumentPooler\n\t};\n\t\n\tmodule.exports = PooledClass;\n\n/***/ },\n/* 413 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar PooledClass = __webpack_require__(412);\n\tvar ReactElement = __webpack_require__(37);\n\t\n\tvar emptyFunction = __webpack_require__(16);\n\tvar traverseAllChildren = __webpack_require__(421);\n\t\n\tvar twoArgumentPooler = PooledClass.twoArgumentPooler;\n\tvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\t\n\tvar userProvidedKeyEscapeRegex = /\\/+/g;\n\tfunction escapeUserProvidedKey(text) {\n\t return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n\t}\n\t\n\t/**\n\t * PooledClass representing the bookkeeping associated with performing a child\n\t * traversal. Allows avoiding binding callbacks.\n\t *\n\t * @constructor ForEachBookKeeping\n\t * @param {!function} forEachFunction Function to perform traversal with.\n\t * @param {?*} forEachContext Context to perform context with.\n\t */\n\tfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n\t this.func = forEachFunction;\n\t this.context = forEachContext;\n\t this.count = 0;\n\t}\n\tForEachBookKeeping.prototype.destructor = function () {\n\t this.func = null;\n\t this.context = null;\n\t this.count = 0;\n\t};\n\tPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\t\n\tfunction forEachSingleChild(bookKeeping, child, name) {\n\t var func = bookKeeping.func,\n\t context = bookKeeping.context;\n\t\n\t func.call(context, child, bookKeeping.count++);\n\t}\n\t\n\t/**\n\t * Iterates through children that are typically specified as `props.children`.\n\t *\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n\t *\n\t * The provided forEachFunc(child, index) will be called for each\n\t * leaf child.\n\t *\n\t * @param {?*} children Children tree container.\n\t * @param {function(*, int)} forEachFunc\n\t * @param {*} forEachContext Context for forEachContext.\n\t */\n\tfunction forEachChildren(children, forEachFunc, forEachContext) {\n\t if (children == null) {\n\t return children;\n\t }\n\t var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n\t traverseAllChildren(children, forEachSingleChild, traverseContext);\n\t ForEachBookKeeping.release(traverseContext);\n\t}\n\t\n\t/**\n\t * PooledClass representing the bookkeeping associated with performing a child\n\t * mapping. Allows avoiding binding callbacks.\n\t *\n\t * @constructor MapBookKeeping\n\t * @param {!*} mapResult Object containing the ordered map of results.\n\t * @param {!function} mapFunction Function to perform mapping with.\n\t * @param {?*} mapContext Context to perform mapping with.\n\t */\n\tfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n\t this.result = mapResult;\n\t this.keyPrefix = keyPrefix;\n\t this.func = mapFunction;\n\t this.context = mapContext;\n\t this.count = 0;\n\t}\n\tMapBookKeeping.prototype.destructor = function () {\n\t this.result = null;\n\t this.keyPrefix = null;\n\t this.func = null;\n\t this.context = null;\n\t this.count = 0;\n\t};\n\tPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\t\n\tfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n\t var result = bookKeeping.result,\n\t keyPrefix = bookKeeping.keyPrefix,\n\t func = bookKeeping.func,\n\t context = bookKeeping.context;\n\t\n\t\n\t var mappedChild = func.call(context, child, bookKeeping.count++);\n\t if (Array.isArray(mappedChild)) {\n\t mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n\t } else if (mappedChild != null) {\n\t if (ReactElement.isValidElement(mappedChild)) {\n\t mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n\t // Keep both the (mapped) and old keys if they differ, just as\n\t // traverseAllChildren used to do for objects as children\n\t keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n\t }\n\t result.push(mappedChild);\n\t }\n\t}\n\t\n\tfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n\t var escapedPrefix = '';\n\t if (prefix != null) {\n\t escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n\t }\n\t var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n\t traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n\t MapBookKeeping.release(traverseContext);\n\t}\n\t\n\t/**\n\t * Maps children that are typically specified as `props.children`.\n\t *\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n\t *\n\t * The provided mapFunction(child, key, index) will be called for each\n\t * leaf child.\n\t *\n\t * @param {?*} children Children tree container.\n\t * @param {function(*, int)} func The map function.\n\t * @param {*} context Context for mapFunction.\n\t * @return {object} Object containing the ordered map of results.\n\t */\n\tfunction mapChildren(children, func, context) {\n\t if (children == null) {\n\t return children;\n\t }\n\t var result = [];\n\t mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n\t return result;\n\t}\n\t\n\tfunction forEachSingleChildDummy(traverseContext, child, name) {\n\t return null;\n\t}\n\t\n\t/**\n\t * Count the number of children that are typically specified as\n\t * `props.children`.\n\t *\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n\t *\n\t * @param {?*} children Children tree container.\n\t * @return {number} The number of children.\n\t */\n\tfunction countChildren(children, context) {\n\t return traverseAllChildren(children, forEachSingleChildDummy, null);\n\t}\n\t\n\t/**\n\t * Flatten a children object (typically specified as `props.children`) and\n\t * return an array with appropriately re-keyed children.\n\t *\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n\t */\n\tfunction toArray(children) {\n\t var result = [];\n\t mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n\t return result;\n\t}\n\t\n\tvar ReactChildren = {\n\t forEach: forEachChildren,\n\t map: mapChildren,\n\t mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n\t count: countChildren,\n\t toArray: toArray\n\t};\n\t\n\tmodule.exports = ReactChildren;\n\n/***/ },\n/* 414 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(38),\n\t _assign = __webpack_require__(6);\n\t\n\tvar ReactComponent = __webpack_require__(96);\n\tvar ReactElement = __webpack_require__(37);\n\tvar ReactPropTypeLocationNames = __webpack_require__(158);\n\tvar ReactNoopUpdateQueue = __webpack_require__(97);\n\t\n\tvar emptyObject = __webpack_require__(39);\n\tvar invariant = __webpack_require__(3);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar MIXINS_KEY = 'mixins';\n\t\n\t// Helper function to allow the creation of anonymous functions which do not\n\t// have .name set to the name of the variable being assigned to.\n\tfunction identity(fn) {\n\t return fn;\n\t}\n\t\n\t/**\n\t * Policies that describe methods in `ReactClassInterface`.\n\t */\n\t\n\t\n\tvar injectedMixins = [];\n\t\n\t/**\n\t * Composite components are higher-level components that compose other composite\n\t * or host components.\n\t *\n\t * To create a new type of `ReactClass`, pass a specification of\n\t * your new class to `React.createClass`. The only requirement of your class\n\t * specification is that you implement a `render` method.\n\t *\n\t * var MyComponent = React.createClass({\n\t * render: function() {\n\t * return <div>Hello World</div>;\n\t * }\n\t * });\n\t *\n\t * The class specification supports a specific protocol of methods that have\n\t * special meaning (e.g. `render`). See `ReactClassInterface` for\n\t * more the comprehensive protocol. Any other properties and methods in the\n\t * class specification will be available on the prototype.\n\t *\n\t * @interface ReactClassInterface\n\t * @internal\n\t */\n\tvar ReactClassInterface = {\n\t\n\t /**\n\t * An array of Mixin objects to include when defining your component.\n\t *\n\t * @type {array}\n\t * @optional\n\t */\n\t mixins: 'DEFINE_MANY',\n\t\n\t /**\n\t * An object containing properties and methods that should be defined on\n\t * the component's constructor instead of its prototype (static methods).\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t statics: 'DEFINE_MANY',\n\t\n\t /**\n\t * Definition of prop types for this component.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t propTypes: 'DEFINE_MANY',\n\t\n\t /**\n\t * Definition of context types for this component.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t contextTypes: 'DEFINE_MANY',\n\t\n\t /**\n\t * Definition of context types this component sets for its children.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t childContextTypes: 'DEFINE_MANY',\n\t\n\t // ==== Definition methods ====\n\t\n\t /**\n\t * Invoked when the component is mounted. Values in the mapping will be set on\n\t * `this.props` if that prop is not specified (i.e. using an `in` check).\n\t *\n\t * This method is invoked before `getInitialState` and therefore cannot rely\n\t * on `this.state` or use `this.setState`.\n\t *\n\t * @return {object}\n\t * @optional\n\t */\n\t getDefaultProps: 'DEFINE_MANY_MERGED',\n\t\n\t /**\n\t * Invoked once before the component is mounted. The return value will be used\n\t * as the initial value of `this.state`.\n\t *\n\t * getInitialState: function() {\n\t * return {\n\t * isOn: false,\n\t * fooBaz: new BazFoo()\n\t * }\n\t * }\n\t *\n\t * @return {object}\n\t * @optional\n\t */\n\t getInitialState: 'DEFINE_MANY_MERGED',\n\t\n\t /**\n\t * @return {object}\n\t * @optional\n\t */\n\t getChildContext: 'DEFINE_MANY_MERGED',\n\t\n\t /**\n\t * Uses props from `this.props` and state from `this.state` to render the\n\t * structure of the component.\n\t *\n\t * No guarantees are made about when or how often this method is invoked, so\n\t * it must not have side effects.\n\t *\n\t * render: function() {\n\t * var name = this.props.name;\n\t * return <div>Hello, {name}!</div>;\n\t * }\n\t *\n\t * @return {ReactComponent}\n\t * @nosideeffects\n\t * @required\n\t */\n\t render: 'DEFINE_ONCE',\n\t\n\t // ==== Delegate methods ====\n\t\n\t /**\n\t * Invoked when the component is initially created and about to be mounted.\n\t * This may have side effects, but any external subscriptions or data created\n\t * by this method must be cleaned up in `componentWillUnmount`.\n\t *\n\t * @optional\n\t */\n\t componentWillMount: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked when the component has been mounted and has a DOM representation.\n\t * However, there is no guarantee that the DOM node is in the document.\n\t *\n\t * Use this as an opportunity to operate on the DOM when the component has\n\t * been mounted (initialized and rendered) for the first time.\n\t *\n\t * @param {DOMElement} rootNode DOM element representing the component.\n\t * @optional\n\t */\n\t componentDidMount: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked before the component receives new props.\n\t *\n\t * Use this as an opportunity to react to a prop transition by updating the\n\t * state using `this.setState`. Current props are accessed via `this.props`.\n\t *\n\t * componentWillReceiveProps: function(nextProps, nextContext) {\n\t * this.setState({\n\t * likesIncreasing: nextProps.likeCount > this.props.likeCount\n\t * });\n\t * }\n\t *\n\t * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n\t * transition may cause a state change, but the opposite is not true. If you\n\t * need it, you are probably looking for `componentWillUpdate`.\n\t *\n\t * @param {object} nextProps\n\t * @optional\n\t */\n\t componentWillReceiveProps: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked while deciding if the component should be updated as a result of\n\t * receiving new props, state and/or context.\n\t *\n\t * Use this as an opportunity to `return false` when you're certain that the\n\t * transition to the new props/state/context will not require a component\n\t * update.\n\t *\n\t * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n\t * return !equal(nextProps, this.props) ||\n\t * !equal(nextState, this.state) ||\n\t * !equal(nextContext, this.context);\n\t * }\n\t *\n\t * @param {object} nextProps\n\t * @param {?object} nextState\n\t * @param {?object} nextContext\n\t * @return {boolean} True if the component should update.\n\t * @optional\n\t */\n\t shouldComponentUpdate: 'DEFINE_ONCE',\n\t\n\t /**\n\t * Invoked when the component is about to update due to a transition from\n\t * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n\t * and `nextContext`.\n\t *\n\t * Use this as an opportunity to perform preparation before an update occurs.\n\t *\n\t * NOTE: You **cannot** use `this.setState()` in this method.\n\t *\n\t * @param {object} nextProps\n\t * @param {?object} nextState\n\t * @param {?object} nextContext\n\t * @param {ReactReconcileTransaction} transaction\n\t * @optional\n\t */\n\t componentWillUpdate: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked when the component's DOM representation has been updated.\n\t *\n\t * Use this as an opportunity to operate on the DOM when the component has\n\t * been updated.\n\t *\n\t * @param {object} prevProps\n\t * @param {?object} prevState\n\t * @param {?object} prevContext\n\t * @param {DOMElement} rootNode DOM element representing the component.\n\t * @optional\n\t */\n\t componentDidUpdate: 'DEFINE_MANY',\n\t\n\t /**\n\t * Invoked when the component is about to be removed from its parent and have\n\t * its DOM representation destroyed.\n\t *\n\t * Use this as an opportunity to deallocate any external resources.\n\t *\n\t * NOTE: There is no `componentDidUnmount` since your component will have been\n\t * destroyed by that point.\n\t *\n\t * @optional\n\t */\n\t componentWillUnmount: 'DEFINE_MANY',\n\t\n\t // ==== Advanced methods ====\n\t\n\t /**\n\t * Updates the component's currently mounted DOM representation.\n\t *\n\t * By default, this implements React's rendering and reconciliation algorithm.\n\t * Sophisticated clients may wish to override this.\n\t *\n\t * @param {ReactReconcileTransaction} transaction\n\t * @internal\n\t * @overridable\n\t */\n\t updateComponent: 'OVERRIDE_BASE'\n\t\n\t};\n\t\n\t/**\n\t * Mapping from class specification keys to special processing functions.\n\t *\n\t * Although these are declared like instance properties in the specification\n\t * when defining classes using `React.createClass`, they are actually static\n\t * and are accessible on the constructor instead of the prototype. Despite\n\t * being static, they must be defined outside of the \"statics\" key under\n\t * which all other static methods are defined.\n\t */\n\tvar RESERVED_SPEC_KEYS = {\n\t displayName: function (Constructor, displayName) {\n\t Constructor.displayName = displayName;\n\t },\n\t mixins: function (Constructor, mixins) {\n\t if (mixins) {\n\t for (var i = 0; i < mixins.length; i++) {\n\t mixSpecIntoComponent(Constructor, mixins[i]);\n\t }\n\t }\n\t },\n\t childContextTypes: function (Constructor, childContextTypes) {\n\t if (false) {\n\t validateTypeDef(Constructor, childContextTypes, 'childContext');\n\t }\n\t Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);\n\t },\n\t contextTypes: function (Constructor, contextTypes) {\n\t if (false) {\n\t validateTypeDef(Constructor, contextTypes, 'context');\n\t }\n\t Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);\n\t },\n\t /**\n\t * Special case getDefaultProps which should move into statics but requires\n\t * automatic merging.\n\t */\n\t getDefaultProps: function (Constructor, getDefaultProps) {\n\t if (Constructor.getDefaultProps) {\n\t Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);\n\t } else {\n\t Constructor.getDefaultProps = getDefaultProps;\n\t }\n\t },\n\t propTypes: function (Constructor, propTypes) {\n\t if (false) {\n\t validateTypeDef(Constructor, propTypes, 'prop');\n\t }\n\t Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n\t },\n\t statics: function (Constructor, statics) {\n\t mixStaticSpecIntoComponent(Constructor, statics);\n\t },\n\t autobind: function () {} };\n\t\n\tfunction validateTypeDef(Constructor, typeDef, location) {\n\t for (var propName in typeDef) {\n\t if (typeDef.hasOwnProperty(propName)) {\n\t // use a warning instead of an invariant so components\n\t // don't show up in prod but only in __DEV__\n\t false ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0;\n\t }\n\t }\n\t}\n\t\n\tfunction validateMethodOverride(isAlreadyDefined, name) {\n\t var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;\n\t\n\t // Disallow overriding of base class methods unless explicitly allowed.\n\t if (ReactClassMixin.hasOwnProperty(name)) {\n\t !(specPolicy === 'OVERRIDE_BASE') ? false ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0;\n\t }\n\t\n\t // Disallow defining methods more than once unless explicitly allowed.\n\t if (isAlreadyDefined) {\n\t !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? false ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0;\n\t }\n\t}\n\t\n\t/**\n\t * Mixin helper which handles policy validation and reserved\n\t * specification keys when building React classes.\n\t */\n\tfunction mixSpecIntoComponent(Constructor, spec) {\n\t if (!spec) {\n\t if (false) {\n\t var typeofSpec = typeof spec;\n\t var isMixinValid = typeofSpec === 'object' && spec !== null;\n\t\n\t process.env.NODE_ENV !== 'production' ? warning(isMixinValid, '%s: You\\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0;\n\t }\n\t\n\t return;\n\t }\n\t\n\t !(typeof spec !== 'function') ? false ? invariant(false, 'ReactClass: You\\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0;\n\t !!ReactElement.isValidElement(spec) ? false ? invariant(false, 'ReactClass: You\\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;\n\t\n\t var proto = Constructor.prototype;\n\t var autoBindPairs = proto.__reactAutoBindPairs;\n\t\n\t // By handling mixins before any other properties, we ensure the same\n\t // chaining order is applied to methods with DEFINE_MANY policy, whether\n\t // mixins are listed before or after these methods in the spec.\n\t if (spec.hasOwnProperty(MIXINS_KEY)) {\n\t RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n\t }\n\t\n\t for (var name in spec) {\n\t if (!spec.hasOwnProperty(name)) {\n\t continue;\n\t }\n\t\n\t if (name === MIXINS_KEY) {\n\t // We have already handled mixins in a special case above.\n\t continue;\n\t }\n\t\n\t var property = spec[name];\n\t var isAlreadyDefined = proto.hasOwnProperty(name);\n\t validateMethodOverride(isAlreadyDefined, name);\n\t\n\t if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n\t RESERVED_SPEC_KEYS[name](Constructor, property);\n\t } else {\n\t // Setup methods on prototype:\n\t // The following member methods should not be automatically bound:\n\t // 1. Expected ReactClass methods (in the \"interface\").\n\t // 2. Overridden methods (that were mixed in).\n\t var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n\t var isFunction = typeof property === 'function';\n\t var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;\n\t\n\t if (shouldAutoBind) {\n\t autoBindPairs.push(name, property);\n\t proto[name] = property;\n\t } else {\n\t if (isAlreadyDefined) {\n\t var specPolicy = ReactClassInterface[name];\n\t\n\t // These cases should already be caught by validateMethodOverride.\n\t !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? false ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;\n\t\n\t // For methods which are defined more than once, call the existing\n\t // methods before calling the new property, merging if appropriate.\n\t if (specPolicy === 'DEFINE_MANY_MERGED') {\n\t proto[name] = createMergedResultFunction(proto[name], property);\n\t } else if (specPolicy === 'DEFINE_MANY') {\n\t proto[name] = createChainedFunction(proto[name], property);\n\t }\n\t } else {\n\t proto[name] = property;\n\t if (false) {\n\t // Add verbose displayName to the function, which helps when looking\n\t // at profiling tools.\n\t if (typeof property === 'function' && spec.displayName) {\n\t proto[name].displayName = spec.displayName + '_' + name;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t}\n\t\n\tfunction mixStaticSpecIntoComponent(Constructor, statics) {\n\t if (!statics) {\n\t return;\n\t }\n\t for (var name in statics) {\n\t var property = statics[name];\n\t if (!statics.hasOwnProperty(name)) {\n\t continue;\n\t }\n\t\n\t var isReserved = name in RESERVED_SPEC_KEYS;\n\t !!isReserved ? false ? invariant(false, '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.', name) : _prodInvariant('78', name) : void 0;\n\t\n\t var isInherited = name in Constructor;\n\t !!isInherited ? false ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0;\n\t Constructor[name] = property;\n\t }\n\t}\n\t\n\t/**\n\t * Merge two objects, but throw if both contain the same key.\n\t *\n\t * @param {object} one The first object, which is mutated.\n\t * @param {object} two The second object\n\t * @return {object} one after it has been mutated to contain everything in two.\n\t */\n\tfunction mergeIntoWithNoDuplicateKeys(one, two) {\n\t !(one && two && typeof one === 'object' && typeof two === 'object') ? false ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;\n\t\n\t for (var key in two) {\n\t if (two.hasOwnProperty(key)) {\n\t !(one[key] === undefined) ? false ? invariant(false, '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.', key) : _prodInvariant('81', key) : void 0;\n\t one[key] = two[key];\n\t }\n\t }\n\t return one;\n\t}\n\t\n\t/**\n\t * Creates a function that invokes two functions and merges their return values.\n\t *\n\t * @param {function} one Function to invoke first.\n\t * @param {function} two Function to invoke second.\n\t * @return {function} Function that invokes the two argument functions.\n\t * @private\n\t */\n\tfunction createMergedResultFunction(one, two) {\n\t return function mergedResult() {\n\t var a = one.apply(this, arguments);\n\t var b = two.apply(this, arguments);\n\t if (a == null) {\n\t return b;\n\t } else if (b == null) {\n\t return a;\n\t }\n\t var c = {};\n\t mergeIntoWithNoDuplicateKeys(c, a);\n\t mergeIntoWithNoDuplicateKeys(c, b);\n\t return c;\n\t };\n\t}\n\t\n\t/**\n\t * Creates a function that invokes two functions and ignores their return vales.\n\t *\n\t * @param {function} one Function to invoke first.\n\t * @param {function} two Function to invoke second.\n\t * @return {function} Function that invokes the two argument functions.\n\t * @private\n\t */\n\tfunction createChainedFunction(one, two) {\n\t return function chainedFunction() {\n\t one.apply(this, arguments);\n\t two.apply(this, arguments);\n\t };\n\t}\n\t\n\t/**\n\t * Binds a method to the component.\n\t *\n\t * @param {object} component Component whose method is going to be bound.\n\t * @param {function} method Method to be bound.\n\t * @return {function} The bound method.\n\t */\n\tfunction bindAutoBindMethod(component, method) {\n\t var boundMethod = method.bind(component);\n\t if (false) {\n\t boundMethod.__reactBoundContext = component;\n\t boundMethod.__reactBoundMethod = method;\n\t boundMethod.__reactBoundArguments = null;\n\t var componentName = component.constructor.displayName;\n\t var _bind = boundMethod.bind;\n\t boundMethod.bind = function (newThis) {\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t // User is trying to bind() an autobound method; we effectively will\n\t // ignore the value of \"this\" that the user is trying to use, so\n\t // let's warn.\n\t if (newThis !== component && newThis !== null) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;\n\t } else if (!args.length) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0;\n\t return boundMethod;\n\t }\n\t var reboundMethod = _bind.apply(boundMethod, arguments);\n\t reboundMethod.__reactBoundContext = component;\n\t reboundMethod.__reactBoundMethod = method;\n\t reboundMethod.__reactBoundArguments = args;\n\t return reboundMethod;\n\t };\n\t }\n\t return boundMethod;\n\t}\n\t\n\t/**\n\t * Binds all auto-bound methods in a component.\n\t *\n\t * @param {object} component Component whose method is going to be bound.\n\t */\n\tfunction bindAutoBindMethods(component) {\n\t var pairs = component.__reactAutoBindPairs;\n\t for (var i = 0; i < pairs.length; i += 2) {\n\t var autoBindKey = pairs[i];\n\t var method = pairs[i + 1];\n\t component[autoBindKey] = bindAutoBindMethod(component, method);\n\t }\n\t}\n\t\n\t/**\n\t * Add more to the ReactClass base class. These are all legacy features and\n\t * therefore not already part of the modern ReactComponent.\n\t */\n\tvar ReactClassMixin = {\n\t\n\t /**\n\t * TODO: This will be deprecated because state should always keep a consistent\n\t * type signature and the only use case for this, is to avoid that.\n\t */\n\t replaceState: function (newState, callback) {\n\t this.updater.enqueueReplaceState(this, newState);\n\t if (callback) {\n\t this.updater.enqueueCallback(this, callback, 'replaceState');\n\t }\n\t },\n\t\n\t /**\n\t * Checks whether or not this composite component is mounted.\n\t * @return {boolean} True if mounted, false otherwise.\n\t * @protected\n\t * @final\n\t */\n\t isMounted: function () {\n\t return this.updater.isMounted(this);\n\t }\n\t};\n\t\n\tvar ReactClassComponent = function () {};\n\t_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);\n\t\n\t/**\n\t * Module for creating composite components.\n\t *\n\t * @class ReactClass\n\t */\n\tvar ReactClass = {\n\t\n\t /**\n\t * Creates a composite component class given a class specification.\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n\t *\n\t * @param {object} spec Class specification (which must define `render`).\n\t * @return {function} Component constructor function.\n\t * @public\n\t */\n\t createClass: function (spec) {\n\t // To keep our warnings more understandable, we'll use a little hack here to\n\t // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n\t // unnecessarily identify a class without displayName as 'Constructor'.\n\t var Constructor = identity(function (props, context, updater) {\n\t // This constructor gets overridden by mocks. The argument is used\n\t // by mocks to assert on what gets mounted.\n\t\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0;\n\t }\n\t\n\t // Wire up auto-binding\n\t if (this.__reactAutoBindPairs.length) {\n\t bindAutoBindMethods(this);\n\t }\n\t\n\t this.props = props;\n\t this.context = context;\n\t this.refs = emptyObject;\n\t this.updater = updater || ReactNoopUpdateQueue;\n\t\n\t this.state = null;\n\t\n\t // ReactClasses doesn't have constructors. Instead, they use the\n\t // getInitialState and componentWillMount methods for initialization.\n\t\n\t var initialState = this.getInitialState ? this.getInitialState() : null;\n\t if (false) {\n\t // We allow auto-mocks to proceed as if they're returning null.\n\t if (initialState === undefined && this.getInitialState._isMockFunction) {\n\t // This is probably bad practice. Consider warning here and\n\t // deprecating this convenience.\n\t initialState = null;\n\t }\n\t }\n\t !(typeof initialState === 'object' && !Array.isArray(initialState)) ? false ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;\n\t\n\t this.state = initialState;\n\t });\n\t Constructor.prototype = new ReactClassComponent();\n\t Constructor.prototype.constructor = Constructor;\n\t Constructor.prototype.__reactAutoBindPairs = [];\n\t\n\t injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\t\n\t mixSpecIntoComponent(Constructor, spec);\n\t\n\t // Initialize the defaultProps property after all mixins have been merged.\n\t if (Constructor.getDefaultProps) {\n\t Constructor.defaultProps = Constructor.getDefaultProps();\n\t }\n\t\n\t if (false) {\n\t // This is a tag to indicate that the use of these method names is ok,\n\t // since it's used with createClass. If it's not, then it's likely a\n\t // mistake so we'll warn you to use the static property, property\n\t // initializer or constructor respectively.\n\t if (Constructor.getDefaultProps) {\n\t Constructor.getDefaultProps.isReactClassApproved = {};\n\t }\n\t if (Constructor.prototype.getInitialState) {\n\t Constructor.prototype.getInitialState.isReactClassApproved = {};\n\t }\n\t }\n\t\n\t !Constructor.prototype.render ? false ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;\n\t\n\t if (false) {\n\t process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0;\n\t process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;\n\t }\n\t\n\t // Reduce time spent doing lookups by setting these on the prototype.\n\t for (var methodName in ReactClassInterface) {\n\t if (!Constructor.prototype[methodName]) {\n\t Constructor.prototype[methodName] = null;\n\t }\n\t }\n\t\n\t return Constructor;\n\t },\n\t\n\t injection: {\n\t injectMixin: function (mixin) {\n\t injectedMixins.push(mixin);\n\t }\n\t }\n\t\n\t};\n\t\n\tmodule.exports = ReactClass;\n\n/***/ },\n/* 415 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactElement = __webpack_require__(37);\n\t\n\t/**\n\t * Create a factory that creates HTML tag elements.\n\t *\n\t * @private\n\t */\n\tvar createDOMFactory = ReactElement.createFactory;\n\tif (false) {\n\t var ReactElementValidator = require('./ReactElementValidator');\n\t createDOMFactory = ReactElementValidator.createFactory;\n\t}\n\t\n\t/**\n\t * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n\t * This is also accessible via `React.DOM`.\n\t *\n\t * @public\n\t */\n\tvar ReactDOMFactories = {\n\t a: createDOMFactory('a'),\n\t abbr: createDOMFactory('abbr'),\n\t address: createDOMFactory('address'),\n\t area: createDOMFactory('area'),\n\t article: createDOMFactory('article'),\n\t aside: createDOMFactory('aside'),\n\t audio: createDOMFactory('audio'),\n\t b: createDOMFactory('b'),\n\t base: createDOMFactory('base'),\n\t bdi: createDOMFactory('bdi'),\n\t bdo: createDOMFactory('bdo'),\n\t big: createDOMFactory('big'),\n\t blockquote: createDOMFactory('blockquote'),\n\t body: createDOMFactory('body'),\n\t br: createDOMFactory('br'),\n\t button: createDOMFactory('button'),\n\t canvas: createDOMFactory('canvas'),\n\t caption: createDOMFactory('caption'),\n\t cite: createDOMFactory('cite'),\n\t code: createDOMFactory('code'),\n\t col: createDOMFactory('col'),\n\t colgroup: createDOMFactory('colgroup'),\n\t data: createDOMFactory('data'),\n\t datalist: createDOMFactory('datalist'),\n\t dd: createDOMFactory('dd'),\n\t del: createDOMFactory('del'),\n\t details: createDOMFactory('details'),\n\t dfn: createDOMFactory('dfn'),\n\t dialog: createDOMFactory('dialog'),\n\t div: createDOMFactory('div'),\n\t dl: createDOMFactory('dl'),\n\t dt: createDOMFactory('dt'),\n\t em: createDOMFactory('em'),\n\t embed: createDOMFactory('embed'),\n\t fieldset: createDOMFactory('fieldset'),\n\t figcaption: createDOMFactory('figcaption'),\n\t figure: createDOMFactory('figure'),\n\t footer: createDOMFactory('footer'),\n\t form: createDOMFactory('form'),\n\t h1: createDOMFactory('h1'),\n\t h2: createDOMFactory('h2'),\n\t h3: createDOMFactory('h3'),\n\t h4: createDOMFactory('h4'),\n\t h5: createDOMFactory('h5'),\n\t h6: createDOMFactory('h6'),\n\t head: createDOMFactory('head'),\n\t header: createDOMFactory('header'),\n\t hgroup: createDOMFactory('hgroup'),\n\t hr: createDOMFactory('hr'),\n\t html: createDOMFactory('html'),\n\t i: createDOMFactory('i'),\n\t iframe: createDOMFactory('iframe'),\n\t img: createDOMFactory('img'),\n\t input: createDOMFactory('input'),\n\t ins: createDOMFactory('ins'),\n\t kbd: createDOMFactory('kbd'),\n\t keygen: createDOMFactory('keygen'),\n\t label: createDOMFactory('label'),\n\t legend: createDOMFactory('legend'),\n\t li: createDOMFactory('li'),\n\t link: createDOMFactory('link'),\n\t main: createDOMFactory('main'),\n\t map: createDOMFactory('map'),\n\t mark: createDOMFactory('mark'),\n\t menu: createDOMFactory('menu'),\n\t menuitem: createDOMFactory('menuitem'),\n\t meta: createDOMFactory('meta'),\n\t meter: createDOMFactory('meter'),\n\t nav: createDOMFactory('nav'),\n\t noscript: createDOMFactory('noscript'),\n\t object: createDOMFactory('object'),\n\t ol: createDOMFactory('ol'),\n\t optgroup: createDOMFactory('optgroup'),\n\t option: createDOMFactory('option'),\n\t output: createDOMFactory('output'),\n\t p: createDOMFactory('p'),\n\t param: createDOMFactory('param'),\n\t picture: createDOMFactory('picture'),\n\t pre: createDOMFactory('pre'),\n\t progress: createDOMFactory('progress'),\n\t q: createDOMFactory('q'),\n\t rp: createDOMFactory('rp'),\n\t rt: createDOMFactory('rt'),\n\t ruby: createDOMFactory('ruby'),\n\t s: createDOMFactory('s'),\n\t samp: createDOMFactory('samp'),\n\t script: createDOMFactory('script'),\n\t section: createDOMFactory('section'),\n\t select: createDOMFactory('select'),\n\t small: createDOMFactory('small'),\n\t source: createDOMFactory('source'),\n\t span: createDOMFactory('span'),\n\t strong: createDOMFactory('strong'),\n\t style: createDOMFactory('style'),\n\t sub: createDOMFactory('sub'),\n\t summary: createDOMFactory('summary'),\n\t sup: createDOMFactory('sup'),\n\t table: createDOMFactory('table'),\n\t tbody: createDOMFactory('tbody'),\n\t td: createDOMFactory('td'),\n\t textarea: createDOMFactory('textarea'),\n\t tfoot: createDOMFactory('tfoot'),\n\t th: createDOMFactory('th'),\n\t thead: createDOMFactory('thead'),\n\t time: createDOMFactory('time'),\n\t title: createDOMFactory('title'),\n\t tr: createDOMFactory('tr'),\n\t track: createDOMFactory('track'),\n\t u: createDOMFactory('u'),\n\t ul: createDOMFactory('ul'),\n\t 'var': createDOMFactory('var'),\n\t video: createDOMFactory('video'),\n\t wbr: createDOMFactory('wbr'),\n\t\n\t // SVG\n\t circle: createDOMFactory('circle'),\n\t clipPath: createDOMFactory('clipPath'),\n\t defs: createDOMFactory('defs'),\n\t ellipse: createDOMFactory('ellipse'),\n\t g: createDOMFactory('g'),\n\t image: createDOMFactory('image'),\n\t line: createDOMFactory('line'),\n\t linearGradient: createDOMFactory('linearGradient'),\n\t mask: createDOMFactory('mask'),\n\t path: createDOMFactory('path'),\n\t pattern: createDOMFactory('pattern'),\n\t polygon: createDOMFactory('polygon'),\n\t polyline: createDOMFactory('polyline'),\n\t radialGradient: createDOMFactory('radialGradient'),\n\t rect: createDOMFactory('rect'),\n\t stop: createDOMFactory('stop'),\n\t svg: createDOMFactory('svg'),\n\t text: createDOMFactory('text'),\n\t tspan: createDOMFactory('tspan')\n\t};\n\t\n\tmodule.exports = ReactDOMFactories;\n\n/***/ },\n/* 416 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactElement = __webpack_require__(37);\n\tvar ReactPropTypeLocationNames = __webpack_require__(158);\n\tvar ReactPropTypesSecret = __webpack_require__(417);\n\t\n\tvar emptyFunction = __webpack_require__(16);\n\tvar getIteratorFn = __webpack_require__(160);\n\tvar warning = __webpack_require__(4);\n\t\n\t/**\n\t * Collection of methods that allow declaration and validation of props that are\n\t * supplied to React components. Example usage:\n\t *\n\t * var Props = require('ReactPropTypes');\n\t * var MyArticle = React.createClass({\n\t * propTypes: {\n\t * // An optional string prop named \"description\".\n\t * description: Props.string,\n\t *\n\t * // A required enum prop named \"category\".\n\t * category: Props.oneOf(['News','Photos']).isRequired,\n\t *\n\t * // A prop named \"dialog\" that requires an instance of Dialog.\n\t * dialog: Props.instanceOf(Dialog).isRequired\n\t * },\n\t * render: function() { ... }\n\t * });\n\t *\n\t * A more formal specification of how these methods are used:\n\t *\n\t * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n\t * decl := ReactPropTypes.{type}(.isRequired)?\n\t *\n\t * Each and every declaration produces a function with the same signature. This\n\t * allows the creation of custom validation functions. For example:\n\t *\n\t * var MyLink = React.createClass({\n\t * propTypes: {\n\t * // An optional string or URI prop named \"href\".\n\t * href: function(props, propName, componentName) {\n\t * var propValue = props[propName];\n\t * if (propValue != null && typeof propValue !== 'string' &&\n\t * !(propValue instanceof URI)) {\n\t * return new Error(\n\t * 'Expected a string or an URI for ' + propName + ' in ' +\n\t * componentName\n\t * );\n\t * }\n\t * }\n\t * },\n\t * render: function() {...}\n\t * });\n\t *\n\t * @internal\n\t */\n\t\n\tvar ANONYMOUS = '<<anonymous>>';\n\t\n\tvar ReactPropTypes = {\n\t array: createPrimitiveTypeChecker('array'),\n\t bool: createPrimitiveTypeChecker('boolean'),\n\t func: createPrimitiveTypeChecker('function'),\n\t number: createPrimitiveTypeChecker('number'),\n\t object: createPrimitiveTypeChecker('object'),\n\t string: createPrimitiveTypeChecker('string'),\n\t symbol: createPrimitiveTypeChecker('symbol'),\n\t\n\t any: createAnyTypeChecker(),\n\t arrayOf: createArrayOfTypeChecker,\n\t element: createElementTypeChecker(),\n\t instanceOf: createInstanceTypeChecker,\n\t node: createNodeChecker(),\n\t objectOf: createObjectOfTypeChecker,\n\t oneOf: createEnumTypeChecker,\n\t oneOfType: createUnionTypeChecker,\n\t shape: createShapeTypeChecker\n\t};\n\t\n\t/**\n\t * inlined Object.is polyfill to avoid requiring consumers ship their own\n\t * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\t */\n\t/*eslint-disable no-self-compare*/\n\tfunction is(x, y) {\n\t // SameValue algorithm\n\t if (x === y) {\n\t // Steps 1-5, 7-10\n\t // Steps 6.b-6.e: +0 != -0\n\t return x !== 0 || 1 / x === 1 / y;\n\t } else {\n\t // Step 6.a: NaN == NaN\n\t return x !== x && y !== y;\n\t }\n\t}\n\t/*eslint-enable no-self-compare*/\n\t\n\t/**\n\t * We use an Error-like object for backward compatibility as people may call\n\t * PropTypes directly and inspect their output. However we don't use real\n\t * Errors anymore. We don't inspect their stack anyway, and creating them\n\t * is prohibitively expensive if they are created too often, such as what\n\t * happens in oneOfType() for any type before the one that matched.\n\t */\n\tfunction PropTypeError(message) {\n\t this.message = message;\n\t this.stack = '';\n\t}\n\t// Make `instanceof Error` still work for returned errors.\n\tPropTypeError.prototype = Error.prototype;\n\t\n\tfunction createChainableTypeChecker(validate) {\n\t if (false) {\n\t var manualPropTypeCallCache = {};\n\t }\n\t function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n\t componentName = componentName || ANONYMOUS;\n\t propFullName = propFullName || propName;\n\t if (false) {\n\t if (secret !== ReactPropTypesSecret && typeof console !== 'undefined') {\n\t var cacheKey = componentName + ':' + propName;\n\t if (!manualPropTypeCallCache[cacheKey]) {\n\t process.env.NODE_ENV !== 'production' ? warning(false, 'You are manually calling a React.PropTypes validation ' + 'function for the `%s` prop on `%s`. This is deprecated ' + 'and will not work in production with the next major version. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', propFullName, componentName) : void 0;\n\t manualPropTypeCallCache[cacheKey] = true;\n\t }\n\t }\n\t }\n\t if (props[propName] == null) {\n\t var locationName = ReactPropTypeLocationNames[location];\n\t if (isRequired) {\n\t if (props[propName] === null) {\n\t return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n\t }\n\t return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n\t }\n\t return null;\n\t } else {\n\t return validate(props, propName, componentName, location, propFullName);\n\t }\n\t }\n\t\n\t var chainedCheckType = checkType.bind(null, false);\n\t chainedCheckType.isRequired = checkType.bind(null, true);\n\t\n\t return chainedCheckType;\n\t}\n\t\n\tfunction createPrimitiveTypeChecker(expectedType) {\n\t function validate(props, propName, componentName, location, propFullName, secret) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== expectedType) {\n\t var locationName = ReactPropTypeLocationNames[location];\n\t // `propValue` being instance of, say, date/regexp, pass the 'object'\n\t // check, but we can offer a more precise error message here rather than\n\t // 'of type `object`'.\n\t var preciseType = getPreciseType(propValue);\n\t\n\t return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t}\n\t\n\tfunction createAnyTypeChecker() {\n\t return createChainableTypeChecker(emptyFunction.thatReturns(null));\n\t}\n\t\n\tfunction createArrayOfTypeChecker(typeChecker) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (typeof typeChecker !== 'function') {\n\t return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n\t }\n\t var propValue = props[propName];\n\t if (!Array.isArray(propValue)) {\n\t var locationName = ReactPropTypeLocationNames[location];\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n\t }\n\t for (var i = 0; i < propValue.length; i++) {\n\t var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n\t if (error instanceof Error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t}\n\t\n\tfunction createElementTypeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t if (!ReactElement.isValidElement(propValue)) {\n\t var locationName = ReactPropTypeLocationNames[location];\n\t var propType = getPropType(propValue);\n\t return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t}\n\t\n\tfunction createInstanceTypeChecker(expectedClass) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (!(props[propName] instanceof expectedClass)) {\n\t var locationName = ReactPropTypeLocationNames[location];\n\t var expectedClassName = expectedClass.name || ANONYMOUS;\n\t var actualClassName = getClassName(props[propName]);\n\t return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t}\n\t\n\tfunction createEnumTypeChecker(expectedValues) {\n\t if (!Array.isArray(expectedValues)) {\n\t false ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n\t return emptyFunction.thatReturnsNull;\n\t }\n\t\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t for (var i = 0; i < expectedValues.length; i++) {\n\t if (is(propValue, expectedValues[i])) {\n\t return null;\n\t }\n\t }\n\t\n\t var locationName = ReactPropTypeLocationNames[location];\n\t var valuesString = JSON.stringify(expectedValues);\n\t return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n\t }\n\t return createChainableTypeChecker(validate);\n\t}\n\t\n\tfunction createObjectOfTypeChecker(typeChecker) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (typeof typeChecker !== 'function') {\n\t return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n\t }\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t var locationName = ReactPropTypeLocationNames[location];\n\t return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n\t }\n\t for (var key in propValue) {\n\t if (propValue.hasOwnProperty(key)) {\n\t var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error instanceof Error) {\n\t return error;\n\t }\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t}\n\t\n\tfunction createUnionTypeChecker(arrayOfTypeCheckers) {\n\t if (!Array.isArray(arrayOfTypeCheckers)) {\n\t false ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n\t return emptyFunction.thatReturnsNull;\n\t }\n\t\n\t function validate(props, propName, componentName, location, propFullName) {\n\t for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n\t var checker = arrayOfTypeCheckers[i];\n\t if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n\t return null;\n\t }\n\t }\n\t\n\t var locationName = ReactPropTypeLocationNames[location];\n\t return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n\t }\n\t return createChainableTypeChecker(validate);\n\t}\n\t\n\tfunction createNodeChecker() {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t if (!isNode(props[propName])) {\n\t var locationName = ReactPropTypeLocationNames[location];\n\t return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t}\n\t\n\tfunction createShapeTypeChecker(shapeTypes) {\n\t function validate(props, propName, componentName, location, propFullName) {\n\t var propValue = props[propName];\n\t var propType = getPropType(propValue);\n\t if (propType !== 'object') {\n\t var locationName = ReactPropTypeLocationNames[location];\n\t return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n\t }\n\t for (var key in shapeTypes) {\n\t var checker = shapeTypes[key];\n\t if (!checker) {\n\t continue;\n\t }\n\t var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n\t if (error) {\n\t return error;\n\t }\n\t }\n\t return null;\n\t }\n\t return createChainableTypeChecker(validate);\n\t}\n\t\n\tfunction isNode(propValue) {\n\t switch (typeof propValue) {\n\t case 'number':\n\t case 'string':\n\t case 'undefined':\n\t return true;\n\t case 'boolean':\n\t return !propValue;\n\t case 'object':\n\t if (Array.isArray(propValue)) {\n\t return propValue.every(isNode);\n\t }\n\t if (propValue === null || ReactElement.isValidElement(propValue)) {\n\t return true;\n\t }\n\t\n\t var iteratorFn = getIteratorFn(propValue);\n\t if (iteratorFn) {\n\t var iterator = iteratorFn.call(propValue);\n\t var step;\n\t if (iteratorFn !== propValue.entries) {\n\t while (!(step = iterator.next()).done) {\n\t if (!isNode(step.value)) {\n\t return false;\n\t }\n\t }\n\t } else {\n\t // Iterator will provide entry [k,v] tuples rather than values.\n\t while (!(step = iterator.next()).done) {\n\t var entry = step.value;\n\t if (entry) {\n\t if (!isNode(entry[1])) {\n\t return false;\n\t }\n\t }\n\t }\n\t }\n\t } else {\n\t return false;\n\t }\n\t\n\t return true;\n\t default:\n\t return false;\n\t }\n\t}\n\t\n\tfunction isSymbol(propType, propValue) {\n\t // Native Symbol.\n\t if (propType === 'symbol') {\n\t return true;\n\t }\n\t\n\t // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n\t if (propValue['@@toStringTag'] === 'Symbol') {\n\t return true;\n\t }\n\t\n\t // Fallback for non-spec compliant Symbols which are polyfilled.\n\t if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n\t return true;\n\t }\n\t\n\t return false;\n\t}\n\t\n\t// Equivalent of `typeof` but with special handling for array and regexp.\n\tfunction getPropType(propValue) {\n\t var propType = typeof propValue;\n\t if (Array.isArray(propValue)) {\n\t return 'array';\n\t }\n\t if (propValue instanceof RegExp) {\n\t // Old webkits (at least until Android 4.0) return 'function' rather than\n\t // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n\t // passes PropTypes.object.\n\t return 'object';\n\t }\n\t if (isSymbol(propType, propValue)) {\n\t return 'symbol';\n\t }\n\t return propType;\n\t}\n\t\n\t// This handles more types than `getPropType`. Only used for error messages.\n\t// See `createPrimitiveTypeChecker`.\n\tfunction getPreciseType(propValue) {\n\t var propType = getPropType(propValue);\n\t if (propType === 'object') {\n\t if (propValue instanceof Date) {\n\t return 'date';\n\t } else if (propValue instanceof RegExp) {\n\t return 'regexp';\n\t }\n\t }\n\t return propType;\n\t}\n\t\n\t// Returns class name of the object, if any.\n\tfunction getClassName(propValue) {\n\t if (!propValue.constructor || !propValue.constructor.name) {\n\t return ANONYMOUS;\n\t }\n\t return propValue.constructor.name;\n\t}\n\t\n\tmodule.exports = ReactPropTypes;\n\n/***/ },\n/* 417 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t * \n\t */\n\t\n\t'use strict';\n\t\n\tvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\t\n\tmodule.exports = ReactPropTypesSecret;\n\n/***/ },\n/* 418 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _assign = __webpack_require__(6);\n\t\n\tvar ReactComponent = __webpack_require__(96);\n\tvar ReactNoopUpdateQueue = __webpack_require__(97);\n\t\n\tvar emptyObject = __webpack_require__(39);\n\t\n\t/**\n\t * Base class helpers for the updating state of a component.\n\t */\n\tfunction ReactPureComponent(props, context, updater) {\n\t // Duplicated from ReactComponent.\n\t this.props = props;\n\t this.context = context;\n\t this.refs = emptyObject;\n\t // We initialize the default updater but the real one gets injected by the\n\t // renderer.\n\t this.updater = updater || ReactNoopUpdateQueue;\n\t}\n\t\n\tfunction ComponentDummy() {}\n\tComponentDummy.prototype = ReactComponent.prototype;\n\tReactPureComponent.prototype = new ComponentDummy();\n\tReactPureComponent.prototype.constructor = ReactPureComponent;\n\t// Avoid an extra prototype jump for these methods.\n\t_assign(ReactPureComponent.prototype, ReactComponent.prototype);\n\tReactPureComponent.prototype.isPureReactComponent = true;\n\t\n\tmodule.exports = ReactPureComponent;\n\n/***/ },\n/* 419 */\n/***/ function(module, exports) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tmodule.exports = '15.4.1';\n\n/***/ },\n/* 420 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(38);\n\t\n\tvar ReactElement = __webpack_require__(37);\n\t\n\tvar invariant = __webpack_require__(3);\n\t\n\t/**\n\t * Returns the first child in a collection of children and verifies that there\n\t * is only one child in the collection.\n\t *\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n\t *\n\t * The current implementation of this function assumes that a single child gets\n\t * passed without a wrapper, but the purpose of this helper function is to\n\t * abstract away the particular structure of children.\n\t *\n\t * @param {?object} children Child collection structure.\n\t * @return {ReactElement} The first and only `ReactElement` contained in the\n\t * structure.\n\t */\n\tfunction onlyChild(children) {\n\t !ReactElement.isValidElement(children) ? false ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n\t return children;\n\t}\n\t\n\tmodule.exports = onlyChild;\n\n/***/ },\n/* 421 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright 2013-present, Facebook, Inc.\n\t * All rights reserved.\n\t *\n\t * This source code is licensed under the BSD-style license found in the\n\t * LICENSE file in the root directory of this source tree. An additional grant\n\t * of patent rights can be found in the PATENTS file in the same directory.\n\t *\n\t */\n\t\n\t'use strict';\n\t\n\tvar _prodInvariant = __webpack_require__(38);\n\t\n\tvar ReactCurrentOwner = __webpack_require__(21);\n\tvar REACT_ELEMENT_TYPE = __webpack_require__(157);\n\t\n\tvar getIteratorFn = __webpack_require__(160);\n\tvar invariant = __webpack_require__(3);\n\tvar KeyEscapeUtils = __webpack_require__(411);\n\tvar warning = __webpack_require__(4);\n\t\n\tvar SEPARATOR = '.';\n\tvar SUBSEPARATOR = ':';\n\t\n\t/**\n\t * This is inlined from ReactElement since this file is shared between\n\t * isomorphic and renderers. We could extract this to a\n\t *\n\t */\n\t\n\t/**\n\t * TODO: Test that a single child and an array with one item have the same key\n\t * pattern.\n\t */\n\t\n\tvar didWarnAboutMaps = false;\n\t\n\t/**\n\t * Generate a key string that identifies a component within a set.\n\t *\n\t * @param {*} component A component that could contain a manual key.\n\t * @param {number} index Index that is used if a manual key is not provided.\n\t * @return {string}\n\t */\n\tfunction getComponentKey(component, index) {\n\t // Do some typechecking here since we call this blindly. We want to ensure\n\t // that we don't block potential future ES APIs.\n\t if (component && typeof component === 'object' && component.key != null) {\n\t // Explicit key\n\t return KeyEscapeUtils.escape(component.key);\n\t }\n\t // Implicit key determined by the index in the set\n\t return index.toString(36);\n\t}\n\t\n\t/**\n\t * @param {?*} children Children tree container.\n\t * @param {!string} nameSoFar Name of the key path so far.\n\t * @param {!function} callback Callback to invoke with each child found.\n\t * @param {?*} traverseContext Used to pass information throughout the traversal\n\t * process.\n\t * @return {!number} The number of children in this subtree.\n\t */\n\tfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n\t var type = typeof children;\n\t\n\t if (type === 'undefined' || type === 'boolean') {\n\t // All of the above are perceived as null.\n\t children = null;\n\t }\n\t\n\t if (children === null || type === 'string' || type === 'number' ||\n\t // The following is inlined from ReactElement. This means we can optimize\n\t // some checks. React Fiber also inlines this logic for similar purposes.\n\t type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n\t callback(traverseContext, children,\n\t // If it's the only child, treat the name as if it was wrapped in an array\n\t // so that it's consistent if the number of children grows.\n\t nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n\t return 1;\n\t }\n\t\n\t var child;\n\t var nextName;\n\t var subtreeCount = 0; // Count of children found in the current subtree.\n\t var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\t\n\t if (Array.isArray(children)) {\n\t for (var i = 0; i < children.length; i++) {\n\t child = children[i];\n\t nextName = nextNamePrefix + getComponentKey(child, i);\n\t subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n\t }\n\t } else {\n\t var iteratorFn = getIteratorFn(children);\n\t if (iteratorFn) {\n\t var iterator = iteratorFn.call(children);\n\t var step;\n\t if (iteratorFn !== children.entries) {\n\t var ii = 0;\n\t while (!(step = iterator.next()).done) {\n\t child = step.value;\n\t nextName = nextNamePrefix + getComponentKey(child, ii++);\n\t subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n\t }\n\t } else {\n\t if (false) {\n\t var mapsAsChildrenAddendum = '';\n\t if (ReactCurrentOwner.current) {\n\t var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n\t if (mapsAsChildrenOwnerName) {\n\t mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n\t }\n\t }\n\t process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n\t didWarnAboutMaps = true;\n\t }\n\t // Iterator will provide entry [k,v] tuples rather than values.\n\t while (!(step = iterator.next()).done) {\n\t var entry = step.value;\n\t if (entry) {\n\t child = entry[1];\n\t nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n\t subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n\t }\n\t }\n\t }\n\t } else if (type === 'object') {\n\t var addendum = '';\n\t if (false) {\n\t addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n\t if (children._isReactElement) {\n\t addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n\t }\n\t if (ReactCurrentOwner.current) {\n\t var name = ReactCurrentOwner.current.getName();\n\t if (name) {\n\t addendum += ' Check the render method of `' + name + '`.';\n\t }\n\t }\n\t }\n\t var childrenString = String(children);\n\t true ? false ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n\t }\n\t }\n\t\n\t return subtreeCount;\n\t}\n\t\n\t/**\n\t * Traverses children that are typically specified as `props.children`, but\n\t * might also be specified through attributes:\n\t *\n\t * - `traverseAllChildren(this.props.children, ...)`\n\t * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n\t *\n\t * The `traverseContext` is an optional argument that is passed through the\n\t * entire traversal. It can be used to store accumulations or anything else that\n\t * the callback might find relevant.\n\t *\n\t * @param {?*} children Children tree object.\n\t * @param {!function} callback To invoke upon traversing each child.\n\t * @param {?*} traverseContext Context for traversal.\n\t * @return {!number} The number of children in this subtree.\n\t */\n\tfunction traverseAllChildren(children, callback, traverseContext) {\n\t if (children == null) {\n\t return 0;\n\t }\n\t\n\t return traverseAllChildrenImpl(children, '', callback, traverseContext);\n\t}\n\t\n\tmodule.exports = traverseAllChildren;\n\n/***/ },\n/* 422 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\tfunction createThunkMiddleware(extraArgument) {\n\t return function (_ref) {\n\t var dispatch = _ref.dispatch;\n\t var getState = _ref.getState;\n\t return function (next) {\n\t return function (action) {\n\t if (typeof action === 'function') {\n\t return action(dispatch, getState, extraArgument);\n\t }\n\t\n\t return next(action);\n\t };\n\t };\n\t };\n\t}\n\t\n\tvar thunk = createThunkMiddleware();\n\tthunk.withExtraArgument = createThunkMiddleware;\n\t\n\texports['default'] = thunk;\n\n/***/ },\n/* 423 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\t\n\texports['default'] = applyMiddleware;\n\t\n\tvar _compose = __webpack_require__(161);\n\t\n\tvar _compose2 = _interopRequireDefault(_compose);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\t/**\n\t * Creates a store enhancer that applies middleware to the dispatch method\n\t * of the Redux store. This is handy for a variety of tasks, such as expressing\n\t * asynchronous actions in a concise manner, or logging every action payload.\n\t *\n\t * See `redux-thunk` package as an example of the Redux middleware.\n\t *\n\t * Because middleware is potentially asynchronous, this should be the first\n\t * store enhancer in the composition chain.\n\t *\n\t * Note that each middleware will be given the `dispatch` and `getState` functions\n\t * as named arguments.\n\t *\n\t * @param {...Function} middlewares The middleware chain to be applied.\n\t * @returns {Function} A store enhancer applying the middleware.\n\t */\n\tfunction applyMiddleware() {\n\t for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n\t middlewares[_key] = arguments[_key];\n\t }\n\t\n\t return function (createStore) {\n\t return function (reducer, preloadedState, enhancer) {\n\t var store = createStore(reducer, preloadedState, enhancer);\n\t var _dispatch = store.dispatch;\n\t var chain = [];\n\t\n\t var middlewareAPI = {\n\t getState: store.getState,\n\t dispatch: function dispatch(action) {\n\t return _dispatch(action);\n\t }\n\t };\n\t chain = middlewares.map(function (middleware) {\n\t return middleware(middlewareAPI);\n\t });\n\t _dispatch = _compose2['default'].apply(undefined, chain)(store.dispatch);\n\t\n\t return _extends({}, store, {\n\t dispatch: _dispatch\n\t });\n\t };\n\t };\n\t}\n\n/***/ },\n/* 424 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = bindActionCreators;\n\tfunction bindActionCreator(actionCreator, dispatch) {\n\t return function () {\n\t return dispatch(actionCreator.apply(undefined, arguments));\n\t };\n\t}\n\t\n\t/**\n\t * Turns an object whose values are action creators, into an object with the\n\t * same keys, but with every function wrapped into a `dispatch` call so they\n\t * may be invoked directly. This is just a convenience method, as you can call\n\t * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n\t *\n\t * For convenience, you can also pass a single function as the first argument,\n\t * and get a function in return.\n\t *\n\t * @param {Function|Object} actionCreators An object whose values are action\n\t * creator functions. One handy way to obtain it is to use ES6 `import * as`\n\t * syntax. You may also pass a single function.\n\t *\n\t * @param {Function} dispatch The `dispatch` function available on your Redux\n\t * store.\n\t *\n\t * @returns {Function|Object} The object mimicking the original object, but with\n\t * every action creator wrapped into the `dispatch` call. If you passed a\n\t * function as `actionCreators`, the return value will also be a single\n\t * function.\n\t */\n\tfunction bindActionCreators(actionCreators, dispatch) {\n\t if (typeof actionCreators === 'function') {\n\t return bindActionCreator(actionCreators, dispatch);\n\t }\n\t\n\t if (typeof actionCreators !== 'object' || actionCreators === null) {\n\t throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n\t }\n\t\n\t var keys = Object.keys(actionCreators);\n\t var boundActionCreators = {};\n\t for (var i = 0; i < keys.length; i++) {\n\t var key = keys[i];\n\t var actionCreator = actionCreators[key];\n\t if (typeof actionCreator === 'function') {\n\t boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n\t }\n\t }\n\t return boundActionCreators;\n\t}\n\n/***/ },\n/* 425 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\texports.__esModule = true;\n\texports['default'] = combineReducers;\n\t\n\tvar _createStore = __webpack_require__(162);\n\t\n\tvar _isPlainObject = __webpack_require__(70);\n\t\n\tvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\t\n\tvar _warning = __webpack_require__(163);\n\t\n\tvar _warning2 = _interopRequireDefault(_warning);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction getUndefinedStateErrorMessage(key, action) {\n\t var actionType = action && action.type;\n\t var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\t\n\t return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';\n\t}\n\t\n\tfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n\t var reducerKeys = Object.keys(reducers);\n\t var argumentName = action && action.type === _createStore.ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\t\n\t if (reducerKeys.length === 0) {\n\t return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n\t }\n\t\n\t if (!(0, _isPlainObject2['default'])(inputState)) {\n\t return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n\t }\n\t\n\t var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n\t return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n\t });\n\t\n\t unexpectedKeys.forEach(function (key) {\n\t unexpectedKeyCache[key] = true;\n\t });\n\t\n\t if (unexpectedKeys.length > 0) {\n\t return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n\t }\n\t}\n\t\n\tfunction assertReducerSanity(reducers) {\n\t Object.keys(reducers).forEach(function (key) {\n\t var reducer = reducers[key];\n\t var initialState = reducer(undefined, { type: _createStore.ActionTypes.INIT });\n\t\n\t if (typeof initialState === 'undefined') {\n\t throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined.');\n\t }\n\t\n\t var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n\t if (typeof reducer(undefined, { type: type }) === 'undefined') {\n\t throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + _createStore.ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined.');\n\t }\n\t });\n\t}\n\t\n\t/**\n\t * Turns an object whose values are different reducer functions, into a single\n\t * reducer function. It will call every child reducer, and gather their results\n\t * into a single state object, whose keys correspond to the keys of the passed\n\t * reducer functions.\n\t *\n\t * @param {Object} reducers An object whose values correspond to different\n\t * reducer functions that need to be combined into one. One handy way to obtain\n\t * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n\t * undefined for any action. Instead, they should return their initial state\n\t * if the state passed to them was undefined, and the current state for any\n\t * unrecognized action.\n\t *\n\t * @returns {Function} A reducer function that invokes every reducer inside the\n\t * passed object, and builds a state object with the same shape.\n\t */\n\tfunction combineReducers(reducers) {\n\t var reducerKeys = Object.keys(reducers);\n\t var finalReducers = {};\n\t for (var i = 0; i < reducerKeys.length; i++) {\n\t var key = reducerKeys[i];\n\t\n\t if (false) {\n\t if (typeof reducers[key] === 'undefined') {\n\t (0, _warning2['default'])('No reducer provided for key \"' + key + '\"');\n\t }\n\t }\n\t\n\t if (typeof reducers[key] === 'function') {\n\t finalReducers[key] = reducers[key];\n\t }\n\t }\n\t var finalReducerKeys = Object.keys(finalReducers);\n\t\n\t if (false) {\n\t var unexpectedKeyCache = {};\n\t }\n\t\n\t var sanityError;\n\t try {\n\t assertReducerSanity(finalReducers);\n\t } catch (e) {\n\t sanityError = e;\n\t }\n\t\n\t return function combination() {\n\t var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\t var action = arguments[1];\n\t\n\t if (sanityError) {\n\t throw sanityError;\n\t }\n\t\n\t if (false) {\n\t var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\t if (warningMessage) {\n\t (0, _warning2['default'])(warningMessage);\n\t }\n\t }\n\t\n\t var hasChanged = false;\n\t var nextState = {};\n\t for (var i = 0; i < finalReducerKeys.length; i++) {\n\t var key = finalReducerKeys[i];\n\t var reducer = finalReducers[key];\n\t var previousStateForKey = state[key];\n\t var nextStateForKey = reducer(previousStateForKey, action);\n\t if (typeof nextStateForKey === 'undefined') {\n\t var errorMessage = getUndefinedStateErrorMessage(key, action);\n\t throw new Error(errorMessage);\n\t }\n\t nextState[key] = nextStateForKey;\n\t hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n\t }\n\t return hasChanged ? nextState : state;\n\t };\n\t}\n\n/***/ },\n/* 426 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\tmodule.exports = function (str) {\n\t\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t\t});\n\t};\n\n\n/***/ },\n/* 427 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(428);\n\n\n/***/ },\n/* 428 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* WEBPACK VAR INJECTION */(function(global, module) {'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _ponyfill = __webpack_require__(429);\n\t\n\tvar _ponyfill2 = _interopRequireDefault(_ponyfill);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar root; /* global window */\n\t\n\t\n\tif (typeof self !== 'undefined') {\n\t root = self;\n\t} else if (typeof window !== 'undefined') {\n\t root = window;\n\t} else if (typeof global !== 'undefined') {\n\t root = global;\n\t} else if (true) {\n\t root = module;\n\t} else {\n\t root = Function('return this')();\n\t}\n\t\n\tvar result = (0, _ponyfill2['default'])(root);\n\texports['default'] = result;\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(164)(module)))\n\n/***/ },\n/* 429 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t\tvalue: true\n\t});\n\texports['default'] = symbolObservablePonyfill;\n\tfunction symbolObservablePonyfill(root) {\n\t\tvar result;\n\t\tvar _Symbol = root.Symbol;\n\t\n\t\tif (typeof _Symbol === 'function') {\n\t\t\tif (_Symbol.observable) {\n\t\t\t\tresult = _Symbol.observable;\n\t\t\t} else {\n\t\t\t\tresult = _Symbol('observable');\n\t\t\t\t_Symbol.observable = result;\n\t\t\t}\n\t\t} else {\n\t\t\tresult = '@@observable';\n\t\t}\n\t\n\t\treturn result;\n\t};\n\n/***/ }\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// bundle.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/static/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 9ed9366319713e21ceca","'use strict';\n\nmodule.exports = require('./lib/React');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/react.js\n// module id = 1\n// module chunks = 0","/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tclasses.push(classNames.apply(null, arg));\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/classnames/index.js\n// module id = 2\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/invariant.js\n// module id = 3\n// module chunks = 0","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n (function () {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n })();\n}\n\nmodule.exports = warning;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/warning.js\n// module id = 4\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/reactProdInvariant.js\n// module id = 5\n// module chunks = 0","'use strict';\n/* eslint-disable no-unused-vars */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (e) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (Object.getOwnPropertySymbols) {\n\t\t\tsymbols = Object.getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/object-assign/index.js\n// module id = 6\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _mdlUpgrade = require('./utils/mdlUpgrade');\n\nObject.defineProperty(exports, 'mdlUpgrade', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_mdlUpgrade).default;\n }\n});\n\nvar _MDLComponent = require('./utils/MDLComponent');\n\nObject.defineProperty(exports, 'MDLComponent', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_MDLComponent).default;\n }\n});\n\nvar _palette = require('./utils/palette');\n\nObject.defineProperty(exports, 'getColorClass', {\n enumerable: true,\n get: function get() {\n return _palette.getColorClass;\n }\n});\nObject.defineProperty(exports, 'getTextColorClass', {\n enumerable: true,\n get: function get() {\n return _palette.getTextColorClass;\n }\n});\n\nvar _Badge = require('./Badge');\n\nObject.defineProperty(exports, 'Badge', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Badge).default;\n }\n});\n\nvar _Button = require('./Button');\n\nObject.defineProperty(exports, 'Button', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Button).default;\n }\n});\n\nvar _Card = require('./Card');\n\nObject.defineProperty(exports, 'Card', {\n enumerable: true,\n get: function get() {\n return _Card.Card;\n }\n});\nObject.defineProperty(exports, 'CardTitle', {\n enumerable: true,\n get: function get() {\n return _Card.CardTitle;\n }\n});\nObject.defineProperty(exports, 'CardActions', {\n enumerable: true,\n get: function get() {\n return _Card.CardActions;\n }\n});\nObject.defineProperty(exports, 'CardMedia', {\n enumerable: true,\n get: function get() {\n return _Card.CardMedia;\n }\n});\nObject.defineProperty(exports, 'CardText', {\n enumerable: true,\n get: function get() {\n return _Card.CardText;\n }\n});\nObject.defineProperty(exports, 'CardMenu', {\n enumerable: true,\n get: function get() {\n return _Card.CardMenu;\n }\n});\n\nvar _Checkbox = require('./Checkbox');\n\nObject.defineProperty(exports, 'Checkbox', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Checkbox).default;\n }\n});\n\nvar _Chip = require('./Chip');\n\nObject.defineProperty(exports, 'Chip', {\n enumerable: true,\n get: function get() {\n return _Chip.Chip;\n }\n});\nObject.defineProperty(exports, 'ChipContact', {\n enumerable: true,\n get: function get() {\n return _Chip.ChipContact;\n }\n});\n\nvar _DataTable = require('./DataTable');\n\nObject.defineProperty(exports, 'DataTable', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_DataTable).default;\n }\n});\nObject.defineProperty(exports, 'Table', {\n enumerable: true,\n get: function get() {\n return _DataTable.Table;\n }\n});\nObject.defineProperty(exports, 'TableHeader', {\n enumerable: true,\n get: function get() {\n return _DataTable.TableHeader;\n }\n});\n\nvar _Dialog = require('./Dialog');\n\nObject.defineProperty(exports, 'Dialog', {\n enumerable: true,\n get: function get() {\n return _Dialog.Dialog;\n }\n});\nObject.defineProperty(exports, 'DialogTitle', {\n enumerable: true,\n get: function get() {\n return _Dialog.DialogTitle;\n }\n});\nObject.defineProperty(exports, 'DialogContent', {\n enumerable: true,\n get: function get() {\n return _Dialog.DialogContent;\n }\n});\nObject.defineProperty(exports, 'DialogActions', {\n enumerable: true,\n get: function get() {\n return _Dialog.DialogActions;\n }\n});\n\nvar _FABButton = require('./FABButton');\n\nObject.defineProperty(exports, 'FABButton', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_FABButton).default;\n }\n});\n\nvar _Footer = require('./Footer');\n\nObject.defineProperty(exports, 'Footer', {\n enumerable: true,\n get: function get() {\n return _Footer.Footer;\n }\n});\nObject.defineProperty(exports, 'FooterSection', {\n enumerable: true,\n get: function get() {\n return _Footer.FooterSection;\n }\n});\nObject.defineProperty(exports, 'FooterDropDownSection', {\n enumerable: true,\n get: function get() {\n return _Footer.FooterDropDownSection;\n }\n});\nObject.defineProperty(exports, 'FooterLinkList', {\n enumerable: true,\n get: function get() {\n return _Footer.FooterLinkList;\n }\n});\n\nvar _Grid = require('./Grid');\n\nObject.defineProperty(exports, 'Grid', {\n enumerable: true,\n get: function get() {\n return _Grid.Grid;\n }\n});\nObject.defineProperty(exports, 'Cell', {\n enumerable: true,\n get: function get() {\n return _Grid.Cell;\n }\n});\n\nvar _Icon = require('./Icon');\n\nObject.defineProperty(exports, 'Icon', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Icon).default;\n }\n});\n\nvar _IconButton = require('./IconButton');\n\nObject.defineProperty(exports, 'IconButton', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_IconButton).default;\n }\n});\n\nvar _IconToggle = require('./IconToggle');\n\nObject.defineProperty(exports, 'IconToggle', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_IconToggle).default;\n }\n});\n\nvar _Layout = require('./Layout');\n\nObject.defineProperty(exports, 'Layout', {\n enumerable: true,\n get: function get() {\n return _Layout.Layout;\n }\n});\nObject.defineProperty(exports, 'Header', {\n enumerable: true,\n get: function get() {\n return _Layout.Header;\n }\n});\nObject.defineProperty(exports, 'Drawer', {\n enumerable: true,\n get: function get() {\n return _Layout.Drawer;\n }\n});\nObject.defineProperty(exports, 'HeaderRow', {\n enumerable: true,\n get: function get() {\n return _Layout.HeaderRow;\n }\n});\nObject.defineProperty(exports, 'HeaderTabs', {\n enumerable: true,\n get: function get() {\n return _Layout.HeaderTabs;\n }\n});\nObject.defineProperty(exports, 'Spacer', {\n enumerable: true,\n get: function get() {\n return _Layout.Spacer;\n }\n});\nObject.defineProperty(exports, 'Navigation', {\n enumerable: true,\n get: function get() {\n return _Layout.Navigation;\n }\n});\nObject.defineProperty(exports, 'Content', {\n enumerable: true,\n get: function get() {\n return _Layout.Content;\n }\n});\n\nvar _List = require('./List');\n\nObject.defineProperty(exports, 'List', {\n enumerable: true,\n get: function get() {\n return _List.List;\n }\n});\nObject.defineProperty(exports, 'ListItem', {\n enumerable: true,\n get: function get() {\n return _List.ListItem;\n }\n});\nObject.defineProperty(exports, 'ListItemAction', {\n enumerable: true,\n get: function get() {\n return _List.ListItemAction;\n }\n});\nObject.defineProperty(exports, 'ListItemContent', {\n enumerable: true,\n get: function get() {\n return _List.ListItemContent;\n }\n});\n\nvar _Menu = require('./Menu');\n\nObject.defineProperty(exports, 'Menu', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Menu).default;\n }\n});\nObject.defineProperty(exports, 'MenuItem', {\n enumerable: true,\n get: function get() {\n return _Menu.MenuItem;\n }\n});\n\nvar _ProgressBar = require('./ProgressBar');\n\nObject.defineProperty(exports, 'ProgressBar', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ProgressBar).default;\n }\n});\n\nvar _Radio = require('./Radio');\n\nObject.defineProperty(exports, 'Radio', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Radio).default;\n }\n});\n\nvar _RadioGroup = require('./RadioGroup');\n\nObject.defineProperty(exports, 'RadioGroup', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_RadioGroup).default;\n }\n});\n\nvar _Slider = require('./Slider');\n\nObject.defineProperty(exports, 'Slider', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Slider).default;\n }\n});\n\nvar _Snackbar = require('./Snackbar');\n\nObject.defineProperty(exports, 'Snackbar', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Snackbar).default;\n }\n});\n\nvar _Spinner = require('./Spinner');\n\nObject.defineProperty(exports, 'Spinner', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Spinner).default;\n }\n});\n\nvar _Switch = require('./Switch');\n\nObject.defineProperty(exports, 'Switch', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Switch).default;\n }\n});\n\nvar _Tabs = require('./Tabs');\n\nObject.defineProperty(exports, 'Tabs', {\n enumerable: true,\n get: function get() {\n return _Tabs.Tabs;\n }\n});\nObject.defineProperty(exports, 'Tab', {\n enumerable: true,\n get: function get() {\n return _Tabs.Tab;\n }\n});\nObject.defineProperty(exports, 'TabBar', {\n enumerable: true,\n get: function get() {\n return _Tabs.TabBar;\n }\n});\n\nvar _Textfield = require('./Textfield');\n\nObject.defineProperty(exports, 'Textfield', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Textfield).default;\n }\n});\n\nvar _Tooltip = require('./Tooltip');\n\nObject.defineProperty(exports, 'Tooltip', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Tooltip).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/index.js\n// module id = 7\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar Flags = ReactDOMComponentFlags;\n\nvar internalInstanceKey = '__reactInternalInstance$' + Math.random().toString(36).slice(2);\n\n/**\n * Drill down (through composites and empty components) until we get a host or\n * host text component.\n *\n * This is pretty polymorphic but unavoidable with the current structure we have\n * for `_renderedChildren`.\n */\nfunction getRenderedHostOrTextFromComponent(component) {\n var rendered;\n while (rendered = component._renderedComponent) {\n component = rendered;\n }\n return component;\n}\n\n/**\n * Populate `_hostNode` on the rendered host/text component with the given\n * DOM node. The passed `inst` can be a composite.\n */\nfunction precacheNode(inst, node) {\n var hostInst = getRenderedHostOrTextFromComponent(inst);\n hostInst._hostNode = node;\n node[internalInstanceKey] = hostInst;\n}\n\nfunction uncacheNode(inst) {\n var node = inst._hostNode;\n if (node) {\n delete node[internalInstanceKey];\n inst._hostNode = null;\n }\n}\n\n/**\n * Populate `_hostNode` on each child of `inst`, assuming that the children\n * match up with the DOM (element) children of `node`.\n *\n * We cache entire levels at once to avoid an n^2 problem where we access the\n * children of a node sequentially and have to walk from the start to our target\n * node every time.\n *\n * Since we update `_renderedChildren` and the actual DOM at (slightly)\n * different times, we could race here and see a newer `_renderedChildren` than\n * the DOM nodes we see. To avoid this, ReactMultiChild calls\n * `prepareToManageChildren` before we change `_renderedChildren`, at which\n * time the container's child nodes are always cached (until it unmounts).\n */\nfunction precacheChildNodes(inst, node) {\n if (inst._flags & Flags.hasCachedChildNodes) {\n return;\n }\n var children = inst._renderedChildren;\n var childNode = node.firstChild;\n outer: for (var name in children) {\n if (!children.hasOwnProperty(name)) {\n continue;\n }\n var childInst = children[name];\n var childID = getRenderedHostOrTextFromComponent(childInst)._domID;\n if (childID === 0) {\n // We're currently unmounting this child in ReactMultiChild; skip it.\n continue;\n }\n // We assume the child nodes are in the same order as the child instances.\n for (; childNode !== null; childNode = childNode.nextSibling) {\n if (childNode.nodeType === 1 && childNode.getAttribute(ATTR_NAME) === String(childID) || childNode.nodeType === 8 && childNode.nodeValue === ' react-text: ' + childID + ' ' || childNode.nodeType === 8 && childNode.nodeValue === ' react-empty: ' + childID + ' ') {\n precacheNode(childInst, childNode);\n continue outer;\n }\n }\n // We reached the end of the DOM children without finding an ID match.\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unable to find element with ID %s.', childID) : _prodInvariant('32', childID) : void 0;\n }\n inst._flags |= Flags.hasCachedChildNodes;\n}\n\n/**\n * Given a DOM node, return the closest ReactDOMComponent or\n * ReactDOMTextComponent instance ancestor.\n */\nfunction getClosestInstanceFromNode(node) {\n if (node[internalInstanceKey]) {\n return node[internalInstanceKey];\n }\n\n // Walk up the tree until we find an ancestor whose instance we have cached.\n var parents = [];\n while (!node[internalInstanceKey]) {\n parents.push(node);\n if (node.parentNode) {\n node = node.parentNode;\n } else {\n // Top of the tree. This node must not be part of a React tree (or is\n // unmounted, potentially).\n return null;\n }\n }\n\n var closest;\n var inst;\n for (; node && (inst = node[internalInstanceKey]); node = parents.pop()) {\n closest = inst;\n if (parents.length) {\n precacheChildNodes(inst, node);\n }\n }\n\n return closest;\n}\n\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\nfunction getInstanceFromNode(node) {\n var inst = getClosestInstanceFromNode(node);\n if (inst != null && inst._hostNode === node) {\n return inst;\n } else {\n return null;\n }\n}\n\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\nfunction getNodeFromInstance(inst) {\n // Without this first invariant, passing a non-DOM-component triggers the next\n // invariant for a missing parent, which is super confusing.\n !(inst._hostNode !== undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n if (inst._hostNode) {\n return inst._hostNode;\n }\n\n // Walk up the tree until we find an ancestor whose DOM node we have cached.\n var parents = [];\n while (!inst._hostNode) {\n parents.push(inst);\n !inst._hostParent ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React DOM tree root should always have a node reference.') : _prodInvariant('34') : void 0;\n inst = inst._hostParent;\n }\n\n // Now parents contains each ancestor that does *not* have a cached native\n // node, and `inst` is the deepest ancestor that does.\n for (; parents.length; inst = parents.pop()) {\n precacheChildNodes(inst, inst._hostNode);\n }\n\n return inst._hostNode;\n}\n\nvar ReactDOMComponentTree = {\n getClosestInstanceFromNode: getClosestInstanceFromNode,\n getInstanceFromNode: getInstanceFromNode,\n getNodeFromInstance: getNodeFromInstance,\n precacheChildNodes: precacheChildNodes,\n precacheNode: precacheNode,\n uncacheNode: uncacheNode\n};\n\nmodule.exports = ReactDOMComponentTree;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMComponentTree.js\n// module id = 8\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.connect = exports.Provider = undefined;\n\nvar _Provider = require('./components/Provider');\n\nvar _Provider2 = _interopRequireDefault(_Provider);\n\nvar _connect = require('./components/connect');\n\nvar _connect2 = _interopRequireDefault(_connect);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nexports.Provider = _Provider2[\"default\"];\nexports.connect = _connect2[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-redux/lib/index.js\n// module id = 9\n// module chunks = 0","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/invariant/browser.js\n// module id = 10\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.createMemoryHistory = exports.hashHistory = exports.browserHistory = exports.applyRouterMiddleware = exports.formatPattern = exports.useRouterHistory = exports.match = exports.routerShape = exports.locationShape = exports.RouterContext = exports.createRoutes = exports.Route = exports.Redirect = exports.IndexRoute = exports.IndexRedirect = exports.withRouter = exports.IndexLink = exports.Link = exports.Router = undefined;\n\nvar _RouteUtils = require('./RouteUtils');\n\nObject.defineProperty(exports, 'createRoutes', {\n enumerable: true,\n get: function get() {\n return _RouteUtils.createRoutes;\n }\n});\n\nvar _PropTypes = require('./PropTypes');\n\nObject.defineProperty(exports, 'locationShape', {\n enumerable: true,\n get: function get() {\n return _PropTypes.locationShape;\n }\n});\nObject.defineProperty(exports, 'routerShape', {\n enumerable: true,\n get: function get() {\n return _PropTypes.routerShape;\n }\n});\n\nvar _PatternUtils = require('./PatternUtils');\n\nObject.defineProperty(exports, 'formatPattern', {\n enumerable: true,\n get: function get() {\n return _PatternUtils.formatPattern;\n }\n});\n\nvar _Router2 = require('./Router');\n\nvar _Router3 = _interopRequireDefault(_Router2);\n\nvar _Link2 = require('./Link');\n\nvar _Link3 = _interopRequireDefault(_Link2);\n\nvar _IndexLink2 = require('./IndexLink');\n\nvar _IndexLink3 = _interopRequireDefault(_IndexLink2);\n\nvar _withRouter2 = require('./withRouter');\n\nvar _withRouter3 = _interopRequireDefault(_withRouter2);\n\nvar _IndexRedirect2 = require('./IndexRedirect');\n\nvar _IndexRedirect3 = _interopRequireDefault(_IndexRedirect2);\n\nvar _IndexRoute2 = require('./IndexRoute');\n\nvar _IndexRoute3 = _interopRequireDefault(_IndexRoute2);\n\nvar _Redirect2 = require('./Redirect');\n\nvar _Redirect3 = _interopRequireDefault(_Redirect2);\n\nvar _Route2 = require('./Route');\n\nvar _Route3 = _interopRequireDefault(_Route2);\n\nvar _RouterContext2 = require('./RouterContext');\n\nvar _RouterContext3 = _interopRequireDefault(_RouterContext2);\n\nvar _match2 = require('./match');\n\nvar _match3 = _interopRequireDefault(_match2);\n\nvar _useRouterHistory2 = require('./useRouterHistory');\n\nvar _useRouterHistory3 = _interopRequireDefault(_useRouterHistory2);\n\nvar _applyRouterMiddleware2 = require('./applyRouterMiddleware');\n\nvar _applyRouterMiddleware3 = _interopRequireDefault(_applyRouterMiddleware2);\n\nvar _browserHistory2 = require('./browserHistory');\n\nvar _browserHistory3 = _interopRequireDefault(_browserHistory2);\n\nvar _hashHistory2 = require('./hashHistory');\n\nvar _hashHistory3 = _interopRequireDefault(_hashHistory2);\n\nvar _createMemoryHistory2 = require('./createMemoryHistory');\n\nvar _createMemoryHistory3 = _interopRequireDefault(_createMemoryHistory2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.Router = _Router3.default; /* components */\n\nexports.Link = _Link3.default;\nexports.IndexLink = _IndexLink3.default;\nexports.withRouter = _withRouter3.default;\n\n/* components (configuration) */\n\nexports.IndexRedirect = _IndexRedirect3.default;\nexports.IndexRoute = _IndexRoute3.default;\nexports.Redirect = _Redirect3.default;\nexports.Route = _Route3.default;\n\n/* utils */\n\nexports.RouterContext = _RouterContext3.default;\nexports.match = _match3.default;\nexports.useRouterHistory = _useRouterHistory3.default;\nexports.applyRouterMiddleware = _applyRouterMiddleware3.default;\n\n/* histories */\n\nexports.browserHistory = _browserHistory3.default;\nexports.hashHistory = _hashHistory3.default;\nexports.createMemoryHistory = _createMemoryHistory3.default;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/index.js\n// module id = 11\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/ExecutionEnvironment.js\n// module id = 12\n// module chunks = 0","'use strict';\n\nmodule.exports = require('./lib/ReactDOM');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/index.js\n// module id = 13\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar React = _interopRequireWildcard(_react);\n\nvar _MDLComponent = require('./MDLComponent');\n\nvar _MDLComponent2 = _interopRequireDefault(_MDLComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction patchComponentClass(Component, recursive) {\n var oldRender = Component.prototype.render;\n\n Component.prototype.render = function render() {\n // eslint-disable-line no-param-reassign\n return React.createElement(\n _MDLComponent2.default,\n { recursive: recursive },\n oldRender.call(this)\n );\n };\n\n return Component;\n}\n\nfunction patchSFC(component, recursive) {\n var patchedComponent = function patchedComponent(props) {\n return React.createElement(\n _MDLComponent2.default,\n { recursive: recursive },\n component(props)\n );\n };\n\n // Attempt to change the function name for easier debugging, but don't die\n // if the browser doesn't support it\n try {\n Object.defineProperty(patchedComponent, 'name', {\n value: component.name\n });\n } catch (e) {} // eslint-disable-line no-empty\n\n return patchedComponent;\n}\n\nexports.default = function (Component) {\n var recursive = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return Component.prototype && Component.prototype.isReactComponent ? patchComponentClass(Component, recursive) : patchSFC(Component, recursive);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/utils/mdlUpgrade.js\n// module id = 14\n// module chunks = 0","const React = require('react');\nimport styles from './common.scss';\n\n\nconst {\n List, ListItem, ListItemContent,\n Button, Icon,\n Switch,\n} = require('react-mdl');\nconst { Link } = require('react-router');\n\nexport const shorten = (str, len = 50) => (str && str.length > len ? `${str.substring(0, len)}...` : str);\n\nexport const AppsLinkList = ({ apps }) => (\n <List style={{ textAlign: 'left' }}>\n {apps.length > 0 && apps.map(({ appName, description = '-', icon = 'apps' }) => (\n <ListItem twoLine key={appName}>\n <ListItemContent avatar={icon} subtitle={shorten(description)}>\n <Link key={appName} to={`/applications/${appName}`}>\n {appName}\n </Link>\n </ListItemContent>\n </ListItem>\n ))}\n </List>\n);\n\nexport const HeaderTitle = ({ title, actions, subtitle }) => (\n <div style={{ display: 'flex', borderBottom: '1px solid #f1f1f1', marginBottom: '10px', padding: '16px 20px ' }}>\n <div style={{ flex: '2' }}>\n <h6 style={{ margin: 0 }}>{title}</h6>\n {subtitle && <small>{subtitle}</small>}\n </div>\n\n {actions && <div style={{ flex: '1', textAlign: 'right' }}>{actions}</div>}\n </div>\n);\n\nexport const FormButtons = ({ submitText = 'Create', onCancel }) => (\n <div>\n <Button type=\"submit\" ripple raised primary icon=\"add\">\n <Icon name=\"add\" />   \n { submitText }\n </Button>\n  \n <Button type=\"cancel\" ripple raised onClick={onCancel} style={{ float: 'right' }}>\n <Icon name=\"cancel\" />   \n Cancel\n </Button>\n </div>\n);\n\nexport const SwitchWithLabel = ({ onChange, children, checked }) => (\n <span>\n <span style={{ cursor: 'pointer', display: 'inline-block', width: '45px' }}>\n <Switch onChange={onChange} checked={checked} />\n </span>\n <span>{children}</span>\n </span>\n);\n\nexport const TogglesLinkList = ({ toggles }) => (\n <List style={{ textAlign: 'left' }} className={styles.truncate}>\n {toggles.length > 0 && toggles.map(({ name, description = '-', icon = 'toggle' }) => (\n <ListItem twoLine key={name}>\n <ListItemContent avatar={icon} subtitle={description}>\n <Link key={name} to={`/features/edit/${name}`}>\n {name}\n </Link>\n </ListItemContent>\n </ListItem>\n ))}\n </List>\n);\n\nexport function getIcon (type) {\n switch (type) {\n case 'feature-updated': return 'autorenew';\n case 'feature-created': return 'add';\n case 'feature-deleted': return 'remove';\n case 'feature-archived': return 'archived';\n default: return 'star';\n }\n};\n\n\nexport const IconLink = ({ icon, children, ...props }) => (\n <a {...props} style={{ textDecoration: 'none' }}>\n <Icon name={icon} style={{ marginRight: '5px', verticalAlign: 'middle' }}/>\n <span style={{ textDecoration: 'none', verticalAlign: 'middle' }}>{children}</span>\n </a>\n);\n\nexport const ExternalIconLink = ({ url, children }) => (\n <IconLink icon=\"queue\" href={url} target=\"_blank\" rel=\"noopener\">\n {children}\n </IconLink>\n);\n\nconst badNumbers = [NaN, Infinity, -Infinity];\nexport function calc (value, total, decimal) {\n if (typeof value !== 'number' ||\n typeof total !== 'number' ||\n typeof decimal !== 'number') {\n return null;\n }\n\n if (total === 0) {\n return 0;\n }\n\n badNumbers.forEach((number) => {\n if ([value, total, decimal].indexOf(number) > -1) {\n return number;\n }\n });\n\n return (value / total * 100).toFixed(decimal);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/common/index.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/emptyFunction.js\n// module id = 16\n// module chunks = 0","/**\n * Copyright (c) 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global.Immutable = factory());\n}(this, function () { 'use strict';var SLICE$0 = Array.prototype.slice;\n\n function createClass(ctor, superClass) {\n if (superClass) {\n ctor.prototype = Object.create(superClass.prototype);\n }\n ctor.prototype.constructor = ctor;\n }\n\n function Iterable(value) {\n return isIterable(value) ? value : Seq(value);\n }\n\n\n createClass(KeyedIterable, Iterable);\n function KeyedIterable(value) {\n return isKeyed(value) ? value : KeyedSeq(value);\n }\n\n\n createClass(IndexedIterable, Iterable);\n function IndexedIterable(value) {\n return isIndexed(value) ? value : IndexedSeq(value);\n }\n\n\n createClass(SetIterable, Iterable);\n function SetIterable(value) {\n return isIterable(value) && !isAssociative(value) ? value : SetSeq(value);\n }\n\n\n\n function isIterable(maybeIterable) {\n return !!(maybeIterable && maybeIterable[IS_ITERABLE_SENTINEL]);\n }\n\n function isKeyed(maybeKeyed) {\n return !!(maybeKeyed && maybeKeyed[IS_KEYED_SENTINEL]);\n }\n\n function isIndexed(maybeIndexed) {\n return !!(maybeIndexed && maybeIndexed[IS_INDEXED_SENTINEL]);\n }\n\n function isAssociative(maybeAssociative) {\n return isKeyed(maybeAssociative) || isIndexed(maybeAssociative);\n }\n\n function isOrdered(maybeOrdered) {\n return !!(maybeOrdered && maybeOrdered[IS_ORDERED_SENTINEL]);\n }\n\n Iterable.isIterable = isIterable;\n Iterable.isKeyed = isKeyed;\n Iterable.isIndexed = isIndexed;\n Iterable.isAssociative = isAssociative;\n Iterable.isOrdered = isOrdered;\n\n Iterable.Keyed = KeyedIterable;\n Iterable.Indexed = IndexedIterable;\n Iterable.Set = SetIterable;\n\n\n var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n // Used for setting prototype methods that IE8 chokes on.\n var DELETE = 'delete';\n\n // Constants describing the size of trie nodes.\n var SHIFT = 5; // Resulted in best performance after ______?\n var SIZE = 1 << SHIFT;\n var MASK = SIZE - 1;\n\n // A consistent shared value representing \"not set\" which equals nothing other\n // than itself, and nothing that could be provided externally.\n var NOT_SET = {};\n\n // Boolean references, Rough equivalent of `bool &`.\n var CHANGE_LENGTH = { value: false };\n var DID_ALTER = { value: false };\n\n function MakeRef(ref) {\n ref.value = false;\n return ref;\n }\n\n function SetRef(ref) {\n ref && (ref.value = true);\n }\n\n // A function which returns a value representing an \"owner\" for transient writes\n // to tries. The return value will only ever equal itself, and will not equal\n // the return of any subsequent call of this function.\n function OwnerID() {}\n\n // http://jsperf.com/copy-array-inline\n function arrCopy(arr, offset) {\n offset = offset || 0;\n var len = Math.max(0, arr.length - offset);\n var newArr = new Array(len);\n for (var ii = 0; ii < len; ii++) {\n newArr[ii] = arr[ii + offset];\n }\n return newArr;\n }\n\n function ensureSize(iter) {\n if (iter.size === undefined) {\n iter.size = iter.__iterate(returnTrue);\n }\n return iter.size;\n }\n\n function wrapIndex(iter, index) {\n // This implements \"is array index\" which the ECMAString spec defines as:\n //\n // A String property name P is an array index if and only if\n // ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal\n // to 2^32−1.\n //\n // http://www.ecma-international.org/ecma-262/6.0/#sec-array-exotic-objects\n if (typeof index !== 'number') {\n var uint32Index = index >>> 0; // N >>> 0 is shorthand for ToUint32\n if ('' + uint32Index !== index || uint32Index === 4294967295) {\n return NaN;\n }\n index = uint32Index;\n }\n return index < 0 ? ensureSize(iter) + index : index;\n }\n\n function returnTrue() {\n return true;\n }\n\n function wholeSlice(begin, end, size) {\n return (begin === 0 || (size !== undefined && begin <= -size)) &&\n (end === undefined || (size !== undefined && end >= size));\n }\n\n function resolveBegin(begin, size) {\n return resolveIndex(begin, size, 0);\n }\n\n function resolveEnd(end, size) {\n return resolveIndex(end, size, size);\n }\n\n function resolveIndex(index, size, defaultIndex) {\n return index === undefined ?\n defaultIndex :\n index < 0 ?\n Math.max(0, size + index) :\n size === undefined ?\n index :\n Math.min(size, index);\n }\n\n /* global Symbol */\n\n var ITERATE_KEYS = 0;\n var ITERATE_VALUES = 1;\n var ITERATE_ENTRIES = 2;\n\n var REAL_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator';\n\n var ITERATOR_SYMBOL = REAL_ITERATOR_SYMBOL || FAUX_ITERATOR_SYMBOL;\n\n\n function Iterator(next) {\n this.next = next;\n }\n\n Iterator.prototype.toString = function() {\n return '[Iterator]';\n };\n\n\n Iterator.KEYS = ITERATE_KEYS;\n Iterator.VALUES = ITERATE_VALUES;\n Iterator.ENTRIES = ITERATE_ENTRIES;\n\n Iterator.prototype.inspect =\n Iterator.prototype.toSource = function () { return this.toString(); }\n Iterator.prototype[ITERATOR_SYMBOL] = function () {\n return this;\n };\n\n\n function iteratorValue(type, k, v, iteratorResult) {\n var value = type === 0 ? k : type === 1 ? v : [k, v];\n iteratorResult ? (iteratorResult.value = value) : (iteratorResult = {\n value: value, done: false\n });\n return iteratorResult;\n }\n\n function iteratorDone() {\n return { value: undefined, done: true };\n }\n\n function hasIterator(maybeIterable) {\n return !!getIteratorFn(maybeIterable);\n }\n\n function isIterator(maybeIterator) {\n return maybeIterator && typeof maybeIterator.next === 'function';\n }\n\n function getIterator(iterable) {\n var iteratorFn = getIteratorFn(iterable);\n return iteratorFn && iteratorFn.call(iterable);\n }\n\n function getIteratorFn(iterable) {\n var iteratorFn = iterable && (\n (REAL_ITERATOR_SYMBOL && iterable[REAL_ITERATOR_SYMBOL]) ||\n iterable[FAUX_ITERATOR_SYMBOL]\n );\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n function isArrayLike(value) {\n return value && typeof value.length === 'number';\n }\n\n createClass(Seq, Iterable);\n function Seq(value) {\n return value === null || value === undefined ? emptySequence() :\n isIterable(value) ? value.toSeq() : seqFromValue(value);\n }\n\n Seq.of = function(/*...values*/) {\n return Seq(arguments);\n };\n\n Seq.prototype.toSeq = function() {\n return this;\n };\n\n Seq.prototype.toString = function() {\n return this.__toString('Seq {', '}');\n };\n\n Seq.prototype.cacheResult = function() {\n if (!this._cache && this.__iterateUncached) {\n this._cache = this.entrySeq().toArray();\n this.size = this._cache.length;\n }\n return this;\n };\n\n // abstract __iterateUncached(fn, reverse)\n\n Seq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, true);\n };\n\n // abstract __iteratorUncached(type, reverse)\n\n Seq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, true);\n };\n\n\n\n createClass(KeyedSeq, Seq);\n function KeyedSeq(value) {\n return value === null || value === undefined ?\n emptySequence().toKeyedSeq() :\n isIterable(value) ?\n (isKeyed(value) ? value.toSeq() : value.fromEntrySeq()) :\n keyedSeqFromValue(value);\n }\n\n KeyedSeq.prototype.toKeyedSeq = function() {\n return this;\n };\n\n\n\n createClass(IndexedSeq, Seq);\n function IndexedSeq(value) {\n return value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value.toIndexedSeq();\n }\n\n IndexedSeq.of = function(/*...values*/) {\n return IndexedSeq(arguments);\n };\n\n IndexedSeq.prototype.toIndexedSeq = function() {\n return this;\n };\n\n IndexedSeq.prototype.toString = function() {\n return this.__toString('Seq [', ']');\n };\n\n IndexedSeq.prototype.__iterate = function(fn, reverse) {\n return seqIterate(this, fn, reverse, false);\n };\n\n IndexedSeq.prototype.__iterator = function(type, reverse) {\n return seqIterator(this, type, reverse, false);\n };\n\n\n\n createClass(SetSeq, Seq);\n function SetSeq(value) {\n return (\n value === null || value === undefined ? emptySequence() :\n !isIterable(value) ? indexedSeqFromValue(value) :\n isKeyed(value) ? value.entrySeq() : value\n ).toSetSeq();\n }\n\n SetSeq.of = function(/*...values*/) {\n return SetSeq(arguments);\n };\n\n SetSeq.prototype.toSetSeq = function() {\n return this;\n };\n\n\n\n Seq.isSeq = isSeq;\n Seq.Keyed = KeyedSeq;\n Seq.Set = SetSeq;\n Seq.Indexed = IndexedSeq;\n\n var IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\n\n Seq.prototype[IS_SEQ_SENTINEL] = true;\n\n\n\n createClass(ArraySeq, IndexedSeq);\n function ArraySeq(array) {\n this._array = array;\n this.size = array.length;\n }\n\n ArraySeq.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._array[wrapIndex(this, index)] : notSetValue;\n };\n\n ArraySeq.prototype.__iterate = function(fn, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(array[reverse ? maxIndex - ii : ii], ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ArraySeq.prototype.__iterator = function(type, reverse) {\n var array = this._array;\n var maxIndex = array.length - 1;\n var ii = 0;\n return new Iterator(function() \n {return ii > maxIndex ?\n iteratorDone() :\n iteratorValue(type, ii, array[reverse ? maxIndex - ii++ : ii++])}\n );\n };\n\n\n\n createClass(ObjectSeq, KeyedSeq);\n function ObjectSeq(object) {\n var keys = Object.keys(object);\n this._object = object;\n this._keys = keys;\n this.size = keys.length;\n }\n\n ObjectSeq.prototype.get = function(key, notSetValue) {\n if (notSetValue !== undefined && !this.has(key)) {\n return notSetValue;\n }\n return this._object[key];\n };\n\n ObjectSeq.prototype.has = function(key) {\n return this._object.hasOwnProperty(key);\n };\n\n ObjectSeq.prototype.__iterate = function(fn, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var key = keys[reverse ? maxIndex - ii : ii];\n if (fn(object[key], key, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n ObjectSeq.prototype.__iterator = function(type, reverse) {\n var object = this._object;\n var keys = this._keys;\n var maxIndex = keys.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var key = keys[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, key, object[key]);\n });\n };\n\n ObjectSeq.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(IterableSeq, IndexedSeq);\n function IterableSeq(iterable) {\n this._iterable = iterable;\n this.size = iterable.length || iterable.size;\n }\n\n IterableSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n var iterations = 0;\n if (isIterator(iterator)) {\n var step;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n }\n return iterations;\n };\n\n IterableSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterable = this._iterable;\n var iterator = getIterator(iterable);\n if (!isIterator(iterator)) {\n return new Iterator(iteratorDone);\n }\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step : iteratorValue(type, iterations++, step.value);\n });\n };\n\n\n\n createClass(IteratorSeq, IndexedSeq);\n function IteratorSeq(iterator) {\n this._iterator = iterator;\n this._iteratorCache = [];\n }\n\n IteratorSeq.prototype.__iterateUncached = function(fn, reverse) {\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n while (iterations < cache.length) {\n if (fn(cache[iterations], iterations++, this) === false) {\n return iterations;\n }\n }\n var step;\n while (!(step = iterator.next()).done) {\n var val = step.value;\n cache[iterations] = val;\n if (fn(val, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n\n IteratorSeq.prototype.__iteratorUncached = function(type, reverse) {\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = this._iterator;\n var cache = this._iteratorCache;\n var iterations = 0;\n return new Iterator(function() {\n if (iterations >= cache.length) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n cache[iterations] = step.value;\n }\n return iteratorValue(type, iterations, cache[iterations++]);\n });\n };\n\n\n\n\n // # pragma Helper functions\n\n function isSeq(maybeSeq) {\n return !!(maybeSeq && maybeSeq[IS_SEQ_SENTINEL]);\n }\n\n var EMPTY_SEQ;\n\n function emptySequence() {\n return EMPTY_SEQ || (EMPTY_SEQ = new ArraySeq([]));\n }\n\n function keyedSeqFromValue(value) {\n var seq =\n Array.isArray(value) ? new ArraySeq(value).fromEntrySeq() :\n isIterator(value) ? new IteratorSeq(value).fromEntrySeq() :\n hasIterator(value) ? new IterableSeq(value).fromEntrySeq() :\n typeof value === 'object' ? new ObjectSeq(value) :\n undefined;\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of [k, v] entries, '+\n 'or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function indexedSeqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value);\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values: ' + value\n );\n }\n return seq;\n }\n\n function seqFromValue(value) {\n var seq = maybeIndexedSeqFromValue(value) ||\n (typeof value === 'object' && new ObjectSeq(value));\n if (!seq) {\n throw new TypeError(\n 'Expected Array or iterable object of values, or keyed object: ' + value\n );\n }\n return seq;\n }\n\n function maybeIndexedSeqFromValue(value) {\n return (\n isArrayLike(value) ? new ArraySeq(value) :\n isIterator(value) ? new IteratorSeq(value) :\n hasIterator(value) ? new IterableSeq(value) :\n undefined\n );\n }\n\n function seqIterate(seq, fn, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n for (var ii = 0; ii <= maxIndex; ii++) {\n var entry = cache[reverse ? maxIndex - ii : ii];\n if (fn(entry[1], useKeys ? entry[0] : ii, seq) === false) {\n return ii + 1;\n }\n }\n return ii;\n }\n return seq.__iterateUncached(fn, reverse);\n }\n\n function seqIterator(seq, type, reverse, useKeys) {\n var cache = seq._cache;\n if (cache) {\n var maxIndex = cache.length - 1;\n var ii = 0;\n return new Iterator(function() {\n var entry = cache[reverse ? maxIndex - ii : ii];\n return ii++ > maxIndex ?\n iteratorDone() :\n iteratorValue(type, useKeys ? entry[0] : ii - 1, entry[1]);\n });\n }\n return seq.__iteratorUncached(type, reverse);\n }\n\n function fromJS(json, converter) {\n return converter ?\n fromJSWith(converter, json, '', {'': json}) :\n fromJSDefault(json);\n }\n\n function fromJSWith(converter, json, key, parentJSON) {\n if (Array.isArray(json)) {\n return converter.call(parentJSON, key, IndexedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n if (isPlainObj(json)) {\n return converter.call(parentJSON, key, KeyedSeq(json).map(function(v, k) {return fromJSWith(converter, v, k, json)}));\n }\n return json;\n }\n\n function fromJSDefault(json) {\n if (Array.isArray(json)) {\n return IndexedSeq(json).map(fromJSDefault).toList();\n }\n if (isPlainObj(json)) {\n return KeyedSeq(json).map(fromJSDefault).toMap();\n }\n return json;\n }\n\n function isPlainObj(value) {\n return value && (value.constructor === Object || value.constructor === undefined);\n }\n\n /**\n * An extension of the \"same-value\" algorithm as [described for use by ES6 Map\n * and Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map#Key_equality)\n *\n * NaN is considered the same as NaN, however -0 and 0 are considered the same\n * value, which is different from the algorithm described by\n * [`Object.is`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is).\n *\n * This is extended further to allow Objects to describe the values they\n * represent, by way of `valueOf` or `equals` (and `hashCode`).\n *\n * Note: because of this extension, the key equality of Immutable.Map and the\n * value equality of Immutable.Set will differ from ES6 Map and Set.\n *\n * ### Defining custom values\n *\n * The easiest way to describe the value an object represents is by implementing\n * `valueOf`. For example, `Date` represents a value by returning a unix\n * timestamp for `valueOf`:\n *\n * var date1 = new Date(1234567890000); // Fri Feb 13 2009 ...\n * var date2 = new Date(1234567890000);\n * date1.valueOf(); // 1234567890000\n * assert( date1 !== date2 );\n * assert( Immutable.is( date1, date2 ) );\n *\n * Note: overriding `valueOf` may have other implications if you use this object\n * where JavaScript expects a primitive, such as implicit string coercion.\n *\n * For more complex types, especially collections, implementing `valueOf` may\n * not be performant. An alternative is to implement `equals` and `hashCode`.\n *\n * `equals` takes another object, presumably of similar type, and returns true\n * if the it is equal. Equality is symmetrical, so the same result should be\n * returned if this and the argument are flipped.\n *\n * assert( a.equals(b) === b.equals(a) );\n *\n * `hashCode` returns a 32bit integer number representing the object which will\n * be used to determine how to store the value object in a Map or Set. You must\n * provide both or neither methods, one must not exist without the other.\n *\n * Also, an important relationship between these methods must be upheld: if two\n * values are equal, they *must* return the same hashCode. If the values are not\n * equal, they might have the same hashCode; this is called a hash collision,\n * and while undesirable for performance reasons, it is acceptable.\n *\n * if (a.equals(b)) {\n * assert( a.hashCode() === b.hashCode() );\n * }\n *\n * All Immutable collections implement `equals` and `hashCode`.\n *\n */\n function is(valueA, valueB) {\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n if (typeof valueA.valueOf === 'function' &&\n typeof valueB.valueOf === 'function') {\n valueA = valueA.valueOf();\n valueB = valueB.valueOf();\n if (valueA === valueB || (valueA !== valueA && valueB !== valueB)) {\n return true;\n }\n if (!valueA || !valueB) {\n return false;\n }\n }\n if (typeof valueA.equals === 'function' &&\n typeof valueB.equals === 'function' &&\n valueA.equals(valueB)) {\n return true;\n }\n return false;\n }\n\n function deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (\n !isIterable(b) ||\n a.size !== undefined && b.size !== undefined && a.size !== b.size ||\n a.__hash !== undefined && b.__hash !== undefined && a.__hash !== b.__hash ||\n isKeyed(a) !== isKeyed(b) ||\n isIndexed(a) !== isIndexed(b) ||\n isOrdered(a) !== isOrdered(b)\n ) {\n return false;\n }\n\n if (a.size === 0 && b.size === 0) {\n return true;\n }\n\n var notAssociative = !isAssociative(a);\n\n if (isOrdered(a)) {\n var entries = a.entries();\n return b.every(function(v, k) {\n var entry = entries.next().value;\n return entry && is(entry[1], v) && (notAssociative || is(entry[0], k));\n }) && entries.next().done;\n }\n\n var flipped = false;\n\n if (a.size === undefined) {\n if (b.size === undefined) {\n if (typeof a.cacheResult === 'function') {\n a.cacheResult();\n }\n } else {\n flipped = true;\n var _ = a;\n a = b;\n b = _;\n }\n }\n\n var allEqual = true;\n var bSize = b.__iterate(function(v, k) {\n if (notAssociative ? !a.has(v) :\n flipped ? !is(v, a.get(k, NOT_SET)) : !is(a.get(k, NOT_SET), v)) {\n allEqual = false;\n return false;\n }\n });\n\n return allEqual && a.size === bSize;\n }\n\n createClass(Repeat, IndexedSeq);\n\n function Repeat(value, times) {\n if (!(this instanceof Repeat)) {\n return new Repeat(value, times);\n }\n this._value = value;\n this.size = times === undefined ? Infinity : Math.max(0, times);\n if (this.size === 0) {\n if (EMPTY_REPEAT) {\n return EMPTY_REPEAT;\n }\n EMPTY_REPEAT = this;\n }\n }\n\n Repeat.prototype.toString = function() {\n if (this.size === 0) {\n return 'Repeat []';\n }\n return 'Repeat [ ' + this._value + ' ' + this.size + ' times ]';\n };\n\n Repeat.prototype.get = function(index, notSetValue) {\n return this.has(index) ? this._value : notSetValue;\n };\n\n Repeat.prototype.includes = function(searchValue) {\n return is(this._value, searchValue);\n };\n\n Repeat.prototype.slice = function(begin, end) {\n var size = this.size;\n return wholeSlice(begin, end, size) ? this :\n new Repeat(this._value, resolveEnd(end, size) - resolveBegin(begin, size));\n };\n\n Repeat.prototype.reverse = function() {\n return this;\n };\n\n Repeat.prototype.indexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return 0;\n }\n return -1;\n };\n\n Repeat.prototype.lastIndexOf = function(searchValue) {\n if (is(this._value, searchValue)) {\n return this.size;\n }\n return -1;\n };\n\n Repeat.prototype.__iterate = function(fn, reverse) {\n for (var ii = 0; ii < this.size; ii++) {\n if (fn(this._value, ii, this) === false) {\n return ii + 1;\n }\n }\n return ii;\n };\n\n Repeat.prototype.__iterator = function(type, reverse) {var this$0 = this;\n var ii = 0;\n return new Iterator(function() \n {return ii < this$0.size ? iteratorValue(type, ii++, this$0._value) : iteratorDone()}\n );\n };\n\n Repeat.prototype.equals = function(other) {\n return other instanceof Repeat ?\n is(this._value, other._value) :\n deepEqual(other);\n };\n\n\n var EMPTY_REPEAT;\n\n function invariant(condition, error) {\n if (!condition) throw new Error(error);\n }\n\n createClass(Range, IndexedSeq);\n\n function Range(start, end, step) {\n if (!(this instanceof Range)) {\n return new Range(start, end, step);\n }\n invariant(step !== 0, 'Cannot step a Range by 0');\n start = start || 0;\n if (end === undefined) {\n end = Infinity;\n }\n step = step === undefined ? 1 : Math.abs(step);\n if (end < start) {\n step = -step;\n }\n this._start = start;\n this._end = end;\n this._step = step;\n this.size = Math.max(0, Math.ceil((end - start) / step - 1) + 1);\n if (this.size === 0) {\n if (EMPTY_RANGE) {\n return EMPTY_RANGE;\n }\n EMPTY_RANGE = this;\n }\n }\n\n Range.prototype.toString = function() {\n if (this.size === 0) {\n return 'Range []';\n }\n return 'Range [ ' +\n this._start + '...' + this._end +\n (this._step !== 1 ? ' by ' + this._step : '') +\n ' ]';\n };\n\n Range.prototype.get = function(index, notSetValue) {\n return this.has(index) ?\n this._start + wrapIndex(this, index) * this._step :\n notSetValue;\n };\n\n Range.prototype.includes = function(searchValue) {\n var possibleIndex = (searchValue - this._start) / this._step;\n return possibleIndex >= 0 &&\n possibleIndex < this.size &&\n possibleIndex === Math.floor(possibleIndex);\n };\n\n Range.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n begin = resolveBegin(begin, this.size);\n end = resolveEnd(end, this.size);\n if (end <= begin) {\n return new Range(0, 0);\n }\n return new Range(this.get(begin, this._end), this.get(end, this._end), this._step);\n };\n\n Range.prototype.indexOf = function(searchValue) {\n var offsetValue = searchValue - this._start;\n if (offsetValue % this._step === 0) {\n var index = offsetValue / this._step;\n if (index >= 0 && index < this.size) {\n return index\n }\n }\n return -1;\n };\n\n Range.prototype.lastIndexOf = function(searchValue) {\n return this.indexOf(searchValue);\n };\n\n Range.prototype.__iterate = function(fn, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n for (var ii = 0; ii <= maxIndex; ii++) {\n if (fn(value, ii, this) === false) {\n return ii + 1;\n }\n value += reverse ? -step : step;\n }\n return ii;\n };\n\n Range.prototype.__iterator = function(type, reverse) {\n var maxIndex = this.size - 1;\n var step = this._step;\n var value = reverse ? this._start + maxIndex * step : this._start;\n var ii = 0;\n return new Iterator(function() {\n var v = value;\n value += reverse ? -step : step;\n return ii > maxIndex ? iteratorDone() : iteratorValue(type, ii++, v);\n });\n };\n\n Range.prototype.equals = function(other) {\n return other instanceof Range ?\n this._start === other._start &&\n this._end === other._end &&\n this._step === other._step :\n deepEqual(this, other);\n };\n\n\n var EMPTY_RANGE;\n\n createClass(Collection, Iterable);\n function Collection() {\n throw TypeError('Abstract');\n }\n\n\n createClass(KeyedCollection, Collection);function KeyedCollection() {}\n\n createClass(IndexedCollection, Collection);function IndexedCollection() {}\n\n createClass(SetCollection, Collection);function SetCollection() {}\n\n\n Collection.Keyed = KeyedCollection;\n Collection.Indexed = IndexedCollection;\n Collection.Set = SetCollection;\n\n var imul =\n typeof Math.imul === 'function' && Math.imul(0xffffffff, 2) === -2 ?\n Math.imul :\n function imul(a, b) {\n a = a | 0; // int\n b = b | 0; // int\n var c = a & 0xffff;\n var d = b & 0xffff;\n // Shift by 0 fixes the sign on the high part.\n return (c * d) + ((((a >>> 16) * d + c * (b >>> 16)) << 16) >>> 0) | 0; // int\n };\n\n // v8 has an optimization for storing 31-bit signed numbers.\n // Values which have either 00 or 11 as the high order bits qualify.\n // This function drops the highest order bit in a signed number, maintaining\n // the sign bit.\n function smi(i32) {\n return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);\n }\n\n function hash(o) {\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n if (typeof o.valueOf === 'function') {\n o = o.valueOf();\n if (o === false || o === null || o === undefined) {\n return 0;\n }\n }\n if (o === true) {\n return 1;\n }\n var type = typeof o;\n if (type === 'number') {\n if (o !== o || o === Infinity) {\n return 0;\n }\n var h = o | 0;\n if (h !== o) {\n h ^= o * 0xFFFFFFFF;\n }\n while (o > 0xFFFFFFFF) {\n o /= 0xFFFFFFFF;\n h ^= o;\n }\n return smi(h);\n }\n if (type === 'string') {\n return o.length > STRING_HASH_CACHE_MIN_STRLEN ? cachedHashString(o) : hashString(o);\n }\n if (typeof o.hashCode === 'function') {\n return o.hashCode();\n }\n if (type === 'object') {\n return hashJSObj(o);\n }\n if (typeof o.toString === 'function') {\n return hashString(o.toString());\n }\n throw new Error('Value type ' + type + ' cannot be hashed.');\n }\n\n function cachedHashString(string) {\n var hash = stringHashCache[string];\n if (hash === undefined) {\n hash = hashString(string);\n if (STRING_HASH_CACHE_SIZE === STRING_HASH_CACHE_MAX_SIZE) {\n STRING_HASH_CACHE_SIZE = 0;\n stringHashCache = {};\n }\n STRING_HASH_CACHE_SIZE++;\n stringHashCache[string] = hash;\n }\n return hash;\n }\n\n // http://jsperf.com/hashing-strings\n function hashString(string) {\n // This is the hash from JVM\n // The hash code for a string is computed as\n // s[0] * 31 ^ (n - 1) + s[1] * 31 ^ (n - 2) + ... + s[n - 1],\n // where s[i] is the ith character of the string and n is the length of\n // the string. We \"mod\" the result to make it between 0 (inclusive) and 2^31\n // (exclusive) by dropping high bits.\n var hash = 0;\n for (var ii = 0; ii < string.length; ii++) {\n hash = 31 * hash + string.charCodeAt(ii) | 0;\n }\n return smi(hash);\n }\n\n function hashJSObj(obj) {\n var hash;\n if (usingWeakMap) {\n hash = weakMap.get(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = obj[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n if (!canDefineProperty) {\n hash = obj.propertyIsEnumerable && obj.propertyIsEnumerable[UID_HASH_KEY];\n if (hash !== undefined) {\n return hash;\n }\n\n hash = getIENodeHash(obj);\n if (hash !== undefined) {\n return hash;\n }\n }\n\n hash = ++objHashUID;\n if (objHashUID & 0x40000000) {\n objHashUID = 0;\n }\n\n if (usingWeakMap) {\n weakMap.set(obj, hash);\n } else if (isExtensible !== undefined && isExtensible(obj) === false) {\n throw new Error('Non-extensible objects are not allowed as keys.');\n } else if (canDefineProperty) {\n Object.defineProperty(obj, UID_HASH_KEY, {\n 'enumerable': false,\n 'configurable': false,\n 'writable': false,\n 'value': hash\n });\n } else if (obj.propertyIsEnumerable !== undefined &&\n obj.propertyIsEnumerable === obj.constructor.prototype.propertyIsEnumerable) {\n // Since we can't define a non-enumerable property on the object\n // we'll hijack one of the less-used non-enumerable properties to\n // save our hash on it. Since this is a function it will not show up in\n // `JSON.stringify` which is what we want.\n obj.propertyIsEnumerable = function() {\n return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments);\n };\n obj.propertyIsEnumerable[UID_HASH_KEY] = hash;\n } else if (obj.nodeType !== undefined) {\n // At this point we couldn't get the IE `uniqueID` to use as a hash\n // and we couldn't use a non-enumerable property to exploit the\n // dontEnum bug so we simply add the `UID_HASH_KEY` on the node\n // itself.\n obj[UID_HASH_KEY] = hash;\n } else {\n throw new Error('Unable to set a non-enumerable property on object.');\n }\n\n return hash;\n }\n\n // Get references to ES5 object methods.\n var isExtensible = Object.isExtensible;\n\n // True if Object.defineProperty works as expected. IE8 fails this test.\n var canDefineProperty = (function() {\n try {\n Object.defineProperty({}, '@', {});\n return true;\n } catch (e) {\n return false;\n }\n }());\n\n // IE has a `uniqueID` property on DOM nodes. We can construct the hash from it\n // and avoid memory leaks from the IE cloneNode bug.\n function getIENodeHash(node) {\n if (node && node.nodeType > 0) {\n switch (node.nodeType) {\n case 1: // Element\n return node.uniqueID;\n case 9: // Document\n return node.documentElement && node.documentElement.uniqueID;\n }\n }\n }\n\n // If possible, use a WeakMap.\n var usingWeakMap = typeof WeakMap === 'function';\n var weakMap;\n if (usingWeakMap) {\n weakMap = new WeakMap();\n }\n\n var objHashUID = 0;\n\n var UID_HASH_KEY = '__immutablehash__';\n if (typeof Symbol === 'function') {\n UID_HASH_KEY = Symbol(UID_HASH_KEY);\n }\n\n var STRING_HASH_CACHE_MIN_STRLEN = 16;\n var STRING_HASH_CACHE_MAX_SIZE = 255;\n var STRING_HASH_CACHE_SIZE = 0;\n var stringHashCache = {};\n\n function assertNotInfinite(size) {\n invariant(\n size !== Infinity,\n 'Cannot perform this action with an infinite size.'\n );\n }\n\n createClass(Map, KeyedCollection);\n\n // @pragma Construction\n\n function Map(value) {\n return value === null || value === undefined ? emptyMap() :\n isMap(value) && !isOrdered(value) ? value :\n emptyMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n Map.of = function() {var keyValues = SLICE$0.call(arguments, 0);\n return emptyMap().withMutations(function(map ) {\n for (var i = 0; i < keyValues.length; i += 2) {\n if (i + 1 >= keyValues.length) {\n throw new Error('Missing value for key: ' + keyValues[i]);\n }\n map.set(keyValues[i], keyValues[i + 1]);\n }\n });\n };\n\n Map.prototype.toString = function() {\n return this.__toString('Map {', '}');\n };\n\n // @pragma Access\n\n Map.prototype.get = function(k, notSetValue) {\n return this._root ?\n this._root.get(0, undefined, k, notSetValue) :\n notSetValue;\n };\n\n // @pragma Modification\n\n Map.prototype.set = function(k, v) {\n return updateMap(this, k, v);\n };\n\n Map.prototype.setIn = function(keyPath, v) {\n return this.updateIn(keyPath, NOT_SET, function() {return v});\n };\n\n Map.prototype.remove = function(k) {\n return updateMap(this, k, NOT_SET);\n };\n\n Map.prototype.deleteIn = function(keyPath) {\n return this.updateIn(keyPath, function() {return NOT_SET});\n };\n\n Map.prototype.update = function(k, notSetValue, updater) {\n return arguments.length === 1 ?\n k(this) :\n this.updateIn([k], notSetValue, updater);\n };\n\n Map.prototype.updateIn = function(keyPath, notSetValue, updater) {\n if (!updater) {\n updater = notSetValue;\n notSetValue = undefined;\n }\n var updatedValue = updateInDeepMap(\n this,\n forceIterator(keyPath),\n notSetValue,\n updater\n );\n return updatedValue === NOT_SET ? undefined : updatedValue;\n };\n\n Map.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._root = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyMap();\n };\n\n // @pragma Composition\n\n Map.prototype.merge = function(/*...iters*/) {\n return mergeIntoMapWith(this, undefined, arguments);\n };\n\n Map.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, merger, iters);\n };\n\n Map.prototype.mergeIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.merge === 'function' ?\n m.merge.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoMapWith(this, deepMerger, arguments);\n };\n\n Map.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoMapWith(this, deepMergerWith(merger), iters);\n };\n\n Map.prototype.mergeDeepIn = function(keyPath) {var iters = SLICE$0.call(arguments, 1);\n return this.updateIn(\n keyPath,\n emptyMap(),\n function(m ) {return typeof m.mergeDeep === 'function' ?\n m.mergeDeep.apply(m, iters) :\n iters[iters.length - 1]}\n );\n };\n\n Map.prototype.sort = function(comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator));\n };\n\n Map.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedMap(sortFactory(this, comparator, mapper));\n };\n\n // @pragma Mutability\n\n Map.prototype.withMutations = function(fn) {\n var mutable = this.asMutable();\n fn(mutable);\n return mutable.wasAltered() ? mutable.__ensureOwner(this.__ownerID) : this;\n };\n\n Map.prototype.asMutable = function() {\n return this.__ownerID ? this : this.__ensureOwner(new OwnerID());\n };\n\n Map.prototype.asImmutable = function() {\n return this.__ensureOwner();\n };\n\n Map.prototype.wasAltered = function() {\n return this.__altered;\n };\n\n Map.prototype.__iterator = function(type, reverse) {\n return new MapIterator(this, type, reverse);\n };\n\n Map.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n this._root && this._root.iterate(function(entry ) {\n iterations++;\n return fn(entry[1], entry[0], this$0);\n }, reverse);\n return iterations;\n };\n\n Map.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeMap(this.size, this._root, ownerID, this.__hash);\n };\n\n\n function isMap(maybeMap) {\n return !!(maybeMap && maybeMap[IS_MAP_SENTINEL]);\n }\n\n Map.isMap = isMap;\n\n var IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\n\n var MapPrototype = Map.prototype;\n MapPrototype[IS_MAP_SENTINEL] = true;\n MapPrototype[DELETE] = MapPrototype.remove;\n MapPrototype.removeIn = MapPrototype.deleteIn;\n\n\n // #pragma Trie Nodes\n\n\n\n function ArrayMapNode(ownerID, entries) {\n this.ownerID = ownerID;\n this.entries = entries;\n }\n\n ArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n ArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && entries.length === 1) {\n return; // undefined\n }\n\n if (!exists && !removed && entries.length >= MAX_ARRAY_MAP_SIZE) {\n return createNodes(ownerID, entries, key, value);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new ArrayMapNode(ownerID, newEntries);\n };\n\n\n\n\n function BitmapIndexedNode(ownerID, bitmap, nodes) {\n this.ownerID = ownerID;\n this.bitmap = bitmap;\n this.nodes = nodes;\n }\n\n BitmapIndexedNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var bit = (1 << ((shift === 0 ? keyHash : keyHash >>> shift) & MASK));\n var bitmap = this.bitmap;\n return (bitmap & bit) === 0 ? notSetValue :\n this.nodes[popCount(bitmap & (bit - 1))].get(shift + SHIFT, keyHash, key, notSetValue);\n };\n\n BitmapIndexedNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var keyHashFrag = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var bit = 1 << keyHashFrag;\n var bitmap = this.bitmap;\n var exists = (bitmap & bit) !== 0;\n\n if (!exists && value === NOT_SET) {\n return this;\n }\n\n var idx = popCount(bitmap & (bit - 1));\n var nodes = this.nodes;\n var node = exists ? nodes[idx] : undefined;\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n\n if (newNode === node) {\n return this;\n }\n\n if (!exists && newNode && nodes.length >= MAX_BITMAP_INDEXED_SIZE) {\n return expandNodes(ownerID, nodes, bitmap, keyHashFrag, newNode);\n }\n\n if (exists && !newNode && nodes.length === 2 && isLeafNode(nodes[idx ^ 1])) {\n return nodes[idx ^ 1];\n }\n\n if (exists && newNode && nodes.length === 1 && isLeafNode(newNode)) {\n return newNode;\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newBitmap = exists ? newNode ? bitmap : bitmap ^ bit : bitmap | bit;\n var newNodes = exists ? newNode ?\n setIn(nodes, idx, newNode, isEditable) :\n spliceOut(nodes, idx, isEditable) :\n spliceIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.bitmap = newBitmap;\n this.nodes = newNodes;\n return this;\n }\n\n return new BitmapIndexedNode(ownerID, newBitmap, newNodes);\n };\n\n\n\n\n function HashArrayMapNode(ownerID, count, nodes) {\n this.ownerID = ownerID;\n this.count = count;\n this.nodes = nodes;\n }\n\n HashArrayMapNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var node = this.nodes[idx];\n return node ? node.get(shift + SHIFT, keyHash, key, notSetValue) : notSetValue;\n };\n\n HashArrayMapNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n var idx = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n var removed = value === NOT_SET;\n var nodes = this.nodes;\n var node = nodes[idx];\n\n if (removed && !node) {\n return this;\n }\n\n var newNode = updateNode(node, ownerID, shift + SHIFT, keyHash, key, value, didChangeSize, didAlter);\n if (newNode === node) {\n return this;\n }\n\n var newCount = this.count;\n if (!node) {\n newCount++;\n } else if (!newNode) {\n newCount--;\n if (newCount < MIN_HASH_ARRAY_MAP_SIZE) {\n return packNodes(ownerID, nodes, newCount, idx);\n }\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newNodes = setIn(nodes, idx, newNode, isEditable);\n\n if (isEditable) {\n this.count = newCount;\n this.nodes = newNodes;\n return this;\n }\n\n return new HashArrayMapNode(ownerID, newCount, newNodes);\n };\n\n\n\n\n function HashCollisionNode(ownerID, keyHash, entries) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entries = entries;\n }\n\n HashCollisionNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n var entries = this.entries;\n for (var ii = 0, len = entries.length; ii < len; ii++) {\n if (is(key, entries[ii][0])) {\n return entries[ii][1];\n }\n }\n return notSetValue;\n };\n\n HashCollisionNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (keyHash === undefined) {\n keyHash = hash(key);\n }\n\n var removed = value === NOT_SET;\n\n if (keyHash !== this.keyHash) {\n if (removed) {\n return this;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, keyHash, [key, value]);\n }\n\n var entries = this.entries;\n var idx = 0;\n for (var len = entries.length; idx < len; idx++) {\n if (is(key, entries[idx][0])) {\n break;\n }\n }\n var exists = idx < len;\n\n if (exists ? entries[idx][1] === value : removed) {\n return this;\n }\n\n SetRef(didAlter);\n (removed || !exists) && SetRef(didChangeSize);\n\n if (removed && len === 2) {\n return new ValueNode(ownerID, this.keyHash, entries[idx ^ 1]);\n }\n\n var isEditable = ownerID && ownerID === this.ownerID;\n var newEntries = isEditable ? entries : arrCopy(entries);\n\n if (exists) {\n if (removed) {\n idx === len - 1 ? newEntries.pop() : (newEntries[idx] = newEntries.pop());\n } else {\n newEntries[idx] = [key, value];\n }\n } else {\n newEntries.push([key, value]);\n }\n\n if (isEditable) {\n this.entries = newEntries;\n return this;\n }\n\n return new HashCollisionNode(ownerID, this.keyHash, newEntries);\n };\n\n\n\n\n function ValueNode(ownerID, keyHash, entry) {\n this.ownerID = ownerID;\n this.keyHash = keyHash;\n this.entry = entry;\n }\n\n ValueNode.prototype.get = function(shift, keyHash, key, notSetValue) {\n return is(key, this.entry[0]) ? this.entry[1] : notSetValue;\n };\n\n ValueNode.prototype.update = function(ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n var removed = value === NOT_SET;\n var keyMatch = is(key, this.entry[0]);\n if (keyMatch ? value === this.entry[1] : removed) {\n return this;\n }\n\n SetRef(didAlter);\n\n if (removed) {\n SetRef(didChangeSize);\n return; // undefined\n }\n\n if (keyMatch) {\n if (ownerID && ownerID === this.ownerID) {\n this.entry[1] = value;\n return this;\n }\n return new ValueNode(ownerID, this.keyHash, [key, value]);\n }\n\n SetRef(didChangeSize);\n return mergeIntoNode(this, ownerID, shift, hash(key), [key, value]);\n };\n\n\n\n // #pragma Iterators\n\n ArrayMapNode.prototype.iterate =\n HashCollisionNode.prototype.iterate = function (fn, reverse) {\n var entries = this.entries;\n for (var ii = 0, maxIndex = entries.length - 1; ii <= maxIndex; ii++) {\n if (fn(entries[reverse ? maxIndex - ii : ii]) === false) {\n return false;\n }\n }\n }\n\n BitmapIndexedNode.prototype.iterate =\n HashArrayMapNode.prototype.iterate = function (fn, reverse) {\n var nodes = this.nodes;\n for (var ii = 0, maxIndex = nodes.length - 1; ii <= maxIndex; ii++) {\n var node = nodes[reverse ? maxIndex - ii : ii];\n if (node && node.iterate(fn, reverse) === false) {\n return false;\n }\n }\n }\n\n ValueNode.prototype.iterate = function (fn, reverse) {\n return fn(this.entry);\n }\n\n createClass(MapIterator, Iterator);\n\n function MapIterator(map, type, reverse) {\n this._type = type;\n this._reverse = reverse;\n this._stack = map._root && mapIteratorFrame(map._root);\n }\n\n MapIterator.prototype.next = function() {\n var type = this._type;\n var stack = this._stack;\n while (stack) {\n var node = stack.node;\n var index = stack.index++;\n var maxIndex;\n if (node.entry) {\n if (index === 0) {\n return mapIteratorValue(type, node.entry);\n }\n } else if (node.entries) {\n maxIndex = node.entries.length - 1;\n if (index <= maxIndex) {\n return mapIteratorValue(type, node.entries[this._reverse ? maxIndex - index : index]);\n }\n } else {\n maxIndex = node.nodes.length - 1;\n if (index <= maxIndex) {\n var subNode = node.nodes[this._reverse ? maxIndex - index : index];\n if (subNode) {\n if (subNode.entry) {\n return mapIteratorValue(type, subNode.entry);\n }\n stack = this._stack = mapIteratorFrame(subNode, stack);\n }\n continue;\n }\n }\n stack = this._stack = this._stack.__prev;\n }\n return iteratorDone();\n };\n\n\n function mapIteratorValue(type, entry) {\n return iteratorValue(type, entry[0], entry[1]);\n }\n\n function mapIteratorFrame(node, prev) {\n return {\n node: node,\n index: 0,\n __prev: prev\n };\n }\n\n function makeMap(size, root, ownerID, hash) {\n var map = Object.create(MapPrototype);\n map.size = size;\n map._root = root;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_MAP;\n function emptyMap() {\n return EMPTY_MAP || (EMPTY_MAP = makeMap(0));\n }\n\n function updateMap(map, k, v) {\n var newRoot;\n var newSize;\n if (!map._root) {\n if (v === NOT_SET) {\n return map;\n }\n newSize = 1;\n newRoot = new ArrayMapNode(map.__ownerID, [[k, v]]);\n } else {\n var didChangeSize = MakeRef(CHANGE_LENGTH);\n var didAlter = MakeRef(DID_ALTER);\n newRoot = updateNode(map._root, map.__ownerID, 0, undefined, k, v, didChangeSize, didAlter);\n if (!didAlter.value) {\n return map;\n }\n newSize = map.size + (didChangeSize.value ? v === NOT_SET ? -1 : 1 : 0);\n }\n if (map.__ownerID) {\n map.size = newSize;\n map._root = newRoot;\n map.__hash = undefined;\n map.__altered = true;\n return map;\n }\n return newRoot ? makeMap(newSize, newRoot) : emptyMap();\n }\n\n function updateNode(node, ownerID, shift, keyHash, key, value, didChangeSize, didAlter) {\n if (!node) {\n if (value === NOT_SET) {\n return node;\n }\n SetRef(didAlter);\n SetRef(didChangeSize);\n return new ValueNode(ownerID, keyHash, [key, value]);\n }\n return node.update(ownerID, shift, keyHash, key, value, didChangeSize, didAlter);\n }\n\n function isLeafNode(node) {\n return node.constructor === ValueNode || node.constructor === HashCollisionNode;\n }\n\n function mergeIntoNode(node, ownerID, shift, keyHash, entry) {\n if (node.keyHash === keyHash) {\n return new HashCollisionNode(ownerID, keyHash, [node.entry, entry]);\n }\n\n var idx1 = (shift === 0 ? node.keyHash : node.keyHash >>> shift) & MASK;\n var idx2 = (shift === 0 ? keyHash : keyHash >>> shift) & MASK;\n\n var newNode;\n var nodes = idx1 === idx2 ?\n [mergeIntoNode(node, ownerID, shift + SHIFT, keyHash, entry)] :\n ((newNode = new ValueNode(ownerID, keyHash, entry)), idx1 < idx2 ? [node, newNode] : [newNode, node]);\n\n return new BitmapIndexedNode(ownerID, (1 << idx1) | (1 << idx2), nodes);\n }\n\n function createNodes(ownerID, entries, key, value) {\n if (!ownerID) {\n ownerID = new OwnerID();\n }\n var node = new ValueNode(ownerID, hash(key), [key, value]);\n for (var ii = 0; ii < entries.length; ii++) {\n var entry = entries[ii];\n node = node.update(ownerID, 0, undefined, entry[0], entry[1]);\n }\n return node;\n }\n\n function packNodes(ownerID, nodes, count, excluding) {\n var bitmap = 0;\n var packedII = 0;\n var packedNodes = new Array(count);\n for (var ii = 0, bit = 1, len = nodes.length; ii < len; ii++, bit <<= 1) {\n var node = nodes[ii];\n if (node !== undefined && ii !== excluding) {\n bitmap |= bit;\n packedNodes[packedII++] = node;\n }\n }\n return new BitmapIndexedNode(ownerID, bitmap, packedNodes);\n }\n\n function expandNodes(ownerID, nodes, bitmap, including, node) {\n var count = 0;\n var expandedNodes = new Array(SIZE);\n for (var ii = 0; bitmap !== 0; ii++, bitmap >>>= 1) {\n expandedNodes[ii] = bitmap & 1 ? nodes[count++] : undefined;\n }\n expandedNodes[including] = node;\n return new HashArrayMapNode(ownerID, count + 1, expandedNodes);\n }\n\n function mergeIntoMapWith(map, merger, iterables) {\n var iters = [];\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = KeyedIterable(value);\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n return mergeIntoCollectionWith(map, merger, iters);\n }\n\n function deepMerger(existing, value, key) {\n return existing && existing.mergeDeep && isIterable(value) ?\n existing.mergeDeep(value) :\n is(existing, value) ? existing : value;\n }\n\n function deepMergerWith(merger) {\n return function(existing, value, key) {\n if (existing && existing.mergeDeepWith && isIterable(value)) {\n return existing.mergeDeepWith(merger, value);\n }\n var nextValue = merger(existing, value, key);\n return is(existing, nextValue) ? existing : nextValue;\n };\n }\n\n function mergeIntoCollectionWith(collection, merger, iters) {\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return collection;\n }\n if (collection.size === 0 && !collection.__ownerID && iters.length === 1) {\n return collection.constructor(iters[0]);\n }\n return collection.withMutations(function(collection ) {\n var mergeIntoMap = merger ?\n function(value, key) {\n collection.update(key, NOT_SET, function(existing )\n {return existing === NOT_SET ? value : merger(existing, value, key)}\n );\n } :\n function(value, key) {\n collection.set(key, value);\n }\n for (var ii = 0; ii < iters.length; ii++) {\n iters[ii].forEach(mergeIntoMap);\n }\n });\n }\n\n function updateInDeepMap(existing, keyPathIter, notSetValue, updater) {\n var isNotSet = existing === NOT_SET;\n var step = keyPathIter.next();\n if (step.done) {\n var existingValue = isNotSet ? notSetValue : existing;\n var newValue = updater(existingValue);\n return newValue === existingValue ? existing : newValue;\n }\n invariant(\n isNotSet || (existing && existing.set),\n 'invalid keyPath'\n );\n var key = step.value;\n var nextExisting = isNotSet ? NOT_SET : existing.get(key, NOT_SET);\n var nextUpdated = updateInDeepMap(\n nextExisting,\n keyPathIter,\n notSetValue,\n updater\n );\n return nextUpdated === nextExisting ? existing :\n nextUpdated === NOT_SET ? existing.remove(key) :\n (isNotSet ? emptyMap() : existing).set(key, nextUpdated);\n }\n\n function popCount(x) {\n x = x - ((x >> 1) & 0x55555555);\n x = (x & 0x33333333) + ((x >> 2) & 0x33333333);\n x = (x + (x >> 4)) & 0x0f0f0f0f;\n x = x + (x >> 8);\n x = x + (x >> 16);\n return x & 0x7f;\n }\n\n function setIn(array, idx, val, canEdit) {\n var newArray = canEdit ? array : arrCopy(array);\n newArray[idx] = val;\n return newArray;\n }\n\n function spliceIn(array, idx, val, canEdit) {\n var newLen = array.length + 1;\n if (canEdit && idx + 1 === newLen) {\n array[idx] = val;\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n newArray[ii] = val;\n after = -1;\n } else {\n newArray[ii] = array[ii + after];\n }\n }\n return newArray;\n }\n\n function spliceOut(array, idx, canEdit) {\n var newLen = array.length - 1;\n if (canEdit && idx === newLen) {\n array.pop();\n return array;\n }\n var newArray = new Array(newLen);\n var after = 0;\n for (var ii = 0; ii < newLen; ii++) {\n if (ii === idx) {\n after = 1;\n }\n newArray[ii] = array[ii + after];\n }\n return newArray;\n }\n\n var MAX_ARRAY_MAP_SIZE = SIZE / 4;\n var MAX_BITMAP_INDEXED_SIZE = SIZE / 2;\n var MIN_HASH_ARRAY_MAP_SIZE = SIZE / 4;\n\n createClass(List, IndexedCollection);\n\n // @pragma Construction\n\n function List(value) {\n var empty = emptyList();\n if (value === null || value === undefined) {\n return empty;\n }\n if (isList(value)) {\n return value;\n }\n var iter = IndexedIterable(value);\n var size = iter.size;\n if (size === 0) {\n return empty;\n }\n assertNotInfinite(size);\n if (size > 0 && size < SIZE) {\n return makeList(0, size, SHIFT, null, new VNode(iter.toArray()));\n }\n return empty.withMutations(function(list ) {\n list.setSize(size);\n iter.forEach(function(v, i) {return list.set(i, v)});\n });\n }\n\n List.of = function(/*...values*/) {\n return this(arguments);\n };\n\n List.prototype.toString = function() {\n return this.__toString('List [', ']');\n };\n\n // @pragma Access\n\n List.prototype.get = function(index, notSetValue) {\n index = wrapIndex(this, index);\n if (index >= 0 && index < this.size) {\n index += this._origin;\n var node = listNodeFor(this, index);\n return node && node.array[index & MASK];\n }\n return notSetValue;\n };\n\n // @pragma Modification\n\n List.prototype.set = function(index, value) {\n return updateList(this, index, value);\n };\n\n List.prototype.remove = function(index) {\n return !this.has(index) ? this :\n index === 0 ? this.shift() :\n index === this.size - 1 ? this.pop() :\n this.splice(index, 1);\n };\n\n List.prototype.insert = function(index, value) {\n return this.splice(index, 0, value);\n };\n\n List.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = this._origin = this._capacity = 0;\n this._level = SHIFT;\n this._root = this._tail = null;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyList();\n };\n\n List.prototype.push = function(/*...values*/) {\n var values = arguments;\n var oldSize = this.size;\n return this.withMutations(function(list ) {\n setListBounds(list, 0, oldSize + values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(oldSize + ii, values[ii]);\n }\n });\n };\n\n List.prototype.pop = function() {\n return setListBounds(this, 0, -1);\n };\n\n List.prototype.unshift = function(/*...values*/) {\n var values = arguments;\n return this.withMutations(function(list ) {\n setListBounds(list, -values.length);\n for (var ii = 0; ii < values.length; ii++) {\n list.set(ii, values[ii]);\n }\n });\n };\n\n List.prototype.shift = function() {\n return setListBounds(this, 1);\n };\n\n // @pragma Composition\n\n List.prototype.merge = function(/*...iters*/) {\n return mergeIntoListWith(this, undefined, arguments);\n };\n\n List.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, merger, iters);\n };\n\n List.prototype.mergeDeep = function(/*...iters*/) {\n return mergeIntoListWith(this, deepMerger, arguments);\n };\n\n List.prototype.mergeDeepWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return mergeIntoListWith(this, deepMergerWith(merger), iters);\n };\n\n List.prototype.setSize = function(size) {\n return setListBounds(this, 0, size);\n };\n\n // @pragma Iteration\n\n List.prototype.slice = function(begin, end) {\n var size = this.size;\n if (wholeSlice(begin, end, size)) {\n return this;\n }\n return setListBounds(\n this,\n resolveBegin(begin, size),\n resolveEnd(end, size)\n );\n };\n\n List.prototype.__iterator = function(type, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n return new Iterator(function() {\n var value = values();\n return value === DONE ?\n iteratorDone() :\n iteratorValue(type, index++, value);\n });\n };\n\n List.prototype.__iterate = function(fn, reverse) {\n var index = 0;\n var values = iterateList(this, reverse);\n var value;\n while ((value = values()) !== DONE) {\n if (fn(value, index++, this) === false) {\n break;\n }\n }\n return index;\n };\n\n List.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n return this;\n }\n return makeList(this._origin, this._capacity, this._level, this._root, this._tail, ownerID, this.__hash);\n };\n\n\n function isList(maybeList) {\n return !!(maybeList && maybeList[IS_LIST_SENTINEL]);\n }\n\n List.isList = isList;\n\n var IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\n\n var ListPrototype = List.prototype;\n ListPrototype[IS_LIST_SENTINEL] = true;\n ListPrototype[DELETE] = ListPrototype.remove;\n ListPrototype.setIn = MapPrototype.setIn;\n ListPrototype.deleteIn =\n ListPrototype.removeIn = MapPrototype.removeIn;\n ListPrototype.update = MapPrototype.update;\n ListPrototype.updateIn = MapPrototype.updateIn;\n ListPrototype.mergeIn = MapPrototype.mergeIn;\n ListPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n ListPrototype.withMutations = MapPrototype.withMutations;\n ListPrototype.asMutable = MapPrototype.asMutable;\n ListPrototype.asImmutable = MapPrototype.asImmutable;\n ListPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n\n function VNode(array, ownerID) {\n this.array = array;\n this.ownerID = ownerID;\n }\n\n // TODO: seems like these methods are very similar\n\n VNode.prototype.removeBefore = function(ownerID, level, index) {\n if (index === level ? 1 << level : 0 || this.array.length === 0) {\n return this;\n }\n var originIndex = (index >>> level) & MASK;\n if (originIndex >= this.array.length) {\n return new VNode([], ownerID);\n }\n var removingFirst = originIndex === 0;\n var newChild;\n if (level > 0) {\n var oldChild = this.array[originIndex];\n newChild = oldChild && oldChild.removeBefore(ownerID, level - SHIFT, index);\n if (newChild === oldChild && removingFirst) {\n return this;\n }\n }\n if (removingFirst && !newChild) {\n return this;\n }\n var editable = editableVNode(this, ownerID);\n if (!removingFirst) {\n for (var ii = 0; ii < originIndex; ii++) {\n editable.array[ii] = undefined;\n }\n }\n if (newChild) {\n editable.array[originIndex] = newChild;\n }\n return editable;\n };\n\n VNode.prototype.removeAfter = function(ownerID, level, index) {\n if (index === (level ? 1 << level : 0) || this.array.length === 0) {\n return this;\n }\n var sizeIndex = ((index - 1) >>> level) & MASK;\n if (sizeIndex >= this.array.length) {\n return this;\n }\n\n var newChild;\n if (level > 0) {\n var oldChild = this.array[sizeIndex];\n newChild = oldChild && oldChild.removeAfter(ownerID, level - SHIFT, index);\n if (newChild === oldChild && sizeIndex === this.array.length - 1) {\n return this;\n }\n }\n\n var editable = editableVNode(this, ownerID);\n editable.array.splice(sizeIndex + 1);\n if (newChild) {\n editable.array[sizeIndex] = newChild;\n }\n return editable;\n };\n\n\n\n var DONE = {};\n\n function iterateList(list, reverse) {\n var left = list._origin;\n var right = list._capacity;\n var tailPos = getTailOffset(right);\n var tail = list._tail;\n\n return iterateNodeOrLeaf(list._root, list._level, 0);\n\n function iterateNodeOrLeaf(node, level, offset) {\n return level === 0 ?\n iterateLeaf(node, offset) :\n iterateNode(node, level, offset);\n }\n\n function iterateLeaf(node, offset) {\n var array = offset === tailPos ? tail && tail.array : node && node.array;\n var from = offset > left ? 0 : left - offset;\n var to = right - offset;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n return array && array[idx];\n };\n }\n\n function iterateNode(node, level, offset) {\n var values;\n var array = node && node.array;\n var from = offset > left ? 0 : (left - offset) >> level;\n var to = ((right - offset) >> level) + 1;\n if (to > SIZE) {\n to = SIZE;\n }\n return function() {\n do {\n if (values) {\n var value = values();\n if (value !== DONE) {\n return value;\n }\n values = null;\n }\n if (from === to) {\n return DONE;\n }\n var idx = reverse ? --to : from++;\n values = iterateNodeOrLeaf(\n array && array[idx], level - SHIFT, offset + (idx << level)\n );\n } while (true);\n };\n }\n }\n\n function makeList(origin, capacity, level, root, tail, ownerID, hash) {\n var list = Object.create(ListPrototype);\n list.size = capacity - origin;\n list._origin = origin;\n list._capacity = capacity;\n list._level = level;\n list._root = root;\n list._tail = tail;\n list.__ownerID = ownerID;\n list.__hash = hash;\n list.__altered = false;\n return list;\n }\n\n var EMPTY_LIST;\n function emptyList() {\n return EMPTY_LIST || (EMPTY_LIST = makeList(0, 0, SHIFT));\n }\n\n function updateList(list, index, value) {\n index = wrapIndex(list, index);\n\n if (index !== index) {\n return list;\n }\n\n if (index >= list.size || index < 0) {\n return list.withMutations(function(list ) {\n index < 0 ?\n setListBounds(list, index).set(0, value) :\n setListBounds(list, 0, index + 1).set(index, value)\n });\n }\n\n index += list._origin;\n\n var newTail = list._tail;\n var newRoot = list._root;\n var didAlter = MakeRef(DID_ALTER);\n if (index >= getTailOffset(list._capacity)) {\n newTail = updateVNode(newTail, list.__ownerID, 0, index, value, didAlter);\n } else {\n newRoot = updateVNode(newRoot, list.__ownerID, list._level, index, value, didAlter);\n }\n\n if (!didAlter.value) {\n return list;\n }\n\n if (list.__ownerID) {\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(list._origin, list._capacity, list._level, newRoot, newTail);\n }\n\n function updateVNode(node, ownerID, level, index, value, didAlter) {\n var idx = (index >>> level) & MASK;\n var nodeHas = node && idx < node.array.length;\n if (!nodeHas && value === undefined) {\n return node;\n }\n\n var newNode;\n\n if (level > 0) {\n var lowerNode = node && node.array[idx];\n var newLowerNode = updateVNode(lowerNode, ownerID, level - SHIFT, index, value, didAlter);\n if (newLowerNode === lowerNode) {\n return node;\n }\n newNode = editableVNode(node, ownerID);\n newNode.array[idx] = newLowerNode;\n return newNode;\n }\n\n if (nodeHas && node.array[idx] === value) {\n return node;\n }\n\n SetRef(didAlter);\n\n newNode = editableVNode(node, ownerID);\n if (value === undefined && idx === newNode.array.length - 1) {\n newNode.array.pop();\n } else {\n newNode.array[idx] = value;\n }\n return newNode;\n }\n\n function editableVNode(node, ownerID) {\n if (ownerID && node && ownerID === node.ownerID) {\n return node;\n }\n return new VNode(node ? node.array.slice() : [], ownerID);\n }\n\n function listNodeFor(list, rawIndex) {\n if (rawIndex >= getTailOffset(list._capacity)) {\n return list._tail;\n }\n if (rawIndex < 1 << (list._level + SHIFT)) {\n var node = list._root;\n var level = list._level;\n while (node && level > 0) {\n node = node.array[(rawIndex >>> level) & MASK];\n level -= SHIFT;\n }\n return node;\n }\n }\n\n function setListBounds(list, begin, end) {\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n end = end | 0;\n }\n var owner = list.__ownerID || new OwnerID();\n var oldOrigin = list._origin;\n var oldCapacity = list._capacity;\n var newOrigin = oldOrigin + begin;\n var newCapacity = end === undefined ? oldCapacity : end < 0 ? oldCapacity + end : oldOrigin + end;\n if (newOrigin === oldOrigin && newCapacity === oldCapacity) {\n return list;\n }\n\n // If it's going to end after it starts, it's empty.\n if (newOrigin >= newCapacity) {\n return list.clear();\n }\n\n var newLevel = list._level;\n var newRoot = list._root;\n\n // New origin might need creating a higher root.\n var offsetShift = 0;\n while (newOrigin + offsetShift < 0) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [undefined, newRoot] : [], owner);\n newLevel += SHIFT;\n offsetShift += 1 << newLevel;\n }\n if (offsetShift) {\n newOrigin += offsetShift;\n oldOrigin += offsetShift;\n newCapacity += offsetShift;\n oldCapacity += offsetShift;\n }\n\n var oldTailOffset = getTailOffset(oldCapacity);\n var newTailOffset = getTailOffset(newCapacity);\n\n // New size might need creating a higher root.\n while (newTailOffset >= 1 << (newLevel + SHIFT)) {\n newRoot = new VNode(newRoot && newRoot.array.length ? [newRoot] : [], owner);\n newLevel += SHIFT;\n }\n\n // Locate or create the new tail.\n var oldTail = list._tail;\n var newTail = newTailOffset < oldTailOffset ?\n listNodeFor(list, newCapacity - 1) :\n newTailOffset > oldTailOffset ? new VNode([], owner) : oldTail;\n\n // Merge Tail into tree.\n if (oldTail && newTailOffset > oldTailOffset && newOrigin < oldCapacity && oldTail.array.length) {\n newRoot = editableVNode(newRoot, owner);\n var node = newRoot;\n for (var level = newLevel; level > SHIFT; level -= SHIFT) {\n var idx = (oldTailOffset >>> level) & MASK;\n node = node.array[idx] = editableVNode(node.array[idx], owner);\n }\n node.array[(oldTailOffset >>> SHIFT) & MASK] = oldTail;\n }\n\n // If the size has been reduced, there's a chance the tail needs to be trimmed.\n if (newCapacity < oldCapacity) {\n newTail = newTail && newTail.removeAfter(owner, 0, newCapacity);\n }\n\n // If the new origin is within the tail, then we do not need a root.\n if (newOrigin >= newTailOffset) {\n newOrigin -= newTailOffset;\n newCapacity -= newTailOffset;\n newLevel = SHIFT;\n newRoot = null;\n newTail = newTail && newTail.removeBefore(owner, 0, newOrigin);\n\n // Otherwise, if the root has been trimmed, garbage collect.\n } else if (newOrigin > oldOrigin || newTailOffset < oldTailOffset) {\n offsetShift = 0;\n\n // Identify the new top root node of the subtree of the old root.\n while (newRoot) {\n var beginIndex = (newOrigin >>> newLevel) & MASK;\n if (beginIndex !== (newTailOffset >>> newLevel) & MASK) {\n break;\n }\n if (beginIndex) {\n offsetShift += (1 << newLevel) * beginIndex;\n }\n newLevel -= SHIFT;\n newRoot = newRoot.array[beginIndex];\n }\n\n // Trim the new sides of the new root.\n if (newRoot && newOrigin > oldOrigin) {\n newRoot = newRoot.removeBefore(owner, newLevel, newOrigin - offsetShift);\n }\n if (newRoot && newTailOffset < oldTailOffset) {\n newRoot = newRoot.removeAfter(owner, newLevel, newTailOffset - offsetShift);\n }\n if (offsetShift) {\n newOrigin -= offsetShift;\n newCapacity -= offsetShift;\n }\n }\n\n if (list.__ownerID) {\n list.size = newCapacity - newOrigin;\n list._origin = newOrigin;\n list._capacity = newCapacity;\n list._level = newLevel;\n list._root = newRoot;\n list._tail = newTail;\n list.__hash = undefined;\n list.__altered = true;\n return list;\n }\n return makeList(newOrigin, newCapacity, newLevel, newRoot, newTail);\n }\n\n function mergeIntoListWith(list, merger, iterables) {\n var iters = [];\n var maxSize = 0;\n for (var ii = 0; ii < iterables.length; ii++) {\n var value = iterables[ii];\n var iter = IndexedIterable(value);\n if (iter.size > maxSize) {\n maxSize = iter.size;\n }\n if (!isIterable(value)) {\n iter = iter.map(function(v ) {return fromJS(v)});\n }\n iters.push(iter);\n }\n if (maxSize > list.size) {\n list = list.setSize(maxSize);\n }\n return mergeIntoCollectionWith(list, merger, iters);\n }\n\n function getTailOffset(size) {\n return size < SIZE ? 0 : (((size - 1) >>> SHIFT) << SHIFT);\n }\n\n createClass(OrderedMap, Map);\n\n // @pragma Construction\n\n function OrderedMap(value) {\n return value === null || value === undefined ? emptyOrderedMap() :\n isOrderedMap(value) ? value :\n emptyOrderedMap().withMutations(function(map ) {\n var iter = KeyedIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v, k) {return map.set(k, v)});\n });\n }\n\n OrderedMap.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedMap.prototype.toString = function() {\n return this.__toString('OrderedMap {', '}');\n };\n\n // @pragma Access\n\n OrderedMap.prototype.get = function(k, notSetValue) {\n var index = this._map.get(k);\n return index !== undefined ? this._list.get(index)[1] : notSetValue;\n };\n\n // @pragma Modification\n\n OrderedMap.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._map.clear();\n this._list.clear();\n return this;\n }\n return emptyOrderedMap();\n };\n\n OrderedMap.prototype.set = function(k, v) {\n return updateOrderedMap(this, k, v);\n };\n\n OrderedMap.prototype.remove = function(k) {\n return updateOrderedMap(this, k, NOT_SET);\n };\n\n OrderedMap.prototype.wasAltered = function() {\n return this._map.wasAltered() || this._list.wasAltered();\n };\n\n OrderedMap.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._list.__iterate(\n function(entry ) {return entry && fn(entry[1], entry[0], this$0)},\n reverse\n );\n };\n\n OrderedMap.prototype.__iterator = function(type, reverse) {\n return this._list.fromEntrySeq().__iterator(type, reverse);\n };\n\n OrderedMap.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n var newList = this._list.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n this._list = newList;\n return this;\n }\n return makeOrderedMap(newMap, newList, ownerID, this.__hash);\n };\n\n\n function isOrderedMap(maybeOrderedMap) {\n return isMap(maybeOrderedMap) && isOrdered(maybeOrderedMap);\n }\n\n OrderedMap.isOrderedMap = isOrderedMap;\n\n OrderedMap.prototype[IS_ORDERED_SENTINEL] = true;\n OrderedMap.prototype[DELETE] = OrderedMap.prototype.remove;\n\n\n\n function makeOrderedMap(map, list, ownerID, hash) {\n var omap = Object.create(OrderedMap.prototype);\n omap.size = map ? map.size : 0;\n omap._map = map;\n omap._list = list;\n omap.__ownerID = ownerID;\n omap.__hash = hash;\n return omap;\n }\n\n var EMPTY_ORDERED_MAP;\n function emptyOrderedMap() {\n return EMPTY_ORDERED_MAP || (EMPTY_ORDERED_MAP = makeOrderedMap(emptyMap(), emptyList()));\n }\n\n function updateOrderedMap(omap, k, v) {\n var map = omap._map;\n var list = omap._list;\n var i = map.get(k);\n var has = i !== undefined;\n var newMap;\n var newList;\n if (v === NOT_SET) { // removed\n if (!has) {\n return omap;\n }\n if (list.size >= SIZE && list.size >= map.size * 2) {\n newList = list.filter(function(entry, idx) {return entry !== undefined && i !== idx});\n newMap = newList.toKeyedSeq().map(function(entry ) {return entry[0]}).flip().toMap();\n if (omap.__ownerID) {\n newMap.__ownerID = newList.__ownerID = omap.__ownerID;\n }\n } else {\n newMap = map.remove(k);\n newList = i === list.size - 1 ? list.pop() : list.set(i, undefined);\n }\n } else {\n if (has) {\n if (v === list.get(i)[1]) {\n return omap;\n }\n newMap = map;\n newList = list.set(i, [k, v]);\n } else {\n newMap = map.set(k, list.size);\n newList = list.set(list.size, [k, v]);\n }\n }\n if (omap.__ownerID) {\n omap.size = newMap.size;\n omap._map = newMap;\n omap._list = newList;\n omap.__hash = undefined;\n return omap;\n }\n return makeOrderedMap(newMap, newList);\n }\n\n createClass(ToKeyedSequence, KeyedSeq);\n function ToKeyedSequence(indexed, useKeys) {\n this._iter = indexed;\n this._useKeys = useKeys;\n this.size = indexed.size;\n }\n\n ToKeyedSequence.prototype.get = function(key, notSetValue) {\n return this._iter.get(key, notSetValue);\n };\n\n ToKeyedSequence.prototype.has = function(key) {\n return this._iter.has(key);\n };\n\n ToKeyedSequence.prototype.valueSeq = function() {\n return this._iter.valueSeq();\n };\n\n ToKeyedSequence.prototype.reverse = function() {var this$0 = this;\n var reversedSequence = reverseFactory(this, true);\n if (!this._useKeys) {\n reversedSequence.valueSeq = function() {return this$0._iter.toSeq().reverse()};\n }\n return reversedSequence;\n };\n\n ToKeyedSequence.prototype.map = function(mapper, context) {var this$0 = this;\n var mappedSequence = mapFactory(this, mapper, context);\n if (!this._useKeys) {\n mappedSequence.valueSeq = function() {return this$0._iter.toSeq().map(mapper, context)};\n }\n return mappedSequence;\n };\n\n ToKeyedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var ii;\n return this._iter.__iterate(\n this._useKeys ?\n function(v, k) {return fn(v, k, this$0)} :\n ((ii = reverse ? resolveSize(this) : 0),\n function(v ) {return fn(v, reverse ? --ii : ii++, this$0)}),\n reverse\n );\n };\n\n ToKeyedSequence.prototype.__iterator = function(type, reverse) {\n if (this._useKeys) {\n return this._iter.__iterator(type, reverse);\n }\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var ii = reverse ? resolveSize(this) : 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, reverse ? --ii : ii++, step.value, step);\n });\n };\n\n ToKeyedSequence.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n createClass(ToIndexedSequence, IndexedSeq);\n function ToIndexedSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToIndexedSequence.prototype.includes = function(value) {\n return this._iter.includes(value);\n };\n\n ToIndexedSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n return this._iter.__iterate(function(v ) {return fn(v, iterations++, this$0)}, reverse);\n };\n\n ToIndexedSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, iterations++, step.value, step)\n });\n };\n\n\n\n createClass(ToSetSequence, SetSeq);\n function ToSetSequence(iter) {\n this._iter = iter;\n this.size = iter.size;\n }\n\n ToSetSequence.prototype.has = function(key) {\n return this._iter.includes(key);\n };\n\n ToSetSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(v ) {return fn(v, v, this$0)}, reverse);\n };\n\n ToSetSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n return step.done ? step :\n iteratorValue(type, step.value, step.value, step);\n });\n };\n\n\n\n createClass(FromEntriesSequence, KeyedSeq);\n function FromEntriesSequence(entries) {\n this._iter = entries;\n this.size = entries.size;\n }\n\n FromEntriesSequence.prototype.entrySeq = function() {\n return this._iter.toSeq();\n };\n\n FromEntriesSequence.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._iter.__iterate(function(entry ) {\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return fn(\n indexedIterable ? entry.get(1) : entry[1],\n indexedIterable ? entry.get(0) : entry[0],\n this$0\n );\n }\n }, reverse);\n };\n\n FromEntriesSequence.prototype.__iterator = function(type, reverse) {\n var iterator = this._iter.__iterator(ITERATE_VALUES, reverse);\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n // Check if entry exists first so array access doesn't throw for holes\n // in the parent iteration.\n if (entry) {\n validateEntry(entry);\n var indexedIterable = isIterable(entry);\n return iteratorValue(\n type,\n indexedIterable ? entry.get(0) : entry[0],\n indexedIterable ? entry.get(1) : entry[1],\n step\n );\n }\n }\n });\n };\n\n\n ToIndexedSequence.prototype.cacheResult =\n ToKeyedSequence.prototype.cacheResult =\n ToSetSequence.prototype.cacheResult =\n FromEntriesSequence.prototype.cacheResult =\n cacheResultThrough;\n\n\n function flipFactory(iterable) {\n var flipSequence = makeSequence(iterable);\n flipSequence._iter = iterable;\n flipSequence.size = iterable.size;\n flipSequence.flip = function() {return iterable};\n flipSequence.reverse = function () {\n var reversedSequence = iterable.reverse.apply(this); // super.reverse()\n reversedSequence.flip = function() {return iterable.reverse()};\n return reversedSequence;\n };\n flipSequence.has = function(key ) {return iterable.includes(key)};\n flipSequence.includes = function(key ) {return iterable.has(key)};\n flipSequence.cacheResult = cacheResultThrough;\n flipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(k, v, this$0) !== false}, reverse);\n }\n flipSequence.__iteratorUncached = function(type, reverse) {\n if (type === ITERATE_ENTRIES) {\n var iterator = iterable.__iterator(type, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (!step.done) {\n var k = step.value[0];\n step.value[0] = step.value[1];\n step.value[1] = k;\n }\n return step;\n });\n }\n return iterable.__iterator(\n type === ITERATE_VALUES ? ITERATE_KEYS : ITERATE_VALUES,\n reverse\n );\n }\n return flipSequence;\n }\n\n\n function mapFactory(iterable, mapper, context) {\n var mappedSequence = makeSequence(iterable);\n mappedSequence.size = iterable.size;\n mappedSequence.has = function(key ) {return iterable.has(key)};\n mappedSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v === NOT_SET ?\n notSetValue :\n mapper.call(context, v, key, iterable);\n };\n mappedSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(\n function(v, k, c) {return fn(mapper.call(context, v, k, c), k, this$0) !== false},\n reverse\n );\n }\n mappedSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n return new Iterator(function() {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n return iteratorValue(\n type,\n key,\n mapper.call(context, entry[1], key, iterable),\n step\n );\n });\n }\n return mappedSequence;\n }\n\n\n function reverseFactory(iterable, useKeys) {\n var reversedSequence = makeSequence(iterable);\n reversedSequence._iter = iterable;\n reversedSequence.size = iterable.size;\n reversedSequence.reverse = function() {return iterable};\n if (iterable.flip) {\n reversedSequence.flip = function () {\n var flipSequence = flipFactory(iterable);\n flipSequence.reverse = function() {return iterable.flip()};\n return flipSequence;\n };\n }\n reversedSequence.get = function(key, notSetValue) \n {return iterable.get(useKeys ? key : -1 - key, notSetValue)};\n reversedSequence.has = function(key )\n {return iterable.has(useKeys ? key : -1 - key)};\n reversedSequence.includes = function(value ) {return iterable.includes(value)};\n reversedSequence.cacheResult = cacheResultThrough;\n reversedSequence.__iterate = function (fn, reverse) {var this$0 = this;\n return iterable.__iterate(function(v, k) {return fn(v, k, this$0)}, !reverse);\n };\n reversedSequence.__iterator =\n function(type, reverse) {return iterable.__iterator(type, !reverse)};\n return reversedSequence;\n }\n\n\n function filterFactory(iterable, predicate, context, useKeys) {\n var filterSequence = makeSequence(iterable);\n if (useKeys) {\n filterSequence.has = function(key ) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && !!predicate.call(context, v, key, iterable);\n };\n filterSequence.get = function(key, notSetValue) {\n var v = iterable.get(key, NOT_SET);\n return v !== NOT_SET && predicate.call(context, v, key, iterable) ?\n v : notSetValue;\n };\n }\n filterSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n }, reverse);\n return iterations;\n };\n filterSequence.__iteratorUncached = function (type, reverse) {\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterations = 0;\n return new Iterator(function() {\n while (true) {\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var key = entry[0];\n var value = entry[1];\n if (predicate.call(context, value, key, iterable)) {\n return iteratorValue(type, useKeys ? key : iterations++, value, step);\n }\n }\n });\n }\n return filterSequence;\n }\n\n\n function countByFactory(iterable, grouper, context) {\n var groups = Map().asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n 0,\n function(a ) {return a + 1}\n );\n });\n return groups.asImmutable();\n }\n\n\n function groupByFactory(iterable, grouper, context) {\n var isKeyedIter = isKeyed(iterable);\n var groups = (isOrdered(iterable) ? OrderedMap() : Map()).asMutable();\n iterable.__iterate(function(v, k) {\n groups.update(\n grouper.call(context, v, k, iterable),\n function(a ) {return (a = a || [], a.push(isKeyedIter ? [k, v] : v), a)}\n );\n });\n var coerce = iterableClass(iterable);\n return groups.map(function(arr ) {return reify(iterable, coerce(arr))});\n }\n\n\n function sliceFactory(iterable, begin, end, useKeys) {\n var originalSize = iterable.size;\n\n // Sanitize begin & end using this shorthand for ToInt32(argument)\n // http://www.ecma-international.org/ecma-262/6.0/#sec-toint32\n if (begin !== undefined) {\n begin = begin | 0;\n }\n if (end !== undefined) {\n if (end === Infinity) {\n end = originalSize;\n } else {\n end = end | 0;\n }\n }\n\n if (wholeSlice(begin, end, originalSize)) {\n return iterable;\n }\n\n var resolvedBegin = resolveBegin(begin, originalSize);\n var resolvedEnd = resolveEnd(end, originalSize);\n\n // begin or end will be NaN if they were provided as negative numbers and\n // this iterable's size is unknown. In that case, cache first so there is\n // a known size and these do not resolve to NaN.\n if (resolvedBegin !== resolvedBegin || resolvedEnd !== resolvedEnd) {\n return sliceFactory(iterable.toSeq().cacheResult(), begin, end, useKeys);\n }\n\n // Note: resolvedEnd is undefined when the original sequence's length is\n // unknown and this slice did not supply an end and should contain all\n // elements after resolvedBegin.\n // In that case, resolvedSize will be NaN and sliceSize will remain undefined.\n var resolvedSize = resolvedEnd - resolvedBegin;\n var sliceSize;\n if (resolvedSize === resolvedSize) {\n sliceSize = resolvedSize < 0 ? 0 : resolvedSize;\n }\n\n var sliceSeq = makeSequence(iterable);\n\n // If iterable.size is undefined, the size of the realized sliceSeq is\n // unknown at this point unless the number of items to slice is 0\n sliceSeq.size = sliceSize === 0 ? sliceSize : iterable.size && sliceSize || undefined;\n\n if (!useKeys && isSeq(iterable) && sliceSize >= 0) {\n sliceSeq.get = function (index, notSetValue) {\n index = wrapIndex(this, index);\n return index >= 0 && index < sliceSize ?\n iterable.get(index + resolvedBegin, notSetValue) :\n notSetValue;\n }\n }\n\n sliceSeq.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (sliceSize === 0) {\n return 0;\n }\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var skipped = 0;\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k) {\n if (!(isSkipping && (isSkipping = skipped++ < resolvedBegin))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0) !== false &&\n iterations !== sliceSize;\n }\n });\n return iterations;\n };\n\n sliceSeq.__iteratorUncached = function(type, reverse) {\n if (sliceSize !== 0 && reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n // Don't bother instantiating parent iterator if taking 0.\n var iterator = sliceSize !== 0 && iterable.__iterator(type, reverse);\n var skipped = 0;\n var iterations = 0;\n return new Iterator(function() {\n while (skipped++ < resolvedBegin) {\n iterator.next();\n }\n if (++iterations > sliceSize) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations - 1, undefined, step);\n } else {\n return iteratorValue(type, iterations - 1, step.value[1], step);\n }\n });\n }\n\n return sliceSeq;\n }\n\n\n function takeWhileFactory(iterable, predicate, context) {\n var takeSequence = makeSequence(iterable);\n takeSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var iterations = 0;\n iterable.__iterate(function(v, k, c) \n {return predicate.call(context, v, k, c) && ++iterations && fn(v, k, this$0)}\n );\n return iterations;\n };\n takeSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var iterating = true;\n return new Iterator(function() {\n if (!iterating) {\n return iteratorDone();\n }\n var step = iterator.next();\n if (step.done) {\n return step;\n }\n var entry = step.value;\n var k = entry[0];\n var v = entry[1];\n if (!predicate.call(context, v, k, this$0)) {\n iterating = false;\n return iteratorDone();\n }\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return takeSequence;\n }\n\n\n function skipWhileFactory(iterable, predicate, context, useKeys) {\n var skipSequence = makeSequence(iterable);\n skipSequence.__iterateUncached = function (fn, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterate(fn, reverse);\n }\n var isSkipping = true;\n var iterations = 0;\n iterable.__iterate(function(v, k, c) {\n if (!(isSkipping && (isSkipping = predicate.call(context, v, k, c)))) {\n iterations++;\n return fn(v, useKeys ? k : iterations - 1, this$0);\n }\n });\n return iterations;\n };\n skipSequence.__iteratorUncached = function(type, reverse) {var this$0 = this;\n if (reverse) {\n return this.cacheResult().__iterator(type, reverse);\n }\n var iterator = iterable.__iterator(ITERATE_ENTRIES, reverse);\n var skipping = true;\n var iterations = 0;\n return new Iterator(function() {\n var step, k, v;\n do {\n step = iterator.next();\n if (step.done) {\n if (useKeys || type === ITERATE_VALUES) {\n return step;\n } else if (type === ITERATE_KEYS) {\n return iteratorValue(type, iterations++, undefined, step);\n } else {\n return iteratorValue(type, iterations++, step.value[1], step);\n }\n }\n var entry = step.value;\n k = entry[0];\n v = entry[1];\n skipping && (skipping = predicate.call(context, v, k, this$0));\n } while (skipping);\n return type === ITERATE_ENTRIES ? step :\n iteratorValue(type, k, v, step);\n });\n };\n return skipSequence;\n }\n\n\n function concatFactory(iterable, values) {\n var isKeyedIterable = isKeyed(iterable);\n var iters = [iterable].concat(values).map(function(v ) {\n if (!isIterable(v)) {\n v = isKeyedIterable ?\n keyedSeqFromValue(v) :\n indexedSeqFromValue(Array.isArray(v) ? v : [v]);\n } else if (isKeyedIterable) {\n v = KeyedIterable(v);\n }\n return v;\n }).filter(function(v ) {return v.size !== 0});\n\n if (iters.length === 0) {\n return iterable;\n }\n\n if (iters.length === 1) {\n var singleton = iters[0];\n if (singleton === iterable ||\n isKeyedIterable && isKeyed(singleton) ||\n isIndexed(iterable) && isIndexed(singleton)) {\n return singleton;\n }\n }\n\n var concatSeq = new ArraySeq(iters);\n if (isKeyedIterable) {\n concatSeq = concatSeq.toKeyedSeq();\n } else if (!isIndexed(iterable)) {\n concatSeq = concatSeq.toSetSeq();\n }\n concatSeq = concatSeq.flatten(true);\n concatSeq.size = iters.reduce(\n function(sum, seq) {\n if (sum !== undefined) {\n var size = seq.size;\n if (size !== undefined) {\n return sum + size;\n }\n }\n },\n 0\n );\n return concatSeq;\n }\n\n\n function flattenFactory(iterable, depth, useKeys) {\n var flatSequence = makeSequence(iterable);\n flatSequence.__iterateUncached = function(fn, reverse) {\n var iterations = 0;\n var stopped = false;\n function flatDeep(iter, currentDepth) {var this$0 = this;\n iter.__iterate(function(v, k) {\n if ((!depth || currentDepth < depth) && isIterable(v)) {\n flatDeep(v, currentDepth + 1);\n } else if (fn(v, useKeys ? k : iterations++, this$0) === false) {\n stopped = true;\n }\n return !stopped;\n }, reverse);\n }\n flatDeep(iterable, 0);\n return iterations;\n }\n flatSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(type, reverse);\n var stack = [];\n var iterations = 0;\n return new Iterator(function() {\n while (iterator) {\n var step = iterator.next();\n if (step.done !== false) {\n iterator = stack.pop();\n continue;\n }\n var v = step.value;\n if (type === ITERATE_ENTRIES) {\n v = v[1];\n }\n if ((!depth || stack.length < depth) && isIterable(v)) {\n stack.push(iterator);\n iterator = v.__iterator(type, reverse);\n } else {\n return useKeys ? step : iteratorValue(type, iterations++, v, step);\n }\n }\n return iteratorDone();\n });\n }\n return flatSequence;\n }\n\n\n function flatMapFactory(iterable, mapper, context) {\n var coerce = iterableClass(iterable);\n return iterable.toSeq().map(\n function(v, k) {return coerce(mapper.call(context, v, k, iterable))}\n ).flatten(true);\n }\n\n\n function interposeFactory(iterable, separator) {\n var interposedSequence = makeSequence(iterable);\n interposedSequence.size = iterable.size && iterable.size * 2 -1;\n interposedSequence.__iterateUncached = function(fn, reverse) {var this$0 = this;\n var iterations = 0;\n iterable.__iterate(function(v, k) \n {return (!iterations || fn(separator, iterations++, this$0) !== false) &&\n fn(v, iterations++, this$0) !== false},\n reverse\n );\n return iterations;\n };\n interposedSequence.__iteratorUncached = function(type, reverse) {\n var iterator = iterable.__iterator(ITERATE_VALUES, reverse);\n var iterations = 0;\n var step;\n return new Iterator(function() {\n if (!step || iterations % 2) {\n step = iterator.next();\n if (step.done) {\n return step;\n }\n }\n return iterations % 2 ?\n iteratorValue(type, iterations++, separator) :\n iteratorValue(type, iterations++, step.value, step);\n });\n };\n return interposedSequence;\n }\n\n\n function sortFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n var isKeyedIterable = isKeyed(iterable);\n var index = 0;\n var entries = iterable.toSeq().map(\n function(v, k) {return [k, v, index++, mapper ? mapper(v, k, iterable) : v]}\n ).toArray();\n entries.sort(function(a, b) {return comparator(a[3], b[3]) || a[2] - b[2]}).forEach(\n isKeyedIterable ?\n function(v, i) { entries[i].length = 2; } :\n function(v, i) { entries[i] = v[1]; }\n );\n return isKeyedIterable ? KeyedSeq(entries) :\n isIndexed(iterable) ? IndexedSeq(entries) :\n SetSeq(entries);\n }\n\n\n function maxFactory(iterable, comparator, mapper) {\n if (!comparator) {\n comparator = defaultComparator;\n }\n if (mapper) {\n var entry = iterable.toSeq()\n .map(function(v, k) {return [v, mapper(v, k, iterable)]})\n .reduce(function(a, b) {return maxCompare(comparator, a[1], b[1]) ? b : a});\n return entry && entry[0];\n } else {\n return iterable.reduce(function(a, b) {return maxCompare(comparator, a, b) ? b : a});\n }\n }\n\n function maxCompare(comparator, a, b) {\n var comp = comparator(b, a);\n // b is considered the new max if the comparator declares them equal, but\n // they are not equal and b is in fact a nullish value.\n return (comp === 0 && b !== a && (b === undefined || b === null || b !== b)) || comp > 0;\n }\n\n\n function zipWithFactory(keyIter, zipper, iters) {\n var zipSequence = makeSequence(keyIter);\n zipSequence.size = new ArraySeq(iters).map(function(i ) {return i.size}).min();\n // Note: this a generic base implementation of __iterate in terms of\n // __iterator which may be more generically useful in the future.\n zipSequence.__iterate = function(fn, reverse) {\n /* generic:\n var iterator = this.__iterator(ITERATE_ENTRIES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n iterations++;\n if (fn(step.value[1], step.value[0], this) === false) {\n break;\n }\n }\n return iterations;\n */\n // indexed:\n var iterator = this.__iterator(ITERATE_VALUES, reverse);\n var step;\n var iterations = 0;\n while (!(step = iterator.next()).done) {\n if (fn(step.value, iterations++, this) === false) {\n break;\n }\n }\n return iterations;\n };\n zipSequence.__iteratorUncached = function(type, reverse) {\n var iterators = iters.map(function(i )\n {return (i = Iterable(i), getIterator(reverse ? i.reverse() : i))}\n );\n var iterations = 0;\n var isDone = false;\n return new Iterator(function() {\n var steps;\n if (!isDone) {\n steps = iterators.map(function(i ) {return i.next()});\n isDone = steps.some(function(s ) {return s.done});\n }\n if (isDone) {\n return iteratorDone();\n }\n return iteratorValue(\n type,\n iterations++,\n zipper.apply(null, steps.map(function(s ) {return s.value}))\n );\n });\n };\n return zipSequence\n }\n\n\n // #pragma Helper Functions\n\n function reify(iter, seq) {\n return isSeq(iter) ? seq : iter.constructor(seq);\n }\n\n function validateEntry(entry) {\n if (entry !== Object(entry)) {\n throw new TypeError('Expected [K, V] tuple: ' + entry);\n }\n }\n\n function resolveSize(iter) {\n assertNotInfinite(iter.size);\n return ensureSize(iter);\n }\n\n function iterableClass(iterable) {\n return isKeyed(iterable) ? KeyedIterable :\n isIndexed(iterable) ? IndexedIterable :\n SetIterable;\n }\n\n function makeSequence(iterable) {\n return Object.create(\n (\n isKeyed(iterable) ? KeyedSeq :\n isIndexed(iterable) ? IndexedSeq :\n SetSeq\n ).prototype\n );\n }\n\n function cacheResultThrough() {\n if (this._iter.cacheResult) {\n this._iter.cacheResult();\n this.size = this._iter.size;\n return this;\n } else {\n return Seq.prototype.cacheResult.call(this);\n }\n }\n\n function defaultComparator(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n\n function forceIterator(keyPath) {\n var iter = getIterator(keyPath);\n if (!iter) {\n // Array might not be iterable in this environment, so we need a fallback\n // to our wrapped type.\n if (!isArrayLike(keyPath)) {\n throw new TypeError('Expected iterable or array-like: ' + keyPath);\n }\n iter = getIterator(Iterable(keyPath));\n }\n return iter;\n }\n\n createClass(Record, KeyedCollection);\n\n function Record(defaultValues, name) {\n var hasInitialized;\n\n var RecordType = function Record(values) {\n if (values instanceof RecordType) {\n return values;\n }\n if (!(this instanceof RecordType)) {\n return new RecordType(values);\n }\n if (!hasInitialized) {\n hasInitialized = true;\n var keys = Object.keys(defaultValues);\n setProps(RecordTypePrototype, keys);\n RecordTypePrototype.size = keys.length;\n RecordTypePrototype._name = name;\n RecordTypePrototype._keys = keys;\n RecordTypePrototype._defaultValues = defaultValues;\n }\n this._map = Map(values);\n };\n\n var RecordTypePrototype = RecordType.prototype = Object.create(RecordPrototype);\n RecordTypePrototype.constructor = RecordType;\n\n return RecordType;\n }\n\n Record.prototype.toString = function() {\n return this.__toString(recordName(this) + ' {', '}');\n };\n\n // @pragma Access\n\n Record.prototype.has = function(k) {\n return this._defaultValues.hasOwnProperty(k);\n };\n\n Record.prototype.get = function(k, notSetValue) {\n if (!this.has(k)) {\n return notSetValue;\n }\n var defaultVal = this._defaultValues[k];\n return this._map ? this._map.get(k, defaultVal) : defaultVal;\n };\n\n // @pragma Modification\n\n Record.prototype.clear = function() {\n if (this.__ownerID) {\n this._map && this._map.clear();\n return this;\n }\n var RecordType = this.constructor;\n return RecordType._empty || (RecordType._empty = makeRecord(this, emptyMap()));\n };\n\n Record.prototype.set = function(k, v) {\n if (!this.has(k)) {\n throw new Error('Cannot set unknown key \"' + k + '\" on ' + recordName(this));\n }\n if (this._map && !this._map.has(k)) {\n var defaultVal = this._defaultValues[k];\n if (v === defaultVal) {\n return this;\n }\n }\n var newMap = this._map && this._map.set(k, v);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.remove = function(k) {\n if (!this.has(k)) {\n return this;\n }\n var newMap = this._map && this._map.remove(k);\n if (this.__ownerID || newMap === this._map) {\n return this;\n }\n return makeRecord(this, newMap);\n };\n\n Record.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Record.prototype.__iterator = function(type, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterator(type, reverse);\n };\n\n Record.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return KeyedIterable(this._defaultValues).map(function(_, k) {return this$0.get(k)}).__iterate(fn, reverse);\n };\n\n Record.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map && this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return makeRecord(this, newMap, ownerID);\n };\n\n\n var RecordPrototype = Record.prototype;\n RecordPrototype[DELETE] = RecordPrototype.remove;\n RecordPrototype.deleteIn =\n RecordPrototype.removeIn = MapPrototype.removeIn;\n RecordPrototype.merge = MapPrototype.merge;\n RecordPrototype.mergeWith = MapPrototype.mergeWith;\n RecordPrototype.mergeIn = MapPrototype.mergeIn;\n RecordPrototype.mergeDeep = MapPrototype.mergeDeep;\n RecordPrototype.mergeDeepWith = MapPrototype.mergeDeepWith;\n RecordPrototype.mergeDeepIn = MapPrototype.mergeDeepIn;\n RecordPrototype.setIn = MapPrototype.setIn;\n RecordPrototype.update = MapPrototype.update;\n RecordPrototype.updateIn = MapPrototype.updateIn;\n RecordPrototype.withMutations = MapPrototype.withMutations;\n RecordPrototype.asMutable = MapPrototype.asMutable;\n RecordPrototype.asImmutable = MapPrototype.asImmutable;\n\n\n function makeRecord(likeRecord, map, ownerID) {\n var record = Object.create(Object.getPrototypeOf(likeRecord));\n record._map = map;\n record.__ownerID = ownerID;\n return record;\n }\n\n function recordName(record) {\n return record._name || record.constructor.name || 'Record';\n }\n\n function setProps(prototype, names) {\n try {\n names.forEach(setProp.bind(undefined, prototype));\n } catch (error) {\n // Object.defineProperty failed. Probably IE8.\n }\n }\n\n function setProp(prototype, name) {\n Object.defineProperty(prototype, name, {\n get: function() {\n return this.get(name);\n },\n set: function(value) {\n invariant(this.__ownerID, 'Cannot set on an immutable record.');\n this.set(name, value);\n }\n });\n }\n\n createClass(Set, SetCollection);\n\n // @pragma Construction\n\n function Set(value) {\n return value === null || value === undefined ? emptySet() :\n isSet(value) && !isOrdered(value) ? value :\n emptySet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n Set.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Set.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n Set.prototype.toString = function() {\n return this.__toString('Set {', '}');\n };\n\n // @pragma Access\n\n Set.prototype.has = function(value) {\n return this._map.has(value);\n };\n\n // @pragma Modification\n\n Set.prototype.add = function(value) {\n return updateSet(this, this._map.set(value, true));\n };\n\n Set.prototype.remove = function(value) {\n return updateSet(this, this._map.remove(value));\n };\n\n Set.prototype.clear = function() {\n return updateSet(this, this._map.clear());\n };\n\n // @pragma Composition\n\n Set.prototype.union = function() {var iters = SLICE$0.call(arguments, 0);\n iters = iters.filter(function(x ) {return x.size !== 0});\n if (iters.length === 0) {\n return this;\n }\n if (this.size === 0 && !this.__ownerID && iters.length === 1) {\n return this.constructor(iters[0]);\n }\n return this.withMutations(function(set ) {\n for (var ii = 0; ii < iters.length; ii++) {\n SetIterable(iters[ii]).forEach(function(value ) {return set.add(value)});\n }\n });\n };\n\n Set.prototype.intersect = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (!iters.every(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.subtract = function() {var iters = SLICE$0.call(arguments, 0);\n if (iters.length === 0) {\n return this;\n }\n iters = iters.map(function(iter ) {return SetIterable(iter)});\n var originalSet = this;\n return this.withMutations(function(set ) {\n originalSet.forEach(function(value ) {\n if (iters.some(function(iter ) {return iter.includes(value)})) {\n set.remove(value);\n }\n });\n });\n };\n\n Set.prototype.merge = function() {\n return this.union.apply(this, arguments);\n };\n\n Set.prototype.mergeWith = function(merger) {var iters = SLICE$0.call(arguments, 1);\n return this.union.apply(this, iters);\n };\n\n Set.prototype.sort = function(comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator));\n };\n\n Set.prototype.sortBy = function(mapper, comparator) {\n // Late binding\n return OrderedSet(sortFactory(this, comparator, mapper));\n };\n\n Set.prototype.wasAltered = function() {\n return this._map.wasAltered();\n };\n\n Set.prototype.__iterate = function(fn, reverse) {var this$0 = this;\n return this._map.__iterate(function(_, k) {return fn(k, k, this$0)}, reverse);\n };\n\n Set.prototype.__iterator = function(type, reverse) {\n return this._map.map(function(_, k) {return k}).__iterator(type, reverse);\n };\n\n Set.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n var newMap = this._map.__ensureOwner(ownerID);\n if (!ownerID) {\n this.__ownerID = ownerID;\n this._map = newMap;\n return this;\n }\n return this.__make(newMap, ownerID);\n };\n\n\n function isSet(maybeSet) {\n return !!(maybeSet && maybeSet[IS_SET_SENTINEL]);\n }\n\n Set.isSet = isSet;\n\n var IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\n\n var SetPrototype = Set.prototype;\n SetPrototype[IS_SET_SENTINEL] = true;\n SetPrototype[DELETE] = SetPrototype.remove;\n SetPrototype.mergeDeep = SetPrototype.merge;\n SetPrototype.mergeDeepWith = SetPrototype.mergeWith;\n SetPrototype.withMutations = MapPrototype.withMutations;\n SetPrototype.asMutable = MapPrototype.asMutable;\n SetPrototype.asImmutable = MapPrototype.asImmutable;\n\n SetPrototype.__empty = emptySet;\n SetPrototype.__make = makeSet;\n\n function updateSet(set, newMap) {\n if (set.__ownerID) {\n set.size = newMap.size;\n set._map = newMap;\n return set;\n }\n return newMap === set._map ? set :\n newMap.size === 0 ? set.__empty() :\n set.__make(newMap);\n }\n\n function makeSet(map, ownerID) {\n var set = Object.create(SetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_SET;\n function emptySet() {\n return EMPTY_SET || (EMPTY_SET = makeSet(emptyMap()));\n }\n\n createClass(OrderedSet, Set);\n\n // @pragma Construction\n\n function OrderedSet(value) {\n return value === null || value === undefined ? emptyOrderedSet() :\n isOrderedSet(value) ? value :\n emptyOrderedSet().withMutations(function(set ) {\n var iter = SetIterable(value);\n assertNotInfinite(iter.size);\n iter.forEach(function(v ) {return set.add(v)});\n });\n }\n\n OrderedSet.of = function(/*...values*/) {\n return this(arguments);\n };\n\n OrderedSet.fromKeys = function(value) {\n return this(KeyedIterable(value).keySeq());\n };\n\n OrderedSet.prototype.toString = function() {\n return this.__toString('OrderedSet {', '}');\n };\n\n\n function isOrderedSet(maybeOrderedSet) {\n return isSet(maybeOrderedSet) && isOrdered(maybeOrderedSet);\n }\n\n OrderedSet.isOrderedSet = isOrderedSet;\n\n var OrderedSetPrototype = OrderedSet.prototype;\n OrderedSetPrototype[IS_ORDERED_SENTINEL] = true;\n\n OrderedSetPrototype.__empty = emptyOrderedSet;\n OrderedSetPrototype.__make = makeOrderedSet;\n\n function makeOrderedSet(map, ownerID) {\n var set = Object.create(OrderedSetPrototype);\n set.size = map ? map.size : 0;\n set._map = map;\n set.__ownerID = ownerID;\n return set;\n }\n\n var EMPTY_ORDERED_SET;\n function emptyOrderedSet() {\n return EMPTY_ORDERED_SET || (EMPTY_ORDERED_SET = makeOrderedSet(emptyOrderedMap()));\n }\n\n createClass(Stack, IndexedCollection);\n\n // @pragma Construction\n\n function Stack(value) {\n return value === null || value === undefined ? emptyStack() :\n isStack(value) ? value :\n emptyStack().unshiftAll(value);\n }\n\n Stack.of = function(/*...values*/) {\n return this(arguments);\n };\n\n Stack.prototype.toString = function() {\n return this.__toString('Stack [', ']');\n };\n\n // @pragma Access\n\n Stack.prototype.get = function(index, notSetValue) {\n var head = this._head;\n index = wrapIndex(this, index);\n while (head && index--) {\n head = head.next;\n }\n return head ? head.value : notSetValue;\n };\n\n Stack.prototype.peek = function() {\n return this._head && this._head.value;\n };\n\n // @pragma Modification\n\n Stack.prototype.push = function(/*...values*/) {\n if (arguments.length === 0) {\n return this;\n }\n var newSize = this.size + arguments.length;\n var head = this._head;\n for (var ii = arguments.length - 1; ii >= 0; ii--) {\n head = {\n value: arguments[ii],\n next: head\n };\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pushAll = function(iter) {\n iter = IndexedIterable(iter);\n if (iter.size === 0) {\n return this;\n }\n assertNotInfinite(iter.size);\n var newSize = this.size;\n var head = this._head;\n iter.reverse().forEach(function(value ) {\n newSize++;\n head = {\n value: value,\n next: head\n };\n });\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n Stack.prototype.pop = function() {\n return this.slice(1);\n };\n\n Stack.prototype.unshift = function(/*...values*/) {\n return this.push.apply(this, arguments);\n };\n\n Stack.prototype.unshiftAll = function(iter) {\n return this.pushAll(iter);\n };\n\n Stack.prototype.shift = function() {\n return this.pop.apply(this, arguments);\n };\n\n Stack.prototype.clear = function() {\n if (this.size === 0) {\n return this;\n }\n if (this.__ownerID) {\n this.size = 0;\n this._head = undefined;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return emptyStack();\n };\n\n Stack.prototype.slice = function(begin, end) {\n if (wholeSlice(begin, end, this.size)) {\n return this;\n }\n var resolvedBegin = resolveBegin(begin, this.size);\n var resolvedEnd = resolveEnd(end, this.size);\n if (resolvedEnd !== this.size) {\n // super.slice(begin, end);\n return IndexedCollection.prototype.slice.call(this, begin, end);\n }\n var newSize = this.size - resolvedBegin;\n var head = this._head;\n while (resolvedBegin--) {\n head = head.next;\n }\n if (this.__ownerID) {\n this.size = newSize;\n this._head = head;\n this.__hash = undefined;\n this.__altered = true;\n return this;\n }\n return makeStack(newSize, head);\n };\n\n // @pragma Mutability\n\n Stack.prototype.__ensureOwner = function(ownerID) {\n if (ownerID === this.__ownerID) {\n return this;\n }\n if (!ownerID) {\n this.__ownerID = ownerID;\n this.__altered = false;\n return this;\n }\n return makeStack(this.size, this._head, ownerID, this.__hash);\n };\n\n // @pragma Iteration\n\n Stack.prototype.__iterate = function(fn, reverse) {\n if (reverse) {\n return this.reverse().__iterate(fn);\n }\n var iterations = 0;\n var node = this._head;\n while (node) {\n if (fn(node.value, iterations++, this) === false) {\n break;\n }\n node = node.next;\n }\n return iterations;\n };\n\n Stack.prototype.__iterator = function(type, reverse) {\n if (reverse) {\n return this.reverse().__iterator(type);\n }\n var iterations = 0;\n var node = this._head;\n return new Iterator(function() {\n if (node) {\n var value = node.value;\n node = node.next;\n return iteratorValue(type, iterations++, value);\n }\n return iteratorDone();\n });\n };\n\n\n function isStack(maybeStack) {\n return !!(maybeStack && maybeStack[IS_STACK_SENTINEL]);\n }\n\n Stack.isStack = isStack;\n\n var IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\n\n var StackPrototype = Stack.prototype;\n StackPrototype[IS_STACK_SENTINEL] = true;\n StackPrototype.withMutations = MapPrototype.withMutations;\n StackPrototype.asMutable = MapPrototype.asMutable;\n StackPrototype.asImmutable = MapPrototype.asImmutable;\n StackPrototype.wasAltered = MapPrototype.wasAltered;\n\n\n function makeStack(size, head, ownerID, hash) {\n var map = Object.create(StackPrototype);\n map.size = size;\n map._head = head;\n map.__ownerID = ownerID;\n map.__hash = hash;\n map.__altered = false;\n return map;\n }\n\n var EMPTY_STACK;\n function emptyStack() {\n return EMPTY_STACK || (EMPTY_STACK = makeStack(0));\n }\n\n /**\n * Contributes additional methods to a constructor\n */\n function mixin(ctor, methods) {\n var keyCopier = function(key ) { ctor.prototype[key] = methods[key]; };\n Object.keys(methods).forEach(keyCopier);\n Object.getOwnPropertySymbols &&\n Object.getOwnPropertySymbols(methods).forEach(keyCopier);\n return ctor;\n }\n\n Iterable.Iterator = Iterator;\n\n mixin(Iterable, {\n\n // ### Conversion to other types\n\n toArray: function() {\n assertNotInfinite(this.size);\n var array = new Array(this.size || 0);\n this.valueSeq().__iterate(function(v, i) { array[i] = v; });\n return array;\n },\n\n toIndexedSeq: function() {\n return new ToIndexedSequence(this);\n },\n\n toJS: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJS === 'function' ? value.toJS() : value}\n ).__toJS();\n },\n\n toJSON: function() {\n return this.toSeq().map(\n function(value ) {return value && typeof value.toJSON === 'function' ? value.toJSON() : value}\n ).__toJS();\n },\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, true);\n },\n\n toMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return Map(this.toKeyedSeq());\n },\n\n toObject: function() {\n assertNotInfinite(this.size);\n var object = {};\n this.__iterate(function(v, k) { object[k] = v; });\n return object;\n },\n\n toOrderedMap: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedMap(this.toKeyedSeq());\n },\n\n toOrderedSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return OrderedSet(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSet: function() {\n // Use Late Binding here to solve the circular dependency.\n return Set(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toSetSeq: function() {\n return new ToSetSequence(this);\n },\n\n toSeq: function() {\n return isIndexed(this) ? this.toIndexedSeq() :\n isKeyed(this) ? this.toKeyedSeq() :\n this.toSetSeq();\n },\n\n toStack: function() {\n // Use Late Binding here to solve the circular dependency.\n return Stack(isKeyed(this) ? this.valueSeq() : this);\n },\n\n toList: function() {\n // Use Late Binding here to solve the circular dependency.\n return List(isKeyed(this) ? this.valueSeq() : this);\n },\n\n\n // ### Common JavaScript methods and properties\n\n toString: function() {\n return '[Iterable]';\n },\n\n __toString: function(head, tail) {\n if (this.size === 0) {\n return head + tail;\n }\n return head + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + tail;\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n concat: function() {var values = SLICE$0.call(arguments, 0);\n return reify(this, concatFactory(this, values));\n },\n\n includes: function(searchValue) {\n return this.some(function(value ) {return is(value, searchValue)});\n },\n\n entries: function() {\n return this.__iterator(ITERATE_ENTRIES);\n },\n\n every: function(predicate, context) {\n assertNotInfinite(this.size);\n var returnValue = true;\n this.__iterate(function(v, k, c) {\n if (!predicate.call(context, v, k, c)) {\n returnValue = false;\n return false;\n }\n });\n return returnValue;\n },\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, true));\n },\n\n find: function(predicate, context, notSetValue) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[1] : notSetValue;\n },\n\n forEach: function(sideEffect, context) {\n assertNotInfinite(this.size);\n return this.__iterate(context ? sideEffect.bind(context) : sideEffect);\n },\n\n join: function(separator) {\n assertNotInfinite(this.size);\n separator = separator !== undefined ? '' + separator : ',';\n var joined = '';\n var isFirst = true;\n this.__iterate(function(v ) {\n isFirst ? (isFirst = false) : (joined += separator);\n joined += v !== null && v !== undefined ? v.toString() : '';\n });\n return joined;\n },\n\n keys: function() {\n return this.__iterator(ITERATE_KEYS);\n },\n\n map: function(mapper, context) {\n return reify(this, mapFactory(this, mapper, context));\n },\n\n reduce: function(reducer, initialReduction, context) {\n assertNotInfinite(this.size);\n var reduction;\n var useFirst;\n if (arguments.length < 2) {\n useFirst = true;\n } else {\n reduction = initialReduction;\n }\n this.__iterate(function(v, k, c) {\n if (useFirst) {\n useFirst = false;\n reduction = v;\n } else {\n reduction = reducer.call(context, reduction, v, k, c);\n }\n });\n return reduction;\n },\n\n reduceRight: function(reducer, initialReduction, context) {\n var reversed = this.toKeyedSeq().reverse();\n return reversed.reduce.apply(reversed, arguments);\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, true));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, true));\n },\n\n some: function(predicate, context) {\n return !this.every(not(predicate), context);\n },\n\n sort: function(comparator) {\n return reify(this, sortFactory(this, comparator));\n },\n\n values: function() {\n return this.__iterator(ITERATE_VALUES);\n },\n\n\n // ### More sequential methods\n\n butLast: function() {\n return this.slice(0, -1);\n },\n\n isEmpty: function() {\n return this.size !== undefined ? this.size === 0 : !this.some(function() {return true});\n },\n\n count: function(predicate, context) {\n return ensureSize(\n predicate ? this.toSeq().filter(predicate, context) : this\n );\n },\n\n countBy: function(grouper, context) {\n return countByFactory(this, grouper, context);\n },\n\n equals: function(other) {\n return deepEqual(this, other);\n },\n\n entrySeq: function() {\n var iterable = this;\n if (iterable._cache) {\n // We cache as an entries array, so we can just return the cache!\n return new ArraySeq(iterable._cache);\n }\n var entriesSequence = iterable.toSeq().map(entryMapper).toIndexedSeq();\n entriesSequence.fromEntrySeq = function() {return iterable.toSeq()};\n return entriesSequence;\n },\n\n filterNot: function(predicate, context) {\n return this.filter(not(predicate), context);\n },\n\n findEntry: function(predicate, context, notSetValue) {\n var found = notSetValue;\n this.__iterate(function(v, k, c) {\n if (predicate.call(context, v, k, c)) {\n found = [k, v];\n return false;\n }\n });\n return found;\n },\n\n findKey: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry && entry[0];\n },\n\n findLast: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().find(predicate, context, notSetValue);\n },\n\n findLastEntry: function(predicate, context, notSetValue) {\n return this.toKeyedSeq().reverse().findEntry(predicate, context, notSetValue);\n },\n\n findLastKey: function(predicate, context) {\n return this.toKeyedSeq().reverse().findKey(predicate, context);\n },\n\n first: function() {\n return this.find(returnTrue);\n },\n\n flatMap: function(mapper, context) {\n return reify(this, flatMapFactory(this, mapper, context));\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, true));\n },\n\n fromEntrySeq: function() {\n return new FromEntriesSequence(this);\n },\n\n get: function(searchKey, notSetValue) {\n return this.find(function(_, key) {return is(key, searchKey)}, undefined, notSetValue);\n },\n\n getIn: function(searchKeyPath, notSetValue) {\n var nested = this;\n // Note: in an ES6 environment, we would prefer:\n // for (var key of searchKeyPath) {\n var iter = forceIterator(searchKeyPath);\n var step;\n while (!(step = iter.next()).done) {\n var key = step.value;\n nested = nested && nested.get ? nested.get(key, NOT_SET) : NOT_SET;\n if (nested === NOT_SET) {\n return notSetValue;\n }\n }\n return nested;\n },\n\n groupBy: function(grouper, context) {\n return groupByFactory(this, grouper, context);\n },\n\n has: function(searchKey) {\n return this.get(searchKey, NOT_SET) !== NOT_SET;\n },\n\n hasIn: function(searchKeyPath) {\n return this.getIn(searchKeyPath, NOT_SET) !== NOT_SET;\n },\n\n isSubset: function(iter) {\n iter = typeof iter.includes === 'function' ? iter : Iterable(iter);\n return this.every(function(value ) {return iter.includes(value)});\n },\n\n isSuperset: function(iter) {\n iter = typeof iter.isSubset === 'function' ? iter : Iterable(iter);\n return iter.isSubset(this);\n },\n\n keyOf: function(searchValue) {\n return this.findKey(function(value ) {return is(value, searchValue)});\n },\n\n keySeq: function() {\n return this.toSeq().map(keyMapper).toIndexedSeq();\n },\n\n last: function() {\n return this.toSeq().reverse().first();\n },\n\n lastKeyOf: function(searchValue) {\n return this.toKeyedSeq().reverse().keyOf(searchValue);\n },\n\n max: function(comparator) {\n return maxFactory(this, comparator);\n },\n\n maxBy: function(mapper, comparator) {\n return maxFactory(this, comparator, mapper);\n },\n\n min: function(comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator);\n },\n\n minBy: function(mapper, comparator) {\n return maxFactory(this, comparator ? neg(comparator) : defaultNegComparator, mapper);\n },\n\n rest: function() {\n return this.slice(1);\n },\n\n skip: function(amount) {\n return this.slice(Math.max(0, amount));\n },\n\n skipLast: function(amount) {\n return reify(this, this.toSeq().reverse().skip(amount).reverse());\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, true));\n },\n\n skipUntil: function(predicate, context) {\n return this.skipWhile(not(predicate), context);\n },\n\n sortBy: function(mapper, comparator) {\n return reify(this, sortFactory(this, comparator, mapper));\n },\n\n take: function(amount) {\n return this.slice(0, Math.max(0, amount));\n },\n\n takeLast: function(amount) {\n return reify(this, this.toSeq().reverse().take(amount).reverse());\n },\n\n takeWhile: function(predicate, context) {\n return reify(this, takeWhileFactory(this, predicate, context));\n },\n\n takeUntil: function(predicate, context) {\n return this.takeWhile(not(predicate), context);\n },\n\n valueSeq: function() {\n return this.toIndexedSeq();\n },\n\n\n // ### Hashable Object\n\n hashCode: function() {\n return this.__hash || (this.__hash = hashIterable(this));\n }\n\n\n // ### Internal\n\n // abstract __iterate(fn, reverse)\n\n // abstract __iterator(type, reverse)\n });\n\n // var IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\n // var IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\n // var IS_INDEXED_SENTINEL = '@@__IMMUTABLE_INDEXED__@@';\n // var IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\n\n var IterablePrototype = Iterable.prototype;\n IterablePrototype[IS_ITERABLE_SENTINEL] = true;\n IterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.values;\n IterablePrototype.__toJS = IterablePrototype.toArray;\n IterablePrototype.__toStringMapper = quoteString;\n IterablePrototype.inspect =\n IterablePrototype.toSource = function() { return this.toString(); };\n IterablePrototype.chain = IterablePrototype.flatMap;\n IterablePrototype.contains = IterablePrototype.includes;\n\n mixin(KeyedIterable, {\n\n // ### More sequential methods\n\n flip: function() {\n return reify(this, flipFactory(this));\n },\n\n mapEntries: function(mapper, context) {var this$0 = this;\n var iterations = 0;\n return reify(this,\n this.toSeq().map(\n function(v, k) {return mapper.call(context, [k, v], iterations++, this$0)}\n ).fromEntrySeq()\n );\n },\n\n mapKeys: function(mapper, context) {var this$0 = this;\n return reify(this,\n this.toSeq().flip().map(\n function(k, v) {return mapper.call(context, k, v, this$0)}\n ).flip()\n );\n }\n\n });\n\n var KeyedIterablePrototype = KeyedIterable.prototype;\n KeyedIterablePrototype[IS_KEYED_SENTINEL] = true;\n KeyedIterablePrototype[ITERATOR_SYMBOL] = IterablePrototype.entries;\n KeyedIterablePrototype.__toJS = IterablePrototype.toObject;\n KeyedIterablePrototype.__toStringMapper = function(v, k) {return JSON.stringify(k) + ': ' + quoteString(v)};\n\n\n\n mixin(IndexedIterable, {\n\n // ### Conversion to other types\n\n toKeyedSeq: function() {\n return new ToKeyedSequence(this, false);\n },\n\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n filter: function(predicate, context) {\n return reify(this, filterFactory(this, predicate, context, false));\n },\n\n findIndex: function(predicate, context) {\n var entry = this.findEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n indexOf: function(searchValue) {\n var key = this.keyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n lastIndexOf: function(searchValue) {\n var key = this.lastKeyOf(searchValue);\n return key === undefined ? -1 : key;\n },\n\n reverse: function() {\n return reify(this, reverseFactory(this, false));\n },\n\n slice: function(begin, end) {\n return reify(this, sliceFactory(this, begin, end, false));\n },\n\n splice: function(index, removeNum /*, ...values*/) {\n var numArgs = arguments.length;\n removeNum = Math.max(removeNum | 0, 0);\n if (numArgs === 0 || (numArgs === 2 && !removeNum)) {\n return this;\n }\n // If index is negative, it should resolve relative to the size of the\n // collection. However size may be expensive to compute if not cached, so\n // only call count() if the number is in fact negative.\n index = resolveBegin(index, index < 0 ? this.count() : this.size);\n var spliced = this.slice(0, index);\n return reify(\n this,\n numArgs === 1 ?\n spliced :\n spliced.concat(arrCopy(arguments, 2), this.slice(index + removeNum))\n );\n },\n\n\n // ### More collection methods\n\n findLastIndex: function(predicate, context) {\n var entry = this.findLastEntry(predicate, context);\n return entry ? entry[0] : -1;\n },\n\n first: function() {\n return this.get(0);\n },\n\n flatten: function(depth) {\n return reify(this, flattenFactory(this, depth, false));\n },\n\n get: function(index, notSetValue) {\n index = wrapIndex(this, index);\n return (index < 0 || (this.size === Infinity ||\n (this.size !== undefined && index > this.size))) ?\n notSetValue :\n this.find(function(_, key) {return key === index}, undefined, notSetValue);\n },\n\n has: function(index) {\n index = wrapIndex(this, index);\n return index >= 0 && (this.size !== undefined ?\n this.size === Infinity || index < this.size :\n this.indexOf(index) !== -1\n );\n },\n\n interpose: function(separator) {\n return reify(this, interposeFactory(this, separator));\n },\n\n interleave: function(/*...iterables*/) {\n var iterables = [this].concat(arrCopy(arguments));\n var zipped = zipWithFactory(this.toSeq(), IndexedSeq.of, iterables);\n var interleaved = zipped.flatten(true);\n if (zipped.size) {\n interleaved.size = zipped.size * iterables.length;\n }\n return reify(this, interleaved);\n },\n\n keySeq: function() {\n return Range(0, this.size);\n },\n\n last: function() {\n return this.get(-1);\n },\n\n skipWhile: function(predicate, context) {\n return reify(this, skipWhileFactory(this, predicate, context, false));\n },\n\n zip: function(/*, ...iterables */) {\n var iterables = [this].concat(arrCopy(arguments));\n return reify(this, zipWithFactory(this, defaultZipper, iterables));\n },\n\n zipWith: function(zipper/*, ...iterables */) {\n var iterables = arrCopy(arguments);\n iterables[0] = this;\n return reify(this, zipWithFactory(this, zipper, iterables));\n }\n\n });\n\n IndexedIterable.prototype[IS_INDEXED_SENTINEL] = true;\n IndexedIterable.prototype[IS_ORDERED_SENTINEL] = true;\n\n\n\n mixin(SetIterable, {\n\n // ### ES6 Collection methods (ES6 Array and Map)\n\n get: function(value, notSetValue) {\n return this.has(value) ? value : notSetValue;\n },\n\n includes: function(value) {\n return this.has(value);\n },\n\n\n // ### More sequential methods\n\n keySeq: function() {\n return this.valueSeq();\n }\n\n });\n\n SetIterable.prototype.has = IterablePrototype.includes;\n SetIterable.prototype.contains = SetIterable.prototype.includes;\n\n\n // Mixin subclasses\n\n mixin(KeyedSeq, KeyedIterable.prototype);\n mixin(IndexedSeq, IndexedIterable.prototype);\n mixin(SetSeq, SetIterable.prototype);\n\n mixin(KeyedCollection, KeyedIterable.prototype);\n mixin(IndexedCollection, IndexedIterable.prototype);\n mixin(SetCollection, SetIterable.prototype);\n\n\n // #pragma Helper functions\n\n function keyMapper(v, k) {\n return k;\n }\n\n function entryMapper(v, k) {\n return [k, v];\n }\n\n function not(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n }\n }\n\n function neg(predicate) {\n return function() {\n return -predicate.apply(this, arguments);\n }\n }\n\n function quoteString(value) {\n return typeof value === 'string' ? JSON.stringify(value) : String(value);\n }\n\n function defaultZipper() {\n return arrCopy(arguments);\n }\n\n function defaultNegComparator(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n }\n\n function hashIterable(iterable) {\n if (iterable.size === Infinity) {\n return 0;\n }\n var ordered = isOrdered(iterable);\n var keyed = isKeyed(iterable);\n var h = ordered ? 1 : 0;\n var size = iterable.__iterate(\n keyed ?\n ordered ?\n function(v, k) { h = 31 * h + hashMerge(hash(v), hash(k)) | 0; } :\n function(v, k) { h = h + hashMerge(hash(v), hash(k)) | 0; } :\n ordered ?\n function(v ) { h = 31 * h + hash(v) | 0; } :\n function(v ) { h = h + hash(v) | 0; }\n );\n return murmurHashOfSize(size, h);\n }\n\n function murmurHashOfSize(size, h) {\n h = imul(h, 0xCC9E2D51);\n h = imul(h << 15 | h >>> -15, 0x1B873593);\n h = imul(h << 13 | h >>> -13, 5);\n h = (h + 0xE6546B64 | 0) ^ size;\n h = imul(h ^ h >>> 16, 0x85EBCA6B);\n h = imul(h ^ h >>> 13, 0xC2B2AE35);\n h = smi(h ^ h >>> 16);\n return h;\n }\n\n function hashMerge(a, b) {\n return a ^ b + 0x9E3779B9 + (a << 6) + (a >> 2) | 0; // int\n }\n\n var Immutable = {\n\n Iterable: Iterable,\n\n Seq: Seq,\n Collection: Collection,\n Map: Map,\n OrderedMap: OrderedMap,\n List: List,\n Stack: Stack,\n Set: Set,\n OrderedSet: OrderedSet,\n\n Record: Record,\n Range: Range,\n Repeat: Repeat,\n\n is: is,\n fromJS: fromJS\n\n };\n\n return Immutable;\n\n}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/immutable/dist/immutable.js\n// module id = 17\n// module chunks = 0","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// Trust the developer to only use ReactInstrumentation with a __DEV__ check\n\nvar debugTool = null;\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactDebugTool = require('./ReactDebugTool');\n debugTool = ReactDebugTool;\n}\n\nmodule.exports = { debugTool: debugTool };\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactInstrumentation.js\n// module id = 18\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactReconciler = require('./ReactReconciler');\nvar Transaction = require('./Transaction');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar dirtyComponents = [];\nvar updateBatchNumber = 0;\nvar asapCallbackQueue = CallbackQueue.getPooled();\nvar asapEnqueued = false;\n\nvar batchingStrategy = null;\n\nfunction ensureInjected() {\n !(ReactUpdates.ReactReconcileTransaction && batchingStrategy) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must inject a reconcile transaction class and batching strategy') : _prodInvariant('123') : void 0;\n}\n\nvar NESTED_UPDATES = {\n initialize: function () {\n this.dirtyComponentsLength = dirtyComponents.length;\n },\n close: function () {\n if (this.dirtyComponentsLength !== dirtyComponents.length) {\n // Additional updates were enqueued by componentDidUpdate handlers or\n // similar; before our own UPDATE_QUEUEING wrapper closes, we want to run\n // these new updates so that if A's componentDidUpdate calls setState on\n // B, B will update before the callback A's updater provided when calling\n // setState.\n dirtyComponents.splice(0, this.dirtyComponentsLength);\n flushBatchedUpdates();\n } else {\n dirtyComponents.length = 0;\n }\n }\n};\n\nvar UPDATE_QUEUEING = {\n initialize: function () {\n this.callbackQueue.reset();\n },\n close: function () {\n this.callbackQueue.notifyAll();\n }\n};\n\nvar TRANSACTION_WRAPPERS = [NESTED_UPDATES, UPDATE_QUEUEING];\n\nfunction ReactUpdatesFlushTransaction() {\n this.reinitializeTransaction();\n this.dirtyComponentsLength = null;\n this.callbackQueue = CallbackQueue.getPooled();\n this.reconcileTransaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */true);\n}\n\n_assign(ReactUpdatesFlushTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n destructor: function () {\n this.dirtyComponentsLength = null;\n CallbackQueue.release(this.callbackQueue);\n this.callbackQueue = null;\n ReactUpdates.ReactReconcileTransaction.release(this.reconcileTransaction);\n this.reconcileTransaction = null;\n },\n\n perform: function (method, scope, a) {\n // Essentially calls `this.reconcileTransaction.perform(method, scope, a)`\n // with this transaction's wrappers around it.\n return Transaction.perform.call(this, this.reconcileTransaction.perform, this.reconcileTransaction, method, scope, a);\n }\n});\n\nPooledClass.addPoolingTo(ReactUpdatesFlushTransaction);\n\nfunction batchedUpdates(callback, a, b, c, d, e) {\n ensureInjected();\n return batchingStrategy.batchedUpdates(callback, a, b, c, d, e);\n}\n\n/**\n * Array comparator for ReactComponents by mount ordering.\n *\n * @param {ReactComponent} c1 first component you're comparing\n * @param {ReactComponent} c2 second component you're comparing\n * @return {number} Return value usable by Array.prototype.sort().\n */\nfunction mountOrderComparator(c1, c2) {\n return c1._mountOrder - c2._mountOrder;\n}\n\nfunction runBatchedUpdates(transaction) {\n var len = transaction.dirtyComponentsLength;\n !(len === dirtyComponents.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected flush transaction\\'s stored dirty-components length (%s) to match dirty-components array length (%s).', len, dirtyComponents.length) : _prodInvariant('124', len, dirtyComponents.length) : void 0;\n\n // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n dirtyComponents.sort(mountOrderComparator);\n\n // Any updates enqueued while reconciling must be performed after this entire\n // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and\n // C, B could update twice in a single batch if C's render enqueues an update\n // to B (since B would have already updated, we should skip it, and the only\n // way we can know to do so is by checking the batch counter).\n updateBatchNumber++;\n\n for (var i = 0; i < len; i++) {\n // If a component is unmounted before pending changes apply, it will still\n // be here, but we assume that it has cleared its _pendingCallbacks and\n // that performUpdateIfNecessary is a noop.\n var component = dirtyComponents[i];\n\n // If performUpdateIfNecessary happens to enqueue any new updates, we\n // shouldn't execute the callbacks until the next render happens, so\n // stash the callbacks first\n var callbacks = component._pendingCallbacks;\n component._pendingCallbacks = null;\n\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var namedComponent = component;\n // Duck type TopLevelWrapper. This is probably always true.\n if (component._currentElement.type.isReactTopLevelWrapper) {\n namedComponent = component._renderedComponent;\n }\n markerName = 'React update: ' + namedComponent.getName();\n console.time(markerName);\n }\n\n ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n if (callbacks) {\n for (var j = 0; j < callbacks.length; j++) {\n transaction.callbackQueue.enqueue(callbacks[j], component.getPublicInstance());\n }\n }\n }\n}\n\nvar flushBatchedUpdates = function () {\n // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents\n // array and perform any updates enqueued by mount-ready handlers (i.e.,\n // componentDidUpdate) but we need to check here too in order to catch\n // updates enqueued by setState callbacks and asap calls.\n while (dirtyComponents.length || asapEnqueued) {\n if (dirtyComponents.length) {\n var transaction = ReactUpdatesFlushTransaction.getPooled();\n transaction.perform(runBatchedUpdates, null, transaction);\n ReactUpdatesFlushTransaction.release(transaction);\n }\n\n if (asapEnqueued) {\n asapEnqueued = false;\n var queue = asapCallbackQueue;\n asapCallbackQueue = CallbackQueue.getPooled();\n queue.notifyAll();\n CallbackQueue.release(queue);\n }\n }\n};\n\n/**\n * Mark a component as needing a rerender, adding an optional callback to a\n * list of functions which will be executed once the rerender occurs.\n */\nfunction enqueueUpdate(component) {\n ensureInjected();\n\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (This is called by each top-level update\n // function, like setState, forceUpdate, etc.; creation and\n // destruction of top-level components is guarded in ReactMount.)\n\n if (!batchingStrategy.isBatchingUpdates) {\n batchingStrategy.batchedUpdates(enqueueUpdate, component);\n return;\n }\n\n dirtyComponents.push(component);\n if (component._updateBatchNumber == null) {\n component._updateBatchNumber = updateBatchNumber + 1;\n }\n}\n\n/**\n * Enqueue a callback to be run at the end of the current batching cycle. Throws\n * if no updates are currently being performed.\n */\nfunction asap(callback, context) {\n !batchingStrategy.isBatchingUpdates ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates.asap: Can\\'t enqueue an asap callback in a context whereupdates are not being batched.') : _prodInvariant('125') : void 0;\n asapCallbackQueue.enqueue(callback, context);\n asapEnqueued = true;\n}\n\nvar ReactUpdatesInjection = {\n injectReconcileTransaction: function (ReconcileTransaction) {\n !ReconcileTransaction ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a reconcile transaction class') : _prodInvariant('126') : void 0;\n ReactUpdates.ReactReconcileTransaction = ReconcileTransaction;\n },\n\n injectBatchingStrategy: function (_batchingStrategy) {\n !_batchingStrategy ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batching strategy') : _prodInvariant('127') : void 0;\n !(typeof _batchingStrategy.batchedUpdates === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide a batchedUpdates() function') : _prodInvariant('128') : void 0;\n !(typeof _batchingStrategy.isBatchingUpdates === 'boolean') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactUpdates: must provide an isBatchingUpdates boolean attribute') : _prodInvariant('129') : void 0;\n batchingStrategy = _batchingStrategy;\n }\n};\n\nvar ReactUpdates = {\n /**\n * React references `ReactReconcileTransaction` using this property in order\n * to allow dependency injection.\n *\n * @internal\n */\n ReactReconcileTransaction: null,\n\n batchedUpdates: batchedUpdates,\n enqueueUpdate: enqueueUpdate,\n flushBatchedUpdates: flushBatchedUpdates,\n injection: ReactUpdatesInjection,\n asap: asap\n};\n\nmodule.exports = ReactUpdates;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactUpdates.js\n// module id = 19\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnForAddedNewProperty = false;\nvar isProxySupported = typeof Proxy === 'function';\n\nvar shouldBeReleasedProperties = ['dispatchConfig', '_targetInst', 'nativeEvent', 'isDefaultPrevented', 'isPropagationStopped', '_dispatchListeners', '_dispatchInstances'];\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar EventInterface = {\n type: null,\n target: null,\n // currentTarget is set when dispatching; no use in copying it here\n currentTarget: emptyFunction.thatReturnsNull,\n eventPhase: null,\n bubbles: null,\n cancelable: null,\n timeStamp: function (event) {\n return event.timeStamp || Date.now();\n },\n defaultPrevented: null,\n isTrusted: null\n};\n\n/**\n * Synthetic events are dispatched by event plugins, typically in response to a\n * top-level event delegation handler.\n *\n * These systems should generally use pooling to reduce the frequency of garbage\n * collection. The system should check `isPersistent` to determine whether the\n * event should be released into the pool after being dispatched. Users that\n * need a persisted event should invoke `persist`.\n *\n * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n * normalizing browser quirks. Subclasses do not necessarily have to implement a\n * DOM interface; custom application-specific events can also subclass this.\n *\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {*} targetInst Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @param {DOMEventTarget} nativeEventTarget Target node.\n */\nfunction SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {\n if (process.env.NODE_ENV !== 'production') {\n // these have a getter/setter for warnings\n delete this.nativeEvent;\n delete this.preventDefault;\n delete this.stopPropagation;\n }\n\n this.dispatchConfig = dispatchConfig;\n this._targetInst = targetInst;\n this.nativeEvent = nativeEvent;\n\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (!Interface.hasOwnProperty(propName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n delete this[propName]; // this has a getter/setter for warnings\n }\n var normalize = Interface[propName];\n if (normalize) {\n this[propName] = normalize(nativeEvent);\n } else {\n if (propName === 'target') {\n this.target = nativeEventTarget;\n } else {\n this[propName] = nativeEvent[propName];\n }\n }\n }\n\n var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n if (defaultPrevented) {\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n } else {\n this.isDefaultPrevented = emptyFunction.thatReturnsFalse;\n }\n this.isPropagationStopped = emptyFunction.thatReturnsFalse;\n return this;\n}\n\n_assign(SyntheticEvent.prototype, {\n\n preventDefault: function () {\n this.defaultPrevented = true;\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else if (typeof event.returnValue !== 'unknown') {\n // eslint-disable-line valid-typeof\n event.returnValue = false;\n }\n this.isDefaultPrevented = emptyFunction.thatReturnsTrue;\n },\n\n stopPropagation: function () {\n var event = this.nativeEvent;\n if (!event) {\n return;\n }\n\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (typeof event.cancelBubble !== 'unknown') {\n // eslint-disable-line valid-typeof\n // The ChangeEventPlugin registers a \"propertychange\" event for\n // IE. This event does not support bubbling or cancelling, and\n // any references to cancelBubble throw \"Member not found\". A\n // typeof check of \"unknown\" circumvents this issue (and is also\n // IE specific).\n event.cancelBubble = true;\n }\n\n this.isPropagationStopped = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * We release all dispatched `SyntheticEvent`s after each event loop, adding\n * them back into the pool. This allows a way to hold onto a reference that\n * won't be added back into the pool.\n */\n persist: function () {\n this.isPersistent = emptyFunction.thatReturnsTrue;\n },\n\n /**\n * Checks if this event should be released back into the pool.\n *\n * @return {boolean} True if this should not be released, false otherwise.\n */\n isPersistent: emptyFunction.thatReturnsFalse,\n\n /**\n * `PooledClass` looks for `destructor` on each instance it releases.\n */\n destructor: function () {\n var Interface = this.constructor.Interface;\n for (var propName in Interface) {\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));\n } else {\n this[propName] = null;\n }\n }\n for (var i = 0; i < shouldBeReleasedProperties.length; i++) {\n this[shouldBeReleasedProperties[i]] = null;\n }\n if (process.env.NODE_ENV !== 'production') {\n Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));\n Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', emptyFunction));\n Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', emptyFunction));\n }\n }\n\n});\n\nSyntheticEvent.Interface = EventInterface;\n\nif (process.env.NODE_ENV !== 'production') {\n if (isProxySupported) {\n /*eslint-disable no-func-assign */\n SyntheticEvent = new Proxy(SyntheticEvent, {\n construct: function (target, args) {\n return this.apply(target, Object.create(target.prototype), args);\n },\n apply: function (constructor, that, args) {\n return new Proxy(constructor.apply(that, args), {\n set: function (target, prop, value) {\n if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {\n process.env.NODE_ENV !== 'production' ? warning(didWarnForAddedNewProperty || target.isPersistent(), 'This synthetic event is reused for performance reasons. If you\\'re ' + 'seeing this, you\\'re adding a new property in the synthetic event object. ' + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.') : void 0;\n didWarnForAddedNewProperty = true;\n }\n target[prop] = value;\n return true;\n }\n });\n }\n });\n /*eslint-enable no-func-assign */\n }\n}\n/**\n * Helper to reduce boilerplate when creating subclasses.\n *\n * @param {function} Class\n * @param {?object} Interface\n */\nSyntheticEvent.augmentClass = function (Class, Interface) {\n var Super = this;\n\n var E = function () {};\n E.prototype = Super.prototype;\n var prototype = new E();\n\n _assign(prototype, Class.prototype);\n Class.prototype = prototype;\n Class.prototype.constructor = Class;\n\n Class.Interface = _assign({}, Super.Interface, Interface);\n Class.augmentClass = Super.augmentClass;\n\n PooledClass.addPoolingTo(Class, PooledClass.fourArgumentPooler);\n};\n\nPooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);\n\nmodule.exports = SyntheticEvent;\n\n/**\n * Helper to nullify syntheticEvent instance properties when destructing\n *\n * @param {object} SyntheticEvent\n * @param {String} propName\n * @return {object} defineProperty object\n */\nfunction getPooledWarningPropertyDefinition(propName, getVal) {\n var isFunction = typeof getVal === 'function';\n return {\n configurable: true,\n set: set,\n get: get\n };\n\n function set(val) {\n var action = isFunction ? 'setting the method' : 'setting the property';\n warn(action, 'This is effectively a no-op');\n return val;\n }\n\n function get() {\n var action = isFunction ? 'accessing the method' : 'accessing the property';\n var result = isFunction ? 'This is a no-op function' : 'This is set to null';\n warn(action, result);\n return getVal;\n }\n\n function warn(action, result) {\n var warningCondition = false;\n process.env.NODE_ENV !== 'production' ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\\'re seeing this, ' + 'you\\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticEvent.js\n// module id = 20\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n\n};\n\nmodule.exports = ReactCurrentOwner;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactCurrentOwner.js\n// module id = 21\n// module chunks = 0","import api from '../data/feature-api';\nconst debug = require('debug')('unleash:feature-actions');\n\nexport const ADD_FEATURE_TOGGLE = 'ADD_FEATURE_TOGGLE';\nexport const REMOVE_FEATURE_TOGGLE = 'REMOVE_FEATURE_TOGGLE';\nexport const UPDATE_FEATURE_TOGGLE = 'UPDATE_FEATURE_TOGGLE';\nexport const TOGGLE_FEATURE_TOGGLE = 'TOGGLE_FEATURE_TOGGLE';\nexport const START_FETCH_FEATURE_TOGGLES = 'START_FETCH_FEATURE_TOGGLES';\nexport const START_UPDATE_FEATURE_TOGGLE = 'START_UPDATE_FEATURE_TOGGLE';\nexport const START_CREATE_FEATURE_TOGGLE = 'START_CREATE_FEATURE_TOGGLE';\nexport const START_REMOVE_FEATURE_TOGGLE = 'START_REMOVE_FEATURE_TOGGLE';\nexport const RECEIVE_FEATURE_TOGGLES = 'RECEIVE_FEATURE_TOGGLES';\nexport const ERROR_FETCH_FEATURE_TOGGLES = 'ERROR_FETCH_FEATURE_TOGGLES';\nexport const ERROR_CREATING_FEATURE_TOGGLE = 'ERROR_CREATING_FEATURE_TOGGLE';\nexport const ERROR_UPDATE_FEATURE_TOGGLE = 'ERROR_UPDATE_FEATURE_TOGGLE';\nexport const ERROR_REMOVE_FEATURE_TOGGLE = 'ERROR_REMOVE_FEATURE_TOGGLE';\n\nexport function toggleFeature (featureToggle) {\n debug('Toggle feature toggle ', featureToggle);\n return dispatch => {\n const newValue = Object.assign({}, featureToggle, { enabled: !featureToggle.enabled });\n dispatch(requestUpdateFeatureToggle(newValue));\n };\n};\n\nexport function editFeatureToggle (featureToggle) {\n debug('Update feature toggle ', featureToggle);\n return dispatch => {\n dispatch(requestUpdateFeatureToggle(featureToggle));\n };\n};\n\n\nfunction receiveFeatureToggles (json) {\n debug('reviced feature toggles', json);\n return {\n type: RECEIVE_FEATURE_TOGGLES,\n featureToggles: json.features.map(features => features),\n receivedAt: Date.now(),\n };\n}\n\nfunction dispatchAndThrow (dispatch, type) {\n return (error) => {\n dispatch({ type, error, receivedAt: Date.now() });\n throw error;\n };\n}\n\nexport function fetchFeatureToggles () {\n debug('Start fetching feature toggles');\n return dispatch => {\n dispatch({ type: START_FETCH_FEATURE_TOGGLES });\n\n return api.fetchAll()\n .then(json => dispatch(receiveFeatureToggles(json)))\n .catch(dispatchAndThrow(dispatch, ERROR_FETCH_FEATURE_TOGGLES));\n };\n}\n\nexport function createFeatureToggles (featureToggle) {\n return dispatch => {\n dispatch({ type: START_CREATE_FEATURE_TOGGLE });\n\n return api.create(featureToggle)\n .then(() => dispatch({ type: ADD_FEATURE_TOGGLE, featureToggle }))\n .catch(dispatchAndThrow(dispatch, ERROR_CREATING_FEATURE_TOGGLE));\n };\n}\n\nexport function requestUpdateFeatureToggle (featureToggle) {\n return dispatch => {\n dispatch({ type: START_UPDATE_FEATURE_TOGGLE });\n\n return api.update(featureToggle)\n .then(() => dispatch({ type: UPDATE_FEATURE_TOGGLE, featureToggle }))\n .catch(dispatchAndThrow(dispatch, ERROR_UPDATE_FEATURE_TOGGLE));\n };\n}\n\nexport function removeFeatureToggle (featureToggleName) {\n return dispatch => {\n dispatch({ type: START_REMOVE_FEATURE_TOGGLE });\n\n return api.remove(featureToggleName)\n .then(() => dispatch({ type: REMOVE_FEATURE_TOGGLE, featureToggleName }))\n .catch(dispatchAndThrow(dispatch, ERROR_REMOVE_FEATURE_TOGGLE));\n };\n}\n\nexport function validateName (featureToggleName) {\n return api.validate({ name: featureToggleName });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/feature-actions.js","'use strict';\n\nexports.__esModule = true;\nexports.createPath = exports.parsePath = exports.getQueryStringValueFromPath = exports.stripQueryStringValueFromPath = exports.addQueryStringValueToPath = undefined;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar addQueryStringValueToPath = exports.addQueryStringValueToPath = function addQueryStringValueToPath(path, key, value) {\n var _parsePath = parsePath(path);\n\n var pathname = _parsePath.pathname;\n var search = _parsePath.search;\n var hash = _parsePath.hash;\n\n\n return createPath({\n pathname: pathname,\n search: search + (search.indexOf('?') === -1 ? '?' : '&') + key + '=' + value,\n hash: hash\n });\n};\n\nvar stripQueryStringValueFromPath = exports.stripQueryStringValueFromPath = function stripQueryStringValueFromPath(path, key) {\n var _parsePath2 = parsePath(path);\n\n var pathname = _parsePath2.pathname;\n var search = _parsePath2.search;\n var hash = _parsePath2.hash;\n\n\n return createPath({\n pathname: pathname,\n search: search.replace(new RegExp('([?&])' + key + '=[a-zA-Z0-9]+(&?)'), function (match, prefix, suffix) {\n return prefix === '?' ? prefix : suffix;\n }),\n hash: hash\n });\n};\n\nvar getQueryStringValueFromPath = exports.getQueryStringValueFromPath = function getQueryStringValueFromPath(path, key) {\n var _parsePath3 = parsePath(path);\n\n var search = _parsePath3.search;\n\n var match = search.match(new RegExp('[?&]' + key + '=([a-zA-Z0-9]+)'));\n return match && match[1];\n};\n\nvar extractPath = function extractPath(string) {\n var match = string.match(/^(https?:)?\\/\\/[^\\/]*/);\n return match == null ? string : string.substring(match[0].length);\n};\n\nvar parsePath = exports.parsePath = function parsePath(path) {\n var pathname = extractPath(path);\n var search = '';\n var hash = '';\n\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(path === pathname, 'A path must be pathname + search + hash only, not a full URL like \"%s\"', path) : void 0;\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substring(hashIndex);\n pathname = pathname.substring(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substring(searchIndex);\n pathname = pathname.substring(0, searchIndex);\n }\n\n if (pathname === '') pathname = '/';\n\n return {\n pathname: pathname,\n search: search,\n hash: hash\n };\n};\n\nvar createPath = exports.createPath = function createPath(location) {\n if (location == null || typeof location === 'string') return location;\n\n var basename = location.basename;\n var pathname = location.pathname;\n var search = location.search;\n var hash = location.hash;\n\n var path = (basename || '') + pathname;\n\n if (search && search !== '?') path += search;\n\n if (hash) path += hash;\n\n return path;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/PathUtils.js\n// module id = 23\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.isReactChildren = isReactChildren;\nexports.createRouteFromReactElement = createRouteFromReactElement;\nexports.createRoutesFromReactChildren = createRoutesFromReactChildren;\nexports.createRoutes = createRoutes;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isValidChild(object) {\n return object == null || _react2.default.isValidElement(object);\n}\n\nfunction isReactChildren(object) {\n return isValidChild(object) || Array.isArray(object) && object.every(isValidChild);\n}\n\nfunction createRoute(defaultProps, props) {\n return _extends({}, defaultProps, props);\n}\n\nfunction createRouteFromReactElement(element) {\n var type = element.type;\n var route = createRoute(type.defaultProps, element.props);\n\n if (route.children) {\n var childRoutes = createRoutesFromReactChildren(route.children, route);\n\n if (childRoutes.length) route.childRoutes = childRoutes;\n\n delete route.children;\n }\n\n return route;\n}\n\n/**\n * Creates and returns a routes object from the given ReactChildren. JSX\n * provides a convenient way to visualize how routes in the hierarchy are\n * nested.\n *\n * import { Route, createRoutesFromReactChildren } from 'react-router'\n *\n * const routes = createRoutesFromReactChildren(\n * <Route component={App}>\n * <Route path=\"home\" component={Dashboard}/>\n * <Route path=\"news\" component={NewsFeed}/>\n * </Route>\n * )\n *\n * Note: This method is automatically used when you provide <Route> children\n * to a <Router> component.\n */\nfunction createRoutesFromReactChildren(children, parentRoute) {\n var routes = [];\n\n _react2.default.Children.forEach(children, function (element) {\n if (_react2.default.isValidElement(element)) {\n // Component classes may have a static create* method.\n if (element.type.createRouteFromReactElement) {\n var route = element.type.createRouteFromReactElement(element, parentRoute);\n\n if (route) routes.push(route);\n } else {\n routes.push(createRouteFromReactElement(element));\n }\n }\n });\n\n return routes;\n}\n\n/**\n * Creates and returns an array of routes from the given object which\n * may be a JSX route, a plain object route, or an array of either.\n */\nfunction createRoutes(routes) {\n if (isReactChildren(routes)) {\n routes = createRoutesFromReactChildren(routes);\n } else if (routes && !Array.isArray(routes)) {\n routes = [routes];\n }\n\n return routes;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/RouteUtils.js\n// module id = 24\n// module chunks = 0","/**\n * Copyright 2014-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar warning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n\n if (format.length < 10 || (/^[s\\W]*$/).test(format)) {\n throw new Error(\n 'The warning format should be able to uniquely identify this ' +\n 'warning. Please, use a more descriptive format than: ' + format\n );\n }\n\n if (!condition) {\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch(x) {}\n }\n };\n}\n\nmodule.exports = warning;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/warning/browser.js\n// module id = 25\n// module chunks = 0","const defaultErrorMessage = 'Unexptected exception when talking to unleash-api';\n\nfunction extractJoiMsg (body) {\n return body.details.length > 0 ? body.details[0].message : defaultErrorMessage;\n}\nfunction extractLegacyMsg (body) {\n return body && body.length > 0 ? body[0].msg : defaultErrorMessage;\n}\n\nexport function throwIfNotSuccess (response) {\n if (!response.ok) {\n if (response.status > 399 && response.status < 404) {\n return new Promise((resolve, reject) => {\n response.json().then(body => {\n const errorMsg = body && body.isJoi ? extractJoiMsg(body) : extractLegacyMsg(body);\n let error = new Error(errorMsg);\n error.statusCode = response.status;\n reject(error);\n });\n });\n } else {\n return Promise.reject(new Error(defaultErrorMessage));\n }\n }\n return Promise.resolve(response);\n};\n\n\nexport const headers = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/data/helper.js","import api from '../../data/strategy-api';\nimport { fetchApplicationsWithStrategyName } from '../../data/applications-api';\n\nexport const ADD_STRATEGY = 'ADD_STRATEGY';\nexport const UPDATE_STRATEGY = 'UPDATE_STRATEGY';\nexport const REMOVE_STRATEGY = 'REMOVE_STRATEGY';\nexport const REQUEST_STRATEGIES = 'REQUEST_STRATEGIES';\nexport const START_CREATE_STRATEGY = 'START_CREATE_STRATEGY';\nexport const START_UPDATE_STRATEGY = 'START_UPDATE_STRATEGY';\nexport const RECEIVE_STRATEGIES = 'RECEIVE_STRATEGIES';\nexport const ERROR_RECEIVE_STRATEGIES = 'ERROR_RECEIVE_STRATEGIES';\nexport const ERROR_CREATING_STRATEGY = 'ERROR_CREATING_STRATEGY';\nexport const ERROR_UPDATING_STRATEGY = 'ERROR_UPDATING_STRATEGY';\n\nconst addStrategy = (strategy) => ({ type: ADD_STRATEGY, strategy });\nconst createRemoveStrategy = (strategy) => ({ type: REMOVE_STRATEGY, strategy });\nconst updatedStrategy = (strategy) => ({ type: UPDATE_STRATEGY, strategy });\n\nconst errorCreatingStrategy = (statusCode) => ({\n type: ERROR_CREATING_STRATEGY,\n statusCode,\n});\n\nconst startRequest = () => ({ type: REQUEST_STRATEGIES });\n\n\nconst receiveStrategies = (json) => ({\n type: RECEIVE_STRATEGIES,\n value: json.strategies,\n});\n\nconst startCreate = () => ({ type: START_CREATE_STRATEGY });\n\nconst errorReceiveStrategies = (statusCode) => ({\n type: ERROR_RECEIVE_STRATEGIES,\n statusCode,\n});\n\nconst startUpdate = () => ({ type: START_UPDATE_STRATEGY });\n\nfunction dispatchAndThrow (dispatch, type) {\n return (error) => {\n dispatch({ type, error, receivedAt: Date.now() });\n throw error;\n };\n}\n\nexport function fetchStrategies () {\n return dispatch => {\n dispatch(startRequest());\n\n return api.fetchAll()\n .then(json => dispatch(receiveStrategies(json)))\n .catch(error => dispatch(errorReceiveStrategies(error)));\n };\n}\n\nexport function createStrategy (strategy) {\n return dispatch => {\n dispatch(startCreate());\n\n return api.create(strategy)\n .then(() => dispatch(addStrategy(strategy)))\n .catch(error => dispatch(errorCreatingStrategy(error)));\n };\n}\n\nexport function updateStrategy (strategy) {\n return dispatch => {\n dispatch(startUpdate());\n\n return api.update(strategy)\n .then(() => dispatch(updatedStrategy(strategy)))\n .catch(dispatchAndThrow(dispatch, ERROR_UPDATING_STRATEGY));\n };\n}\n\n\nexport function removeStrategy (strategy) {\n return dispatch => api.remove(strategy)\n .then(() => dispatch(createRemoveStrategy(strategy)))\n .catch(error => dispatch(errorCreatingStrategy(error)));\n}\n\nexport function getApplicationsWithStrategy (strategyName) {\n return fetchApplicationsWithStrategyName(strategyName);\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/strategy/actions.js","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar fiveArgumentPooler = function (a1, a2, a3, a4, a5) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4, a5);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4, a5);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler,\n fiveArgumentPooler: fiveArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/PooledClass.js\n// module id = 28\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.locationsAreEqual = exports.statesAreEqual = exports.createLocation = exports.createQuery = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _PathUtils = require('./PathUtils');\n\nvar _Actions = require('./Actions');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createQuery = exports.createQuery = function createQuery(props) {\n return _extends(Object.create(null), props);\n};\n\nvar createLocation = exports.createLocation = function createLocation() {\n var input = arguments.length <= 0 || arguments[0] === undefined ? '/' : arguments[0];\n var action = arguments.length <= 1 || arguments[1] === undefined ? _Actions.POP : arguments[1];\n var key = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];\n\n var object = typeof input === 'string' ? (0, _PathUtils.parsePath)(input) : input;\n\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(!object.path, 'Location descriptor objects should have a `pathname`, not a `path`.') : void 0;\n\n var pathname = object.pathname || '/';\n var search = object.search || '';\n var hash = object.hash || '';\n var state = object.state;\n\n return {\n pathname: pathname,\n search: search,\n hash: hash,\n state: state,\n action: action,\n key: key\n };\n};\n\nvar isDate = function isDate(object) {\n return Object.prototype.toString.call(object) === '[object Date]';\n};\n\nvar statesAreEqual = exports.statesAreEqual = function statesAreEqual(a, b) {\n if (a === b) return true;\n\n var typeofA = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var typeofB = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (typeofA !== typeofB) return false;\n\n !(typeofA !== 'function') ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You must not store functions in location state') : (0, _invariant2.default)(false) : void 0;\n\n // Not the same object, but same type.\n if (typeofA === 'object') {\n !!(isDate(a) && isDate(b)) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You must not store Date objects in location state') : (0, _invariant2.default)(false) : void 0;\n\n if (!Array.isArray(a)) {\n var keysofA = Object.keys(a);\n var keysofB = Object.keys(b);\n return keysofA.length === keysofB.length && keysofA.every(function (key) {\n return statesAreEqual(a[key], b[key]);\n });\n }\n\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return statesAreEqual(item, b[index]);\n });\n }\n\n // All other serializable types (string, number, boolean)\n // should be strict equal.\n return false;\n};\n\nvar locationsAreEqual = exports.locationsAreEqual = function locationsAreEqual(a, b) {\n return a.key === b.key &&\n // a.action === b.action && // Different action !== location change.\n a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && statesAreEqual(a.state, b.state);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/LocationUtils.js\n// module id = 29\n// module chunks = 0","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = require('./DOMNamespaces');\nvar setInnerHTML = require('./setInnerHTML');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setTextContent = require('./setTextContent');\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\n/**\n * In IE (8-11) and Edge, appending nodes with no children is dramatically\n * faster than appending a full subtree, so we essentially queue up the\n * .appendChild calls here and apply them so each node is added to its parent\n * before any children are added.\n *\n * In other browsers, doing so is slower or neutral compared to the other order\n * (in Firefox, twice as slow) so we only do this inversion in IE.\n *\n * See https://github.com/spicyj/innerhtml-vs-createelement-vs-clonenode.\n */\nvar enableLazy = typeof document !== 'undefined' && typeof document.documentMode === 'number' || typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && /\\bEdge\\/\\d/.test(navigator.userAgent);\n\nfunction insertTreeChildren(tree) {\n if (!enableLazy) {\n return;\n }\n var node = tree.node;\n var children = tree.children;\n if (children.length) {\n for (var i = 0; i < children.length; i++) {\n insertTreeBefore(node, children[i], null);\n }\n } else if (tree.html != null) {\n setInnerHTML(node, tree.html);\n } else if (tree.text != null) {\n setTextContent(node, tree.text);\n }\n}\n\nvar insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode, tree, referenceNode) {\n // DocumentFragments aren't actually part of the DOM after insertion so\n // appending children won't update the DOM. We need to ensure the fragment\n // is properly populated first, breaking out of our lazy approach for just\n // this level. Also, some <object> plugins (like Flash Player) will read\n // <param> nodes immediately upon insertion into the DOM, so <object>\n // must also be populated prior to insertion into the DOM.\n if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {\n insertTreeChildren(tree);\n parentNode.insertBefore(tree.node, referenceNode);\n } else {\n parentNode.insertBefore(tree.node, referenceNode);\n insertTreeChildren(tree);\n }\n});\n\nfunction replaceChildWithTree(oldNode, newTree) {\n oldNode.parentNode.replaceChild(newTree.node, oldNode);\n insertTreeChildren(newTree);\n}\n\nfunction queueChild(parentTree, childTree) {\n if (enableLazy) {\n parentTree.children.push(childTree);\n } else {\n parentTree.node.appendChild(childTree.node);\n }\n}\n\nfunction queueHTML(tree, html) {\n if (enableLazy) {\n tree.html = html;\n } else {\n setInnerHTML(tree.node, html);\n }\n}\n\nfunction queueText(tree, text) {\n if (enableLazy) {\n tree.text = text;\n } else {\n setTextContent(tree.node, text);\n }\n}\n\nfunction toString() {\n return this.node.nodeName;\n}\n\nfunction DOMLazyTree(node) {\n return {\n node: node,\n children: [],\n html: null,\n text: null,\n toString: toString\n };\n}\n\nDOMLazyTree.insertTreeBefore = insertTreeBefore;\nDOMLazyTree.replaceChildWithTree = replaceChildWithTree;\nDOMLazyTree.queueChild = queueChild;\nDOMLazyTree.queueHTML = queueHTML;\nDOMLazyTree.queueText = queueText;\n\nmodule.exports = DOMLazyTree;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/DOMLazyTree.js\n// module id = 30\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nfunction checkMask(value, bitmask) {\n return (value & bitmask) === bitmask;\n}\n\nvar DOMPropertyInjection = {\n /**\n * Mapping from normalized, camelcased property names to a configuration that\n * specifies how the associated DOM property should be accessed or rendered.\n */\n MUST_USE_PROPERTY: 0x1,\n HAS_BOOLEAN_VALUE: 0x4,\n HAS_NUMERIC_VALUE: 0x8,\n HAS_POSITIVE_NUMERIC_VALUE: 0x10 | 0x8,\n HAS_OVERLOADED_BOOLEAN_VALUE: 0x20,\n\n /**\n * Inject some specialized knowledge about the DOM. This takes a config object\n * with the following properties:\n *\n * isCustomAttribute: function that given an attribute name will return true\n * if it can be inserted into the DOM verbatim. Useful for data-* or aria-*\n * attributes where it's impossible to enumerate all of the possible\n * attribute names,\n *\n * Properties: object mapping DOM property name to one of the\n * DOMPropertyInjection constants or null. If your attribute isn't in here,\n * it won't get written to the DOM.\n *\n * DOMAttributeNames: object mapping React attribute name to the DOM\n * attribute name. Attribute names not specified use the **lowercase**\n * normalized name.\n *\n * DOMAttributeNamespaces: object mapping React attribute name to the DOM\n * attribute namespace URL. (Attribute names not specified use no namespace.)\n *\n * DOMPropertyNames: similar to DOMAttributeNames but for DOM properties.\n * Property names not specified use the normalized name.\n *\n * DOMMutationMethods: Properties that require special mutation methods. If\n * `value` is undefined, the mutation method should unset the property.\n *\n * @param {object} domPropertyConfig the config as described above.\n */\n injectDOMPropertyConfig: function (domPropertyConfig) {\n var Injection = DOMPropertyInjection;\n var Properties = domPropertyConfig.Properties || {};\n var DOMAttributeNamespaces = domPropertyConfig.DOMAttributeNamespaces || {};\n var DOMAttributeNames = domPropertyConfig.DOMAttributeNames || {};\n var DOMPropertyNames = domPropertyConfig.DOMPropertyNames || {};\n var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};\n\n if (domPropertyConfig.isCustomAttribute) {\n DOMProperty._isCustomAttributeFunctions.push(domPropertyConfig.isCustomAttribute);\n }\n\n for (var propName in Properties) {\n !!DOMProperty.properties.hasOwnProperty(propName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'injectDOMPropertyConfig(...): You\\'re trying to inject DOM property \\'%s\\' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.', propName) : _prodInvariant('48', propName) : void 0;\n\n var lowerCased = propName.toLowerCase();\n var propConfig = Properties[propName];\n\n var propertyInfo = {\n attributeName: lowerCased,\n attributeNamespace: null,\n propertyName: propName,\n mutationMethod: null,\n\n mustUseProperty: checkMask(propConfig, Injection.MUST_USE_PROPERTY),\n hasBooleanValue: checkMask(propConfig, Injection.HAS_BOOLEAN_VALUE),\n hasNumericValue: checkMask(propConfig, Injection.HAS_NUMERIC_VALUE),\n hasPositiveNumericValue: checkMask(propConfig, Injection.HAS_POSITIVE_NUMERIC_VALUE),\n hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE)\n };\n !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s', propName) : _prodInvariant('50', propName) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[lowerCased] = propName;\n }\n\n if (DOMAttributeNames.hasOwnProperty(propName)) {\n var attributeName = DOMAttributeNames[propName];\n propertyInfo.attributeName = attributeName;\n if (process.env.NODE_ENV !== 'production') {\n DOMProperty.getPossibleStandardName[attributeName] = propName;\n }\n }\n\n if (DOMAttributeNamespaces.hasOwnProperty(propName)) {\n propertyInfo.attributeNamespace = DOMAttributeNamespaces[propName];\n }\n\n if (DOMPropertyNames.hasOwnProperty(propName)) {\n propertyInfo.propertyName = DOMPropertyNames[propName];\n }\n\n if (DOMMutationMethods.hasOwnProperty(propName)) {\n propertyInfo.mutationMethod = DOMMutationMethods[propName];\n }\n\n DOMProperty.properties[propName] = propertyInfo;\n }\n }\n};\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = ':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';\n/* eslint-enable max-len */\n\n/**\n * DOMProperty exports lookup objects that can be used like functions:\n *\n * > DOMProperty.isValid['id']\n * true\n * > DOMProperty.isValid['foobar']\n * undefined\n *\n * Although this may be confusing, it performs better in general.\n *\n * @see http://jsperf.com/key-exists\n * @see http://jsperf.com/key-missing\n */\nvar DOMProperty = {\n\n ID_ATTRIBUTE_NAME: 'data-reactid',\n ROOT_ATTRIBUTE_NAME: 'data-reactroot',\n\n ATTRIBUTE_NAME_START_CHAR: ATTRIBUTE_NAME_START_CHAR,\n ATTRIBUTE_NAME_CHAR: ATTRIBUTE_NAME_START_CHAR + '\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040',\n\n /**\n * Map from property \"standard name\" to an object with info about how to set\n * the property in the DOM. Each object contains:\n *\n * attributeName:\n * Used when rendering markup or with `*Attribute()`.\n * attributeNamespace\n * propertyName:\n * Used on DOM node instances. (This includes properties that mutate due to\n * external factors.)\n * mutationMethod:\n * If non-null, used instead of the property or `setAttribute()` after\n * initial render.\n * mustUseProperty:\n * Whether the property must be accessed and mutated as an object property.\n * hasBooleanValue:\n * Whether the property should be removed when set to a falsey value.\n * hasNumericValue:\n * Whether the property must be numeric or parse as a numeric and should be\n * removed when set to a falsey value.\n * hasPositiveNumericValue:\n * Whether the property must be positive numeric or parse as a positive\n * numeric and should be removed when set to a falsey value.\n * hasOverloadedBooleanValue:\n * Whether the property can be used as a flag as well as with a value.\n * Removed when strictly equal to false; present without a value when\n * strictly equal to true; present with a value otherwise.\n */\n properties: {},\n\n /**\n * Mapping from lowercase property names to the properly cased version, used\n * to warn in the case of missing properties. Available only in __DEV__.\n *\n * autofocus is predefined, because adding it to the property whitelist\n * causes unintended side effects.\n *\n * @type {Object}\n */\n getPossibleStandardName: process.env.NODE_ENV !== 'production' ? { autofocus: 'autoFocus' } : null,\n\n /**\n * All of the isCustomAttribute() functions that have been injected.\n */\n _isCustomAttributeFunctions: [],\n\n /**\n * Checks whether a property name is a custom attribute.\n * @method\n */\n isCustomAttribute: function (attributeName) {\n for (var i = 0; i < DOMProperty._isCustomAttributeFunctions.length; i++) {\n var isCustomAttributeFn = DOMProperty._isCustomAttributeFunctions[i];\n if (isCustomAttributeFn(attributeName)) {\n return true;\n }\n }\n return false;\n },\n\n injection: DOMPropertyInjection\n};\n\nmodule.exports = DOMProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/DOMProperty.js\n// module id = 31\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactRef = require('./ReactRef');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Helper to call ReactRef.attachRefs with this composite component, split out\n * to avoid allocations in the transaction mount-ready queue.\n */\nfunction attachRefs() {\n ReactRef.attachRefs(this, this._currentElement);\n}\n\nvar ReactReconciler = {\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} the containing host component instance\n * @param {?object} info about the host container\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (internalInstance, transaction, hostParent, hostContainerInfo, context, parentDebugID // 0 in production and for roots\n ) {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeMountComponent(internalInstance._debugID, internalInstance._currentElement, parentDebugID);\n }\n }\n var markup = internalInstance.mountComponent(transaction, hostParent, hostContainerInfo, context, parentDebugID);\n if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);\n }\n }\n return markup;\n },\n\n /**\n * Returns a value that can be passed to\n * ReactComponentEnvironment.replaceNodeWithMarkup.\n */\n getHostNode: function (internalInstance) {\n return internalInstance.getHostNode();\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (internalInstance, safely) {\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUnmountComponent(internalInstance._debugID);\n }\n }\n ReactRef.detachRefs(internalInstance, internalInstance._currentElement);\n internalInstance.unmountComponent(safely);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Update a component using a new element.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @internal\n */\n receiveComponent: function (internalInstance, nextElement, transaction, context) {\n var prevElement = internalInstance._currentElement;\n\n if (nextElement === prevElement && context === internalInstance._context) {\n // Since elements are immutable after the owner is rendered,\n // we can do a cheap identity compare here to determine if this is a\n // superfluous reconcile. It's possible for state to be mutable but such\n // change should trigger an update of the owner which would recreate\n // the element. We explicitly check for the existence of an owner since\n // it's possible for an element created outside a composite to be\n // deeply mutated and reused.\n\n // TODO: Bailing out early is just a perf optimization right?\n // TODO: Removing the return statement should affect correctness?\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, nextElement);\n }\n }\n\n var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);\n\n if (refsChanged) {\n ReactRef.detachRefs(internalInstance, prevElement);\n }\n\n internalInstance.receiveComponent(nextElement, transaction, context);\n\n if (refsChanged && internalInstance._currentElement && internalInstance._currentElement.ref != null) {\n transaction.getReactMountReady().enqueue(attachRefs, internalInstance);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n },\n\n /**\n * Flush any dirty changes in a component.\n *\n * @param {ReactComponent} internalInstance\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {\n if (internalInstance._updateBatchNumber !== updateBatchNumber) {\n // The component's enqueued batch number should always be the current\n // batch or the following one.\n process.env.NODE_ENV !== 'production' ? warning(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : void 0;\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(internalInstance._debugID, internalInstance._currentElement);\n }\n }\n internalInstance.performUpdateIfNecessary(transaction);\n if (process.env.NODE_ENV !== 'production') {\n if (internalInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);\n }\n }\n }\n\n};\n\nmodule.exports = ReactReconciler;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactReconciler.js\n// module id = 32\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nexports.default = function (displayName, defaultClassName) {\n var element = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'div';\n\n var fn = function fn(props) {\n var className = props.className,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'children']);\n\n return _react2.default.createElement(element, _extends({\n className: (0, _classnames2.default)(defaultClassName, className)\n }, otherProps), children);\n };\n\n fn.displayName = displayName;\n fn.propTypes = {\n className: _react.PropTypes.string\n };\n\n return fn;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/utils/basicClassCreator.js\n// module id = 33\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.compilePattern = compilePattern;\nexports.matchPattern = matchPattern;\nexports.getParamNames = getParamNames;\nexports.getParams = getParams;\nexports.formatPattern = formatPattern;\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction escapeRegExp(string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction _compilePattern(pattern) {\n var regexpSource = '';\n var paramNames = [];\n var tokens = [];\n\n var match = void 0,\n lastIndex = 0,\n matcher = /:([a-zA-Z_$][a-zA-Z0-9_$]*)|\\*\\*|\\*|\\(|\\)/g;\n while (match = matcher.exec(pattern)) {\n if (match.index !== lastIndex) {\n tokens.push(pattern.slice(lastIndex, match.index));\n regexpSource += escapeRegExp(pattern.slice(lastIndex, match.index));\n }\n\n if (match[1]) {\n regexpSource += '([^/]+)';\n paramNames.push(match[1]);\n } else if (match[0] === '**') {\n regexpSource += '(.*)';\n paramNames.push('splat');\n } else if (match[0] === '*') {\n regexpSource += '(.*?)';\n paramNames.push('splat');\n } else if (match[0] === '(') {\n regexpSource += '(?:';\n } else if (match[0] === ')') {\n regexpSource += ')?';\n }\n\n tokens.push(match[0]);\n\n lastIndex = matcher.lastIndex;\n }\n\n if (lastIndex !== pattern.length) {\n tokens.push(pattern.slice(lastIndex, pattern.length));\n regexpSource += escapeRegExp(pattern.slice(lastIndex, pattern.length));\n }\n\n return {\n pattern: pattern,\n regexpSource: regexpSource,\n paramNames: paramNames,\n tokens: tokens\n };\n}\n\nvar CompiledPatternsCache = Object.create(null);\n\nfunction compilePattern(pattern) {\n if (!CompiledPatternsCache[pattern]) CompiledPatternsCache[pattern] = _compilePattern(pattern);\n\n return CompiledPatternsCache[pattern];\n}\n\n/**\n * Attempts to match a pattern on the given pathname. Patterns may use\n * the following special characters:\n *\n * - :paramName Matches a URL segment up to the next /, ?, or #. The\n * captured string is considered a \"param\"\n * - () Wraps a segment of the URL that is optional\n * - * Consumes (non-greedy) all characters up to the next\n * character in the pattern, or to the end of the URL if\n * there is none\n * - ** Consumes (greedy) all characters up to the next character\n * in the pattern, or to the end of the URL if there is none\n *\n * The function calls callback(error, matched) when finished.\n * The return value is an object with the following properties:\n *\n * - remainingPathname\n * - paramNames\n * - paramValues\n */\nfunction matchPattern(pattern, pathname) {\n // Ensure pattern starts with leading slash for consistency with pathname.\n if (pattern.charAt(0) !== '/') {\n pattern = '/' + pattern;\n }\n\n var _compilePattern2 = compilePattern(pattern),\n regexpSource = _compilePattern2.regexpSource,\n paramNames = _compilePattern2.paramNames,\n tokens = _compilePattern2.tokens;\n\n if (pattern.charAt(pattern.length - 1) !== '/') {\n regexpSource += '/?'; // Allow optional path separator at end.\n }\n\n // Special-case patterns like '*' for catch-all routes.\n if (tokens[tokens.length - 1] === '*') {\n regexpSource += '$';\n }\n\n var match = pathname.match(new RegExp('^' + regexpSource, 'i'));\n if (match == null) {\n return null;\n }\n\n var matchedPath = match[0];\n var remainingPathname = pathname.substr(matchedPath.length);\n\n if (remainingPathname) {\n // Require that the match ends at a path separator, if we didn't match\n // the full path, so any remaining pathname is a new path segment.\n if (matchedPath.charAt(matchedPath.length - 1) !== '/') {\n return null;\n }\n\n // If there is a remaining pathname, treat the path separator as part of\n // the remaining pathname for properly continuing the match.\n remainingPathname = '/' + remainingPathname;\n }\n\n return {\n remainingPathname: remainingPathname,\n paramNames: paramNames,\n paramValues: match.slice(1).map(function (v) {\n return v && decodeURIComponent(v);\n })\n };\n}\n\nfunction getParamNames(pattern) {\n return compilePattern(pattern).paramNames;\n}\n\nfunction getParams(pattern, pathname) {\n var match = matchPattern(pattern, pathname);\n if (!match) {\n return null;\n }\n\n var paramNames = match.paramNames,\n paramValues = match.paramValues;\n\n var params = {};\n\n paramNames.forEach(function (paramName, index) {\n params[paramName] = paramValues[index];\n });\n\n return params;\n}\n\n/**\n * Returns a version of the given pattern with params interpolated. Throws\n * if there is a dynamic segment of the pattern for which there is no param.\n */\nfunction formatPattern(pattern, params) {\n params = params || {};\n\n var _compilePattern3 = compilePattern(pattern),\n tokens = _compilePattern3.tokens;\n\n var parenCount = 0,\n pathname = '',\n splatIndex = 0,\n parenHistory = [];\n\n var token = void 0,\n paramName = void 0,\n paramValue = void 0;\n for (var i = 0, len = tokens.length; i < len; ++i) {\n token = tokens[i];\n\n if (token === '*' || token === '**') {\n paramValue = Array.isArray(params.splat) ? params.splat[splatIndex++] : params.splat;\n\n !(paramValue != null || parenCount > 0) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Missing splat #%s for path \"%s\"', splatIndex, pattern) : (0, _invariant2.default)(false) : void 0;\n\n if (paramValue != null) pathname += encodeURI(paramValue);\n } else if (token === '(') {\n parenHistory[parenCount] = '';\n parenCount += 1;\n } else if (token === ')') {\n var parenText = parenHistory.pop();\n parenCount -= 1;\n\n if (parenCount) parenHistory[parenCount - 1] += parenText;else pathname += parenText;\n } else if (token.charAt(0) === ':') {\n paramName = token.substring(1);\n paramValue = params[paramName];\n\n !(paramValue != null || parenCount > 0) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Missing \"%s\" parameter for path \"%s\"', paramName, pattern) : (0, _invariant2.default)(false) : void 0;\n\n if (paramValue == null) {\n if (parenCount) {\n parenHistory[parenCount - 1] = '';\n\n var curTokenIdx = tokens.indexOf(token);\n var tokensSubset = tokens.slice(curTokenIdx, tokens.length);\n var nextParenIdx = -1;\n\n for (var _i = 0; _i < tokensSubset.length; _i++) {\n if (tokensSubset[_i] == ')') {\n nextParenIdx = _i;\n break;\n }\n }\n\n !(nextParenIdx > 0) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Path \"%s\" is missing end paren at segment \"%s\"', pattern, tokensSubset.join('')) : (0, _invariant2.default)(false) : void 0;\n\n // jump to ending paren\n i = curTokenIdx + nextParenIdx - 1;\n }\n } else if (parenCount) parenHistory[parenCount - 1] += encodeURIComponent(paramValue);else pathname += encodeURIComponent(paramValue);\n } else {\n if (parenCount) parenHistory[parenCount - 1] += token;else pathname += token;\n }\n }\n\n !(parenCount <= 0) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Path \"%s\" is missing end paren', pattern) : (0, _invariant2.default)(false) : void 0;\n\n return pathname.replace(/\\/+/g, '/');\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/PatternUtils.js\n// module id = 34\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.default = routerWarning;\nexports._resetWarned = _resetWarned;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar warned = {};\n\nfunction routerWarning(falseToWarn, message) {\n // Only issue deprecation warnings once.\n if (message.indexOf('deprecated') !== -1) {\n if (warned[message]) {\n return;\n }\n\n warned[message] = true;\n }\n\n message = '[react-router] ' + message;\n\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n _warning2.default.apply(undefined, [falseToWarn, message].concat(args));\n}\n\nfunction _resetWarned() {\n warned = {};\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/routerWarning.js\n// module id = 35\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactChildren = require('./ReactChildren');\nvar ReactComponent = require('./ReactComponent');\nvar ReactPureComponent = require('./ReactPureComponent');\nvar ReactClass = require('./ReactClass');\nvar ReactDOMFactories = require('./ReactDOMFactories');\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypes = require('./ReactPropTypes');\nvar ReactVersion = require('./ReactVersion');\n\nvar onlyChild = require('./onlyChild');\nvar warning = require('fbjs/lib/warning');\n\nvar createElement = ReactElement.createElement;\nvar createFactory = ReactElement.createFactory;\nvar cloneElement = ReactElement.cloneElement;\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactElementValidator = require('./ReactElementValidator');\n createElement = ReactElementValidator.createElement;\n createFactory = ReactElementValidator.createFactory;\n cloneElement = ReactElementValidator.cloneElement;\n}\n\nvar __spread = _assign;\n\nif (process.env.NODE_ENV !== 'production') {\n var warned = false;\n __spread = function () {\n process.env.NODE_ENV !== 'production' ? warning(warned, 'React.__spread is deprecated and should not be used. Use ' + 'Object.assign directly or another helper function with similar ' + 'semantics. You may be seeing this warning due to your compiler. ' + 'See https://fb.me/react-spread-deprecation for more details.') : void 0;\n warned = true;\n return _assign.apply(null, arguments);\n };\n}\n\nvar React = {\n\n // Modern\n\n Children: {\n map: ReactChildren.map,\n forEach: ReactChildren.forEach,\n count: ReactChildren.count,\n toArray: ReactChildren.toArray,\n only: onlyChild\n },\n\n Component: ReactComponent,\n PureComponent: ReactPureComponent,\n\n createElement: createElement,\n cloneElement: cloneElement,\n isValidElement: ReactElement.isValidElement,\n\n // Classic\n\n PropTypes: ReactPropTypes,\n createClass: ReactClass.createClass,\n createFactory: createFactory,\n createMixin: function (mixin) {\n // Currently a noop. Will be used to validate and trace mixins.\n return mixin;\n },\n\n // This looks DOM specific but these are actually isomorphic helpers\n // since they are just generating DOM strings.\n DOM: ReactDOMFactories,\n\n version: ReactVersion,\n\n // Deprecated hook for JSX spread, don't use this for anything.\n __spread: __spread\n};\n\nmodule.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/React.js\n// module id = 36\n// module chunks = 0","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar warning = require('fbjs/lib/warning');\nvar canDefineProperty = require('./canDefineProperty');\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\n\nvar specialPropKeyWarningShown, specialPropRefWarningShown;\n\nfunction hasValidRef(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n if (process.env.NODE_ENV !== 'production') {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName) : void 0;\n }\n };\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, no instanceof check\n * will work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} key\n * @param {string|object} ref\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @param {*} owner\n * @param {*} props\n * @internal\n */\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allow us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n if (process.env.NODE_ENV !== 'production') {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {};\n\n // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n if (canDefineProperty) {\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n });\n // self and source are DEV only properties.\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n });\n // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n } else {\n element._store.validated = false;\n element._self = self;\n element._source = source;\n }\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n\n/**\n * Create and return a new ReactElement of the given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement\n */\nReactElement.createElement = function (type, config, children) {\n var propName;\n\n // Reserved names are extracted\n var props = {};\n\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source;\n // Remaining properties are added to a new props object\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n if (process.env.NODE_ENV !== 'production') {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n props.children = childArray;\n }\n\n // Resolve default props\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (key || ref) {\n if (typeof props.$$typeof === 'undefined' || props.$$typeof !== REACT_ELEMENT_TYPE) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n }\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n};\n\n/**\n * Return a function that produces ReactElements of a given type.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory\n */\nReactElement.createFactory = function (type) {\n var factory = ReactElement.createElement.bind(null, type);\n // Expose the type on the factory and the prototype so that it can be\n // easily accessed on elements. E.g. `<Foo />.type === Foo`.\n // This should not be named `constructor` since this may not be the function\n // that created the element, and it may not even be a constructor.\n // Legacy hook TODO: Warn if this is accessed\n factory.type = type;\n return factory;\n};\n\nReactElement.cloneAndReplaceKey = function (oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n\n return newElement;\n};\n\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement\n */\nReactElement.cloneElement = function (element, config, children) {\n var propName;\n\n // Original props are copied\n var props = _assign({}, element.props);\n\n // Reserved names are extracted\n var key = element.key;\n var ref = element.ref;\n // Self is preserved since the owner is preserved.\n var self = element._self;\n // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n var source = element._source;\n\n // Owner will be preserved, unless ref is overridden\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n if (hasValidKey(config)) {\n key = '' + config.key;\n }\n\n // Remaining properties override existing props\n var defaultProps;\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n }\n\n // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n var childrenLength = arguments.length - 2;\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n};\n\n/**\n * Verifies the object is a ReactElement.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a valid component.\n * @final\n */\nReactElement.isValidElement = function (object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n};\n\nmodule.exports = ReactElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactElement.js\n// module id = 37\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n'use strict';\n\n/**\n * WARNING: DO NOT manually require this module.\n * This is a replacement for `invariant(...)` used by the error code system\n * and will _only_ be required by the corresponding babel pass.\n * It always throws.\n */\n\nfunction reactProdInvariant(code) {\n var argCount = arguments.length - 1;\n\n var message = 'Minified React error #' + code + '; visit ' + 'http://facebook.github.io/react/docs/error-decoder.html?invariant=' + code;\n\n for (var argIdx = 0; argIdx < argCount; argIdx++) {\n message += '&args[]=' + encodeURIComponent(arguments[argIdx + 1]);\n }\n\n message += ' for the full message or use the non-minified dev environment' + ' for full errors and additional helpful warnings.';\n\n var error = new Error(message);\n error.name = 'Invariant Violation';\n error.framesToPop = 1; // we don't care about reactProdInvariant's own frame\n\n throw error;\n}\n\nmodule.exports = reactProdInvariant;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/reactProdInvariant.js\n// module id = 38\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyObject = {};\n\nif (process.env.NODE_ENV !== 'production') {\n Object.freeze(emptyObject);\n}\n\nmodule.exports = emptyObject;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/emptyObject.js\n// module id = 39\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Internal store for event listeners\n */\nvar listenerBank = {};\n\n/**\n * Internal queue of events that have accumulated their dispatches and are\n * waiting to have their dispatches executed.\n */\nvar eventQueue = null;\n\n/**\n * Dispatches an event and releases it back into the pool, unless persistent.\n *\n * @param {?object} event Synthetic event to be dispatched.\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @private\n */\nvar executeDispatchesAndRelease = function (event, simulated) {\n if (event) {\n EventPluginUtils.executeDispatchesInOrder(event, simulated);\n\n if (!event.isPersistent()) {\n event.constructor.release(event);\n }\n }\n};\nvar executeDispatchesAndReleaseSimulated = function (e) {\n return executeDispatchesAndRelease(e, true);\n};\nvar executeDispatchesAndReleaseTopLevel = function (e) {\n return executeDispatchesAndRelease(e, false);\n};\n\nvar getDictionaryKey = function (inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n};\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n switch (name) {\n case 'onClick':\n case 'onClickCapture':\n case 'onDoubleClick':\n case 'onDoubleClickCapture':\n case 'onMouseDown':\n case 'onMouseDownCapture':\n case 'onMouseMove':\n case 'onMouseMoveCapture':\n case 'onMouseUp':\n case 'onMouseUpCapture':\n return !!(props.disabled && isInteractive(type));\n default:\n return false;\n }\n}\n\n/**\n * This is a unified interface for event plugins to be installed and configured.\n *\n * Event plugins can implement the following properties:\n *\n * `extractEvents` {function(string, DOMEventTarget, string, object): *}\n * Required. When a top-level event is fired, this method is expected to\n * extract synthetic events that will in turn be queued and dispatched.\n *\n * `eventTypes` {object}\n * Optional, plugins that fire events must publish a mapping of registration\n * names that are used to register listeners. Values of this mapping must\n * be objects that contain `registrationName` or `phasedRegistrationNames`.\n *\n * `executeDispatch` {function(object, function, string)}\n * Optional, allows plugins to override how an event gets dispatched. By\n * default, the listener is simply invoked.\n *\n * Each plugin that is injected into `EventsPluginHub` is immediately operable.\n *\n * @public\n */\nvar EventPluginHub = {\n\n /**\n * Methods for injecting dependencies.\n */\n injection: {\n\n /**\n * @param {array} InjectedEventPluginOrder\n * @public\n */\n injectEventPluginOrder: EventPluginRegistry.injectEventPluginOrder,\n\n /**\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n */\n injectEventPluginsByName: EventPluginRegistry.injectEventPluginsByName\n\n },\n\n /**\n * Stores `listener` at `listenerBank[registrationName][key]`. Is idempotent.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {function} listener The callback to store.\n */\n putListener: function (inst, registrationName, listener) {\n !(typeof listener === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;\n\n var key = getDictionaryKey(inst);\n var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});\n bankForRegistrationName[key] = listener;\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.didPutListener) {\n PluginModule.didPutListener(inst, registrationName, listener);\n }\n },\n\n /**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n getListener: function (inst, registrationName) {\n // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not\n // live here; needs to be moved to a better place soon\n var bankForRegistrationName = listenerBank[registrationName];\n if (shouldPreventMouseEvent(registrationName, inst._currentElement.type, inst._currentElement.props)) {\n return null;\n }\n var key = getDictionaryKey(inst);\n return bankForRegistrationName && bankForRegistrationName[key];\n },\n\n /**\n * Deletes a listener from the registration bank.\n *\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n */\n deleteListener: function (inst, registrationName) {\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n var bankForRegistrationName = listenerBank[registrationName];\n // TODO: This should never be null -- when is it?\n if (bankForRegistrationName) {\n var key = getDictionaryKey(inst);\n delete bankForRegistrationName[key];\n }\n },\n\n /**\n * Deletes all listeners for the DOM element with the supplied ID.\n *\n * @param {object} inst The instance, which is the source of events.\n */\n deleteAllListeners: function (inst) {\n var key = getDictionaryKey(inst);\n for (var registrationName in listenerBank) {\n if (!listenerBank.hasOwnProperty(registrationName)) {\n continue;\n }\n\n if (!listenerBank[registrationName][key]) {\n continue;\n }\n\n var PluginModule = EventPluginRegistry.registrationNameModules[registrationName];\n if (PluginModule && PluginModule.willDeleteListener) {\n PluginModule.willDeleteListener(inst, registrationName);\n }\n\n delete listenerBank[registrationName][key];\n }\n },\n\n /**\n * Allows registered plugins an opportunity to extract events from top-level\n * native browser events.\n *\n * @return {*} An accumulation of synthetic events.\n * @internal\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events;\n var plugins = EventPluginRegistry.plugins;\n for (var i = 0; i < plugins.length; i++) {\n // Not every plugin in the ordering may be loaded at runtime.\n var possiblePlugin = plugins[i];\n if (possiblePlugin) {\n var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n if (extractedEvents) {\n events = accumulateInto(events, extractedEvents);\n }\n }\n }\n return events;\n },\n\n /**\n * Enqueues a synthetic event that should be dispatched when\n * `processEventQueue` is invoked.\n *\n * @param {*} events An accumulation of synthetic events.\n * @internal\n */\n enqueueEvents: function (events) {\n if (events) {\n eventQueue = accumulateInto(eventQueue, events);\n }\n },\n\n /**\n * Dispatches all synthetic events on the event queue.\n *\n * @internal\n */\n processEventQueue: function (simulated) {\n // Set `eventQueue` to null before processing it so that we can tell if more\n // events get enqueued while processing.\n var processingEventQueue = eventQueue;\n eventQueue = null;\n if (simulated) {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);\n } else {\n forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);\n }\n !!eventQueue ? process.env.NODE_ENV !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;\n // This would be a good time to rethrow if any of the event handlers threw.\n ReactErrorUtils.rethrowCaughtError();\n },\n\n /**\n * These are needed for tests only. Do not use!\n */\n __purge: function () {\n listenerBank = {};\n },\n\n __getListenerBank: function () {\n return listenerBank;\n }\n\n};\n\nmodule.exports = EventPluginHub;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/EventPluginHub.js\n// module id = 40\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\n\nvar accumulateInto = require('./accumulateInto');\nvar forEachAccumulated = require('./forEachAccumulated');\nvar warning = require('fbjs/lib/warning');\n\nvar getListener = EventPluginHub.getListener;\n\n/**\n * Some event types have a notion of different registration names for different\n * \"phases\" of propagation. This finds listeners by a given phase.\n */\nfunction listenerAtPhase(inst, event, propagationPhase) {\n var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];\n return getListener(inst, registrationName);\n}\n\n/**\n * Tags a `SyntheticEvent` with dispatched listeners. Creating this function\n * here, allows us to not have to bind or create functions for each event.\n * Mutating the event's members allows us to not have to create a wrapping\n * \"dispatch\" object that pairs the event with the listener.\n */\nfunction accumulateDirectionalDispatches(inst, phase, event) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(inst, 'Dispatching inst must not be null') : void 0;\n }\n var listener = listenerAtPhase(inst, event, phase);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n}\n\n/**\n * Collect dispatches (must be entirely collected before dispatching - see unit\n * tests). Lazily allocate the array to conserve memory. We must loop through\n * each event and perform the traversal for each one. We cannot perform a\n * single traversal for the entire collection of events because each event may\n * have a different target.\n */\nfunction accumulateTwoPhaseDispatchesSingle(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n EventPluginUtils.traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Same as `accumulateTwoPhaseDispatchesSingle`, but skips over the targetID.\n */\nfunction accumulateTwoPhaseDispatchesSingleSkipTarget(event) {\n if (event && event.dispatchConfig.phasedRegistrationNames) {\n var targetInst = event._targetInst;\n var parentInst = targetInst ? EventPluginUtils.getParentInstance(targetInst) : null;\n EventPluginUtils.traverseTwoPhase(parentInst, accumulateDirectionalDispatches, event);\n }\n}\n\n/**\n * Accumulates without regard to direction, does not look for phased\n * registration names. Same as `accumulateDirectDispatchesSingle` but without\n * requiring that the `dispatchMarker` be the same as the dispatched ID.\n */\nfunction accumulateDispatches(inst, ignoredDirection, event) {\n if (event && event.dispatchConfig.registrationName) {\n var registrationName = event.dispatchConfig.registrationName;\n var listener = getListener(inst, registrationName);\n if (listener) {\n event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);\n event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);\n }\n }\n}\n\n/**\n * Accumulates dispatches on an `SyntheticEvent`, but only for the\n * `dispatchMarker`.\n * @param {SyntheticEvent} event\n */\nfunction accumulateDirectDispatchesSingle(event) {\n if (event && event.dispatchConfig.registrationName) {\n accumulateDispatches(event._targetInst, null, event);\n }\n}\n\nfunction accumulateTwoPhaseDispatches(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);\n}\n\nfunction accumulateTwoPhaseDispatchesSkipTarget(events) {\n forEachAccumulated(events, accumulateTwoPhaseDispatchesSingleSkipTarget);\n}\n\nfunction accumulateEnterLeaveDispatches(leave, enter, from, to) {\n EventPluginUtils.traverseEnterLeave(from, to, accumulateDispatches, leave, enter);\n}\n\nfunction accumulateDirectDispatches(events) {\n forEachAccumulated(events, accumulateDirectDispatchesSingle);\n}\n\n/**\n * A small set of propagation patterns, each of which will accept a small amount\n * of information, and generate a set of \"dispatch ready event objects\" - which\n * are sets of events that have already been annotated with a set of dispatched\n * listener functions/ids. The API is designed this way to discourage these\n * propagation strategies from actually executing the dispatches, since we\n * always want to collect the entire set of dispatches before executing event a\n * single one.\n *\n * @constructor EventPropagators\n */\nvar EventPropagators = {\n accumulateTwoPhaseDispatches: accumulateTwoPhaseDispatches,\n accumulateTwoPhaseDispatchesSkipTarget: accumulateTwoPhaseDispatchesSkipTarget,\n accumulateDirectDispatches: accumulateDirectDispatches,\n accumulateEnterLeaveDispatches: accumulateEnterLeaveDispatches\n};\n\nmodule.exports = EventPropagators;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/EventPropagators.js\n// module id = 41\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n */\n\n// TODO: Replace this with ES6: var ReactInstanceMap = new Map();\n\nvar ReactInstanceMap = {\n\n /**\n * This API should be called `delete` but we'd have to make sure to always\n * transform these to strings for IE support. When this transform is fully\n * supported we can rename it.\n */\n remove: function (key) {\n key._reactInternalInstance = undefined;\n },\n\n get: function (key) {\n return key._reactInternalInstance;\n },\n\n has: function (key) {\n return key._reactInternalInstance !== undefined;\n },\n\n set: function (key, value) {\n key._reactInternalInstance = value;\n }\n\n};\n\nmodule.exports = ReactInstanceMap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactInstanceMap.js\n// module id = 42\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\n\n/**\n * @interface UIEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar UIEventInterface = {\n view: function (event) {\n if (event.view) {\n return event.view;\n }\n\n var target = getEventTarget(event);\n if (target.window === target) {\n // target is a window object\n return target;\n }\n\n var doc = target.ownerDocument;\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n if (doc) {\n return doc.defaultView || doc.parentWindow;\n } else {\n return window;\n }\n },\n detail: function (event) {\n return event.detail || 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);\n\nmodule.exports = SyntheticUIEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticUIEvent.js\n// module id = 43\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n className: _react.PropTypes.string,\n name: _react.PropTypes.string.isRequired\n};\n\nvar Icon = function Icon(props) {\n var className = props.className,\n name = props.name,\n otherProps = _objectWithoutProperties(props, ['className', 'name']);\n\n var classes = (0, _classnames2.default)('material-icons', className);\n\n return _react2.default.createElement(\n 'i',\n _extends({ className: classes }, otherProps),\n name\n );\n};\n\nIcon.propTypes = propTypes;\n\nexports.default = Icon;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Icon/index.js\n// module id = 44\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.routes = exports.route = exports.components = exports.component = exports.history = undefined;\nexports.falsy = falsy;\n\nvar _react = require('react');\n\nvar func = _react.PropTypes.func,\n object = _react.PropTypes.object,\n arrayOf = _react.PropTypes.arrayOf,\n oneOfType = _react.PropTypes.oneOfType,\n element = _react.PropTypes.element,\n shape = _react.PropTypes.shape,\n string = _react.PropTypes.string;\nfunction falsy(props, propName, componentName) {\n if (props[propName]) return new Error('<' + componentName + '> should not have a \"' + propName + '\" prop');\n}\n\nvar history = exports.history = shape({\n listen: func.isRequired,\n push: func.isRequired,\n replace: func.isRequired,\n go: func.isRequired,\n goBack: func.isRequired,\n goForward: func.isRequired\n});\n\nvar component = exports.component = oneOfType([func, string]);\nvar components = exports.components = oneOfType([component, object]);\nvar route = exports.route = oneOfType([object, element]);\nvar routes = exports.routes = oneOfType([route, arrayOf(route)]);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/InternalPropTypes.js\n// module id = 45\n// module chunks = 0","import {\n createInc,\n createClear,\n createSet,\n createPop,\n createPush,\n createUp,\n createInit,\n} from '../store/input-actions';\n\nfunction getId (id, ownProps) {\n if (typeof id === 'function') {\n return id(ownProps); // should return array...\n }\n return [id];\n}\n\nexport function createMapper ({ id, getDefault, prepare = (v) => v }) {\n return (state, ownProps) => {\n let input;\n let initCallRequired = false;\n const scope = getId(id, ownProps);\n if (state.input.hasIn(scope)) {\n input = state.input.getIn(scope).toJS();\n } else {\n initCallRequired = true;\n input = getDefault ? getDefault(state, ownProps) : {};\n }\n\n return prepare({\n initCallRequired,\n input,\n }, state, ownProps);\n };\n}\n\nexport function createActions ({ id, prepare = (v) => v }) {\n return (dispatch, ownProps) => (prepare({\n\n clear () {\n dispatch(createClear({ id: getId(id, ownProps) }));\n },\n\n init (value) {\n dispatch(createInit({ id: getId(id, ownProps), value }));\n },\n\n setValue (key, value) {\n dispatch(createSet({ id: getId(id, ownProps), key, value }));\n },\n\n pushToList (key, value) {\n dispatch(createPush({ id: getId(id, ownProps), key, value }));\n },\n\n removeFromList (key, index) {\n dispatch(createPop({ id: getId(id, ownProps), key, index }));\n },\n\n updateInList (key, index, newValue, merge = false) {\n dispatch(createUp({ id: getId(id, ownProps), key, index, newValue, merge }));\n },\n\n incValue (key) {\n dispatch(createInc({ id: getId(id, ownProps), key }));\n },\n }, dispatch, ownProps));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/input-helpers.js","import api from '../../data/applications-api';\n\nexport const RECEIVE_ALL_APPLICATIONS = 'RECEIVE_ALL_APPLICATIONS';\nexport const ERROR_RECEIVE_ALL_APPLICATIONS = 'ERROR_RECEIVE_ALL_APPLICATIONS';\nexport const ERROR_UPDATING_APPLICATION_DATA = 'ERROR_UPDATING_APPLICATION_DATA';\n\nexport const RECEIVE_APPLICATION = 'RECEIVE_APPLICATION';\n\nconst recieveAllApplications = (json) => ({\n type: RECEIVE_ALL_APPLICATIONS,\n value: json,\n});\n\nconst recieveApplication = (json) => ({\n type: RECEIVE_APPLICATION,\n value: json,\n});\n\nconst errorReceiveApplications = (statusCode, type = ERROR_RECEIVE_ALL_APPLICATIONS) => ({\n type,\n statusCode,\n});\n\nexport function fetchAll () {\n return dispatch => api.fetchAll()\n .then(json => dispatch(recieveAllApplications(json)))\n .catch(error => dispatch(errorReceiveApplications(error)));\n}\n\nexport function storeApplicationMetaData (appName, key, value) {\n return dispatch => api.storeApplicationMetaData(appName, key, value)\n .catch(error => dispatch(errorReceiveApplications(error, ERROR_UPDATING_APPLICATION_DATA)));\n}\n\nexport function fetchApplication (appName) {\n return dispatch => api.fetchApplication(appName)\n .then(json => dispatch(recieveApplication(json)))\n .catch(error => dispatch(errorReceiveApplications(error)));\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/application/actions.js","module.exports = clamp\n\nfunction clamp(value, min, max) {\n return min < max\n ? (value < min ? min : value > max ? max : value)\n : (value < max ? max : value > min ? min : value)\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/clamp/index.js\n// module id = 48\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n/**\n * Indicates that navigation was caused by a call to history.push.\n */\nvar PUSH = exports.PUSH = 'PUSH';\n\n/**\n * Indicates that navigation was caused by a call to history.replace.\n */\nvar REPLACE = exports.REPLACE = 'REPLACE';\n\n/**\n * Indicates that navigation was caused by some other action such\n * as using a browser's back/forward buttons and/or manually manipulating\n * the URL in a browser's location bar. This is the default.\n *\n * See https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate\n * for more information.\n */\nvar POP = exports.POP = 'POP';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/Actions.js\n// module id = 49\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nvar addEventListener = exports.addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nvar removeEventListener = exports.removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nvar supportsHistory = exports.supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nvar supportsGoWithoutReloadUsingHash = exports.supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nvar supportsPopstateOnHashchange = exports.supportsPopstateOnHashchange = function supportsPopstateOnHashchange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/DOMUtils.js\n// module id = 50\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactEventEmitterMixin = require('./ReactEventEmitterMixin');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getVendorPrefixedEventName = require('./getVendorPrefixedEventName');\nvar isEventSupported = require('./isEventSupported');\n\n/**\n * Summary of `ReactBrowserEventEmitter` event handling:\n *\n * - Top-level delegation is used to trap most native browser events. This\n * may only occur in the main thread and is the responsibility of\n * ReactEventListener, which is injected and can therefore support pluggable\n * event sources. This is the only work that occurs in the main thread.\n *\n * - We normalize and de-duplicate events to account for browser quirks. This\n * may be done in the worker thread.\n *\n * - Forward these native events (with the associated top-level type used to\n * trap it) to `EventPluginHub`, which in turn will ask plugins if they want\n * to extract any synthetic events.\n *\n * - The `EventPluginHub` will then process each event by annotating them with\n * \"dispatches\", a sequence of listeners and IDs that care about that event.\n *\n * - The `EventPluginHub` then dispatches the events.\n *\n * Overview of React and the event system:\n *\n * +------------+ .\n * | DOM | .\n * +------------+ .\n * | .\n * v .\n * +------------+ .\n * | ReactEvent | .\n * | Listener | .\n * +------------+ . +-----------+\n * | . +--------+|SimpleEvent|\n * | . | |Plugin |\n * +-----|------+ . v +-----------+\n * | | | . +--------------+ +------------+\n * | +-----------.--->|EventPluginHub| | Event |\n * | | . | | +-----------+ | Propagators|\n * | ReactEvent | . | | |TapEvent | |------------|\n * | Emitter | . | |<---+|Plugin | |other plugin|\n * | | . | | +-----------+ | utilities |\n * | +-----------.--->| | +------------+\n * | | | . +--------------+\n * +-----|------+ . ^ +-----------+\n * | . | |Enter/Leave|\n * + . +-------+|Plugin |\n * +-------------+ . +-----------+\n * | application | .\n * |-------------| .\n * | | .\n * | | .\n * +-------------+ .\n * .\n * React Core . General Purpose Event Plugin System\n */\n\nvar hasEventPageXY;\nvar alreadyListeningTo = {};\nvar isMonitoringScrollValue = false;\nvar reactTopListenersCounter = 0;\n\n// For events like 'submit' which don't consistently bubble (which we trap at a\n// lower node than `document`), binding at `document` would cause duplicate\n// events so we don't include them here\nvar topEventMapping = {\n topAbort: 'abort',\n topAnimationEnd: getVendorPrefixedEventName('animationend') || 'animationend',\n topAnimationIteration: getVendorPrefixedEventName('animationiteration') || 'animationiteration',\n topAnimationStart: getVendorPrefixedEventName('animationstart') || 'animationstart',\n topBlur: 'blur',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topChange: 'change',\n topClick: 'click',\n topCompositionEnd: 'compositionend',\n topCompositionStart: 'compositionstart',\n topCompositionUpdate: 'compositionupdate',\n topContextMenu: 'contextmenu',\n topCopy: 'copy',\n topCut: 'cut',\n topDoubleClick: 'dblclick',\n topDrag: 'drag',\n topDragEnd: 'dragend',\n topDragEnter: 'dragenter',\n topDragExit: 'dragexit',\n topDragLeave: 'dragleave',\n topDragOver: 'dragover',\n topDragStart: 'dragstart',\n topDrop: 'drop',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topFocus: 'focus',\n topInput: 'input',\n topKeyDown: 'keydown',\n topKeyPress: 'keypress',\n topKeyUp: 'keyup',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topMouseDown: 'mousedown',\n topMouseMove: 'mousemove',\n topMouseOut: 'mouseout',\n topMouseOver: 'mouseover',\n topMouseUp: 'mouseup',\n topPaste: 'paste',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topScroll: 'scroll',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topSelectionChange: 'selectionchange',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTextInput: 'textInput',\n topTimeUpdate: 'timeupdate',\n topTouchCancel: 'touchcancel',\n topTouchEnd: 'touchend',\n topTouchMove: 'touchmove',\n topTouchStart: 'touchstart',\n topTransitionEnd: getVendorPrefixedEventName('transitionend') || 'transitionend',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting',\n topWheel: 'wheel'\n};\n\n/**\n * To ensure no conflicts with other potential React instances on the page\n */\nvar topListenersIDKey = '_reactListenersID' + String(Math.random()).slice(2);\n\nfunction getListeningForDocument(mountAt) {\n // In IE8, `mountAt` is a host object and doesn't have `hasOwnProperty`\n // directly.\n if (!Object.prototype.hasOwnProperty.call(mountAt, topListenersIDKey)) {\n mountAt[topListenersIDKey] = reactTopListenersCounter++;\n alreadyListeningTo[mountAt[topListenersIDKey]] = {};\n }\n return alreadyListeningTo[mountAt[topListenersIDKey]];\n}\n\n/**\n * `ReactBrowserEventEmitter` is used to attach top-level event listeners. For\n * example:\n *\n * EventPluginHub.putListener('myID', 'onClick', myFunction);\n *\n * This would allocate a \"registration\" of `('onClick', myFunction)` on 'myID'.\n *\n * @internal\n */\nvar ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {\n\n /**\n * Injectable event backend\n */\n ReactEventListener: null,\n\n injection: {\n /**\n * @param {object} ReactEventListener\n */\n injectReactEventListener: function (ReactEventListener) {\n ReactEventListener.setHandleTopLevel(ReactBrowserEventEmitter.handleTopLevel);\n ReactBrowserEventEmitter.ReactEventListener = ReactEventListener;\n }\n },\n\n /**\n * Sets whether or not any created callbacks should be enabled.\n *\n * @param {boolean} enabled True if callbacks should be enabled.\n */\n setEnabled: function (enabled) {\n if (ReactBrowserEventEmitter.ReactEventListener) {\n ReactBrowserEventEmitter.ReactEventListener.setEnabled(enabled);\n }\n },\n\n /**\n * @return {boolean} True if callbacks are enabled.\n */\n isEnabled: function () {\n return !!(ReactBrowserEventEmitter.ReactEventListener && ReactBrowserEventEmitter.ReactEventListener.isEnabled());\n },\n\n /**\n * We listen for bubbled touch events on the document object.\n *\n * Firefox v8.01 (and possibly others) exhibited strange behavior when\n * mounting `onmousemove` events at some node that was not the document\n * element. The symptoms were that if your mouse is not moving over something\n * contained within that mount point (for example on the background) the\n * top-level listeners for `onmousemove` won't be called. However, if you\n * register the `mousemove` on the document object, then it will of course\n * catch all `mousemove`s. This along with iOS quirks, justifies restricting\n * top-level listeners to the document object only, at least for these\n * movement types of events and possibly all events.\n *\n * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n *\n * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but\n * they bubble to document.\n *\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @param {object} contentDocumentHandle Document which owns the container\n */\n listenTo: function (registrationName, contentDocumentHandle) {\n var mountAt = contentDocumentHandle;\n var isListening = getListeningForDocument(mountAt);\n var dependencies = EventPluginRegistry.registrationNameDependencies[registrationName];\n\n for (var i = 0; i < dependencies.length; i++) {\n var dependency = dependencies[i];\n if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {\n if (dependency === 'topWheel') {\n if (isEventSupported('wheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'wheel', mountAt);\n } else if (isEventSupported('mousewheel')) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'mousewheel', mountAt);\n } else {\n // Firefox needs to capture a different mouse scroll event.\n // @see http://www.quirksmode.org/dom/events/tests/scroll.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);\n }\n } else if (dependency === 'topScroll') {\n\n if (isEventSupported('scroll', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topScroll', 'scroll', mountAt);\n } else {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topScroll', 'scroll', ReactBrowserEventEmitter.ReactEventListener.WINDOW_HANDLE);\n }\n } else if (dependency === 'topFocus' || dependency === 'topBlur') {\n\n if (isEventSupported('focus', true)) {\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topFocus', 'focus', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent('topBlur', 'blur', mountAt);\n } else if (isEventSupported('focusin')) {\n // IE has `focusin` and `focusout` events which bubble.\n // @see http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topFocus', 'focusin', mountAt);\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent('topBlur', 'focusout', mountAt);\n }\n\n // to make sure blur and focus event listeners are only attached once\n isListening.topBlur = true;\n isListening.topFocus = true;\n } else if (topEventMapping.hasOwnProperty(dependency)) {\n ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(dependency, topEventMapping[dependency], mountAt);\n }\n\n isListening[dependency] = true;\n }\n }\n },\n\n trapBubbledEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(topLevelType, handlerBaseName, handle);\n },\n\n trapCapturedEvent: function (topLevelType, handlerBaseName, handle) {\n return ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(topLevelType, handlerBaseName, handle);\n },\n\n /**\n * Protect against document.createEvent() returning null\n * Some popup blocker extensions appear to do this:\n * https://github.com/facebook/react/issues/6887\n */\n supportsEventPageXY: function () {\n if (!document.createEvent) {\n return false;\n }\n var ev = document.createEvent('MouseEvent');\n return ev != null && 'pageX' in ev;\n },\n\n /**\n * Listens to window scroll and resize events. We cache scroll values so that\n * application code can access them without triggering reflows.\n *\n * ViewportMetrics is only used by SyntheticMouse/TouchEvent and only when\n * pageX/pageY isn't supported (legacy browsers).\n *\n * NOTE: Scroll events do not bubble.\n *\n * @see http://www.quirksmode.org/dom/events/scroll.html\n */\n ensureScrollValueMonitoring: function () {\n if (hasEventPageXY === undefined) {\n hasEventPageXY = ReactBrowserEventEmitter.supportsEventPageXY();\n }\n if (!hasEventPageXY && !isMonitoringScrollValue) {\n var refresh = ViewportMetrics.refreshScrollValues;\n ReactBrowserEventEmitter.ReactEventListener.monitorScrollValue(refresh);\n isMonitoringScrollValue = true;\n }\n }\n\n});\n\nmodule.exports = ReactBrowserEventEmitter;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactBrowserEventEmitter.js\n// module id = 51\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar ViewportMetrics = require('./ViewportMetrics');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar MouseEventInterface = {\n screenX: null,\n screenY: null,\n clientX: null,\n clientY: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n getModifierState: getEventModifierState,\n button: function (event) {\n // Webkit, Firefox, IE9+\n // which: 1 2 3\n // button: 0 1 2 (standard)\n var button = event.button;\n if ('which' in event) {\n return button;\n }\n // IE<9\n // which: undefined\n // button: 0 0 0\n // button: 1 4 2 (onmouseup)\n return button === 2 ? 2 : button === 4 ? 1 : 0;\n },\n buttons: null,\n relatedTarget: function (event) {\n return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);\n },\n // \"Proprietary\" Interface.\n pageX: function (event) {\n return 'pageX' in event ? event.pageX : event.clientX + ViewportMetrics.currentScrollLeft;\n },\n pageY: function (event) {\n return 'pageY' in event ? event.pageY : event.clientY + ViewportMetrics.currentScrollTop;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);\n\nmodule.exports = SyntheticMouseEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticMouseEvent.js\n// module id = 52\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar OBSERVED_ERROR = {};\n\n/**\n * `Transaction` creates a black box that is able to wrap any method such that\n * certain invariants are maintained before and after the method is invoked\n * (Even if an exception is thrown while invoking the wrapped method). Whoever\n * instantiates a transaction can provide enforcers of the invariants at\n * creation time. The `Transaction` class itself will supply one additional\n * automatic invariant for you - the invariant that any transaction instance\n * should not be run while it is already being run. You would typically create a\n * single instance of a `Transaction` for reuse multiple times, that potentially\n * is used to wrap several different methods. Wrappers are extremely simple -\n * they only require implementing two methods.\n *\n * <pre>\n * wrappers (injected at creation time)\n * + +\n * | |\n * +-----------------|--------|--------------+\n * | v | |\n * | +---------------+ | |\n * | +--| wrapper1 |---|----+ |\n * | | +---------------+ v | |\n * | | +-------------+ | |\n * | | +----| wrapper2 |--------+ |\n * | | | +-------------+ | | |\n * | | | | | |\n * | v v v v | wrapper\n * | +---+ +---+ +---------+ +---+ +---+ | invariants\n * perform(anyMethod) | | | | | | | | | | | | maintained\n * +----------------->|-|---|-|---|-->|anyMethod|---|---|-|---|-|-------->\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | | | | | | | | | | | |\n * | +---+ +---+ +---------+ +---+ +---+ |\n * | initialize close |\n * +-----------------------------------------+\n * </pre>\n *\n * Use cases:\n * - Preserving the input selection ranges before/after reconciliation.\n * Restoring selection even in the event of an unexpected error.\n * - Deactivating events while rearranging the DOM, preventing blurs/focuses,\n * while guaranteeing that afterwards, the event system is reactivated.\n * - Flushing a queue of collected DOM mutations to the main UI thread after a\n * reconciliation takes place in a worker thread.\n * - Invoking any collected `componentDidUpdate` callbacks after rendering new\n * content.\n * - (Future use case): Wrapping particular flushes of the `ReactWorker` queue\n * to preserve the `scrollTop` (an automatic scroll aware DOM).\n * - (Future use case): Layout calculations before and after DOM updates.\n *\n * Transactional plugin API:\n * - A module that has an `initialize` method that returns any precomputation.\n * - and a `close` method that accepts the precomputation. `close` is invoked\n * when the wrapped process is completed, or has failed.\n *\n * @param {Array<TransactionalWrapper>} transactionWrapper Wrapper modules\n * that implement `initialize` and `close`.\n * @return {Transaction} Single transaction for reuse in thread.\n *\n * @class Transaction\n */\nvar TransactionImpl = {\n /**\n * Sets up this instance so that it is prepared for collecting metrics. Does\n * so such that this setup method may be used on an instance that is already\n * initialized, in a way that does not consume additional memory upon reuse.\n * That can be useful if you decide to make your subclass of this mixin a\n * \"PooledClass\".\n */\n reinitializeTransaction: function () {\n this.transactionWrappers = this.getTransactionWrappers();\n if (this.wrapperInitData) {\n this.wrapperInitData.length = 0;\n } else {\n this.wrapperInitData = [];\n }\n this._isInTransaction = false;\n },\n\n _isInTransaction: false,\n\n /**\n * @abstract\n * @return {Array<TransactionWrapper>} Array of transaction wrappers.\n */\n getTransactionWrappers: null,\n\n isInTransaction: function () {\n return !!this._isInTransaction;\n },\n\n /**\n * Executes the function within a safety window. Use this for the top level\n * methods that result in large amounts of computation/mutations that would\n * need to be safety checked. The optional arguments helps prevent the need\n * to bind in many cases.\n *\n * @param {function} method Member of scope to call.\n * @param {Object} scope Scope to invoke from.\n * @param {Object?=} a Argument to pass to the method.\n * @param {Object?=} b Argument to pass to the method.\n * @param {Object?=} c Argument to pass to the method.\n * @param {Object?=} d Argument to pass to the method.\n * @param {Object?=} e Argument to pass to the method.\n * @param {Object?=} f Argument to pass to the method.\n *\n * @return {*} Return value from `method`.\n */\n perform: function (method, scope, a, b, c, d, e, f) {\n !!this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.perform(...): Cannot initialize a transaction when there is already an outstanding transaction.') : _prodInvariant('27') : void 0;\n var errorThrown;\n var ret;\n try {\n this._isInTransaction = true;\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // one of these calls threw.\n errorThrown = true;\n this.initializeAll(0);\n ret = method.call(scope, a, b, c, d, e, f);\n errorThrown = false;\n } finally {\n try {\n if (errorThrown) {\n // If `method` throws, prefer to show that stack trace over any thrown\n // by invoking `closeAll`.\n try {\n this.closeAll(0);\n } catch (err) {}\n } else {\n // Since `method` didn't throw, we don't want to silence the exception\n // here.\n this.closeAll(0);\n }\n } finally {\n this._isInTransaction = false;\n }\n }\n return ret;\n },\n\n initializeAll: function (startIndex) {\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n try {\n // Catching errors makes debugging more difficult, so we start with the\n // OBSERVED_ERROR state before overwriting it with the real return value\n // of initialize -- if it's still set to OBSERVED_ERROR in the finally\n // block, it means wrapper.initialize threw.\n this.wrapperInitData[i] = OBSERVED_ERROR;\n this.wrapperInitData[i] = wrapper.initialize ? wrapper.initialize.call(this) : null;\n } finally {\n if (this.wrapperInitData[i] === OBSERVED_ERROR) {\n // The initializer for wrapper i threw an error; initialize the\n // remaining wrappers but silence any exceptions from them to ensure\n // that the first error is the one to bubble up.\n try {\n this.initializeAll(i + 1);\n } catch (err) {}\n }\n }\n }\n },\n\n /**\n * Invokes each of `this.transactionWrappers.close[i]` functions, passing into\n * them the respective return values of `this.transactionWrappers.init[i]`\n * (`close`rs that correspond to initializers that failed will not be\n * invoked).\n */\n closeAll: function (startIndex) {\n !this.isInTransaction() ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Transaction.closeAll(): Cannot close transaction when none are open.') : _prodInvariant('28') : void 0;\n var transactionWrappers = this.transactionWrappers;\n for (var i = startIndex; i < transactionWrappers.length; i++) {\n var wrapper = transactionWrappers[i];\n var initData = this.wrapperInitData[i];\n var errorThrown;\n try {\n // Catching errors makes debugging more difficult, so we start with\n // errorThrown set to true before setting it to false after calling\n // close -- if it's still set to true in the finally block, it means\n // wrapper.close threw.\n errorThrown = true;\n if (initData !== OBSERVED_ERROR && wrapper.close) {\n wrapper.close.call(this, initData);\n }\n errorThrown = false;\n } finally {\n if (errorThrown) {\n // The closer for wrapper i threw an error; close the remaining\n // wrappers but silence any exceptions from them to ensure that the\n // first error is the one to bubble up.\n try {\n this.closeAll(i + 1);\n } catch (e) {}\n }\n }\n }\n this.wrapperInitData.length = 0;\n }\n};\n\nmodule.exports = TransactionImpl;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/Transaction.js\n// module id = 53\n// module chunks = 0","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * Based on the escape-html library, which is used under the MIT License below:\n *\n * Copyright (c) 2012-2013 TJ Holowaychuk\n * Copyright (c) 2015 Andreas Lubbe\n * Copyright (c) 2015 Tiancheng \"Timothy\" Gu\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n *\n */\n\n'use strict';\n\n// code copied and modified from escape-html\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34:\n // \"\n escape = '"';\n break;\n case 38:\n // &\n escape = '&';\n break;\n case 39:\n // '\n escape = '''; // modified from escape-html; used to be '''\n break;\n case 60:\n // <\n escape = '<';\n break;\n case 62:\n // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index ? html + str.substring(lastIndex, index) : html;\n}\n// end code copied and modified from escape-html\n\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escapeTextContentForBrowser(text) {\n if (typeof text === 'boolean' || typeof text === 'number') {\n // this shortcircuit helps perf for types that we know will never have\n // special characters, especially given that this function is used often\n // for numeric dom ids.\n return '' + text;\n }\n return escapeHtml(text);\n}\n\nmodule.exports = escapeTextContentForBrowser;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/escapeTextContentForBrowser.js\n// module id = 54\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar DOMNamespaces = require('./DOMNamespaces');\n\nvar WHITESPACE_TEST = /^[ \\r\\n\\t\\f]/;\nvar NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \\r\\n\\t\\f\\/>]/;\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\n\n// SVG temp container for IE lacking innerHTML\nvar reusableSVGContainer;\n\n/**\n * Set the innerHTML property of a node, ensuring that whitespace is preserved\n * even in IE8.\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n // IE does not have innerHTML for SVG nodes, so instead we inject the\n // new markup in a temp node and then move the child nodes across into\n // the target node\n if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {\n reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';\n var svgNode = reusableSVGContainer.firstChild;\n while (svgNode.firstChild) {\n node.appendChild(svgNode.firstChild);\n }\n } else {\n node.innerHTML = html;\n }\n});\n\nif (ExecutionEnvironment.canUseDOM) {\n // IE8: When updating a just created node with innerHTML only leading\n // whitespace is removed. When updating an existing node with innerHTML\n // whitespace in root TextNodes is also collapsed.\n // @see quirksmode.org/bugreports/archives/2004/11/innerhtml_and_t.html\n\n // Feature detection; only IE8 is known to behave improperly like this.\n var testElement = document.createElement('div');\n testElement.innerHTML = ' ';\n if (testElement.innerHTML === '') {\n setInnerHTML = function (node, html) {\n // Magic theory: IE8 supposedly differentiates between added and updated\n // nodes when processing innerHTML, innerHTML on updated nodes suffers\n // from worse whitespace behavior. Re-adding a node like this triggers\n // the initial and more favorable whitespace behavior.\n // TODO: What to do on a detached node?\n if (node.parentNode) {\n node.parentNode.replaceChild(node, node);\n }\n\n // We also implement a workaround for non-visible tags disappearing into\n // thin air on IE8, this only happens if there is no visible text\n // in-front of the non-visible tags. Piggyback on the whitespace fix\n // and simply check if any non-visible tags appear in the source.\n if (WHITESPACE_TEST.test(html) || html[0] === '<' && NONVISIBLE_TEST.test(html)) {\n // Recover leading whitespace by temporarily prepending any character.\n // \\uFEFF has the potential advantage of being zero-width/invisible.\n // UglifyJS drops U+FEFF chars when parsing, so use String.fromCharCode\n // in hopes that this is preserved even if \"\\uFEFF\" is transformed to\n // the actual Unicode character (by Babel, for example).\n // https://github.com/mishoo/UglifyJS2/blob/v2.4.20/lib/parse.js#L216\n node.innerHTML = String.fromCharCode(0xFEFF) + html;\n\n // deleteData leaves an empty `TextNode` which offsets the index of all\n // children. Definitely want to avoid this.\n var textNode = node.firstChild;\n if (textNode.data.length === 1) {\n node.removeChild(textNode);\n } else {\n textNode.deleteData(0, 1);\n }\n } else {\n node.innerHTML = html;\n }\n };\n }\n testElement = null;\n}\n\nmodule.exports = setInnerHTML;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/setInnerHTML.js\n// module id = 55\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _Tooltip = require('../Tooltip');\n\nvar _Tooltip2 = _interopRequireDefault(_Tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n cellFormatter: _react.PropTypes.func, // Used by the Table component to format the cell content for this \"column\"\n className: _react.PropTypes.string,\n name: _react.PropTypes.string.isRequired,\n numeric: _react.PropTypes.bool,\n onClick: _react.PropTypes.func,\n nosort: _react.PropTypes.bool,\n sortFn: _react.PropTypes.func, // Used by the Sortable component\n tooltip: _react.PropTypes.node\n};\n\nvar TableHeader = function TableHeader(props) {\n var className = props.className,\n name = props.name,\n numeric = props.numeric,\n onClick = props.onClick,\n nosort = props.nosort,\n tooltip = props.tooltip,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'name', 'numeric', 'onClick', 'nosort', 'tooltip', 'children']);\n\n // remove unwanted props\n // see https://github.com/Hacker0x01/react-datepicker/issues/517#issuecomment-230171426\n\n\n delete otherProps.cellFormatter;\n delete otherProps.sortFn;\n\n var classes = (0, _classnames2.default)({\n 'mdl-data-table__cell--non-numeric': !numeric\n }, className);\n\n var clickFn = !nosort && onClick ? function (e) {\n return onClick(e, name);\n } : null;\n\n return _react2.default.createElement(\n 'th',\n _extends({ className: classes, onClick: clickFn }, otherProps),\n !!tooltip ? _react2.default.createElement(\n _Tooltip2.default,\n { label: tooltip },\n children\n ) : children\n );\n};\n\nTableHeader.propTypes = propTypes;\n\nexports.default = TableHeader;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/DataTable/TableHeader.js\n// module id = 56\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (children, props) {\n return _react2.default.Children.map(children, function (child) {\n if (!child) return child;\n var newProps = typeof props === 'function' ? props(child) : props;\n return _react2.default.cloneElement(child, newProps);\n });\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/utils/cloneChildren.js\n// module id = 57\n// module chunks = 0","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar values = [2, 3, 4, 6, 8, 16, 24];\nexports.default = values.map(function (v) {\n return \"mdl-shadow--\" + v + \"dp\";\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/utils/shadows.js\n// module id = 58\n// module chunks = 0","import api from '../data/feature-metrics-api';\n\nexport const START_FETCH_FEATURE_METRICS = 'START_FETCH_FEATURE_METRICS';\nexport const RECEIVE_FEATURE_METRICS = 'RECEIVE_FEATURE_METRICS';\nexport const ERROR_FETCH_FEATURE_TOGGLES = 'ERROR_FETCH_FEATURE_TOGGLES';\n\nexport const START_FETCH_SEEN_APP = 'START_FETCH_SEEN_APP';\nexport const RECEIVE_SEEN_APPS = 'RECEIVE_SEEN_APPS';\nexport const ERROR_FETCH_SEEN_APP = 'ERROR_FETCH_SEEN_APP';\n\nfunction receiveFeatureMetrics (json) {\n return {\n type: RECEIVE_FEATURE_METRICS,\n value: json,\n receivedAt: Date.now(),\n };\n}\n\nfunction receiveSeenApps (json) {\n return {\n type: RECEIVE_SEEN_APPS,\n value: json,\n receivedAt: Date.now(),\n };\n}\n\nfunction dispatchAndThrow (dispatch, type) {\n return (error) => {\n dispatch({ type, error, receivedAt: Date.now() });\n throw error;\n };\n}\n\nexport function fetchFeatureMetrics () {\n return dispatch => {\n dispatch({ type: START_FETCH_SEEN_APP });\n\n return api.fetchFeatureMetrics()\n .then(json => dispatch(receiveFeatureMetrics(json)))\n .catch(dispatchAndThrow(dispatch, ERROR_FETCH_SEEN_APP));\n };\n}\n\nexport function fetchSeenApps () {\n return dispatch => {\n dispatch({ type: START_FETCH_FEATURE_METRICS });\n\n return api.fetchSeenApps()\n .then(json => dispatch(receiveSeenApps(json)))\n .catch(dispatchAndThrow(dispatch, ERROR_FETCH_FEATURE_TOGGLES));\n };\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/feature-metrics-actions.js","import api from '../data/history-api';\n\nexport const RECEIVE_HISTORY = 'RECEIVE_HISTORY';\nexport const ERROR_RECEIVE_HISTORY = 'ERROR_RECEIVE_HISTORY';\n\nexport const RECEIVE_HISTORY_FOR_TOGGLE = 'RECEIVE_HISTORY_FOR_TOGGLE';\n\nconst receiveHistory = (json) => ({\n type: RECEIVE_HISTORY,\n value: json.events,\n});\n\nconst receiveHistoryforToggle = (json) => ({\n type: RECEIVE_HISTORY_FOR_TOGGLE,\n value: json,\n});\n\nconst errorReceiveHistory = (statusCode) => ({\n type: ERROR_RECEIVE_HISTORY,\n statusCode,\n});\n\nexport function fetchHistory () {\n return dispatch => api.fetchAll()\n .then(json => dispatch(receiveHistory(json)))\n .catch(error => dispatch(errorReceiveHistory(error)));\n}\n\n\nexport function fetchHistoryForToggle (toggleName) {\n return dispatch => api.fetchHistoryForToggle(toggleName)\n .then(json => dispatch(receiveHistoryforToggle(json)))\n .catch(error => dispatch(errorReceiveHistory(error)));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/history-actions.js","export const UPDATE_SETTING = 'UPDATE_SETTING';\n\nexport const updateSetting = (group, field, value) => ({\n type: UPDATE_SETTING,\n group,\n field,\n value,\n});\n\nexport const updateSettingForGroup = (group) => (field, value) => updateSetting(group, field, value);\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/settings/actions.js","export const USER_UPDATE_USERNAME = 'USER_UPDATE_USERNAME';\nexport const USER_SAVE = 'USER_SAVE';\nexport const USER_EDIT = 'USER_EDIT';\n\nexport const updateUserName = (value) => ({\n type: USER_UPDATE_USERNAME,\n value,\n});\n\nexport const save = () => ({\n type: USER_SAVE,\n});\n\nexport const openEdit = () => ({\n type: USER_EDIT,\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/user/actions.js","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && typeof window.process !== 'undefined' && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (console.firebug || (console.exception && console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (navigator && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n try {\n return exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (typeof process !== 'undefined' && 'env' in process) {\n return process.env.DEBUG;\n }\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n\n/** Attach to Window*/\nif (window) {\n window.debug = exports;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/debug/src/browser.js\n// module id = 63\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"history\":\"history__history___2SlHd\",\"diff-N\":\"history__diff-N___AXtC3\",\"diff-D\":\"history__diff-D___tE-cJ\",\"diff-A\":\"history__diff-A___r8S1s\",\"diff-E\":\"history__diff-E___qtsD_\",\"negative\":\"history__negative___2G_kU\",\"positive\":\"history__positive___qcMCq\",\"blue\":\"history__blue___2HZTE\",\"history-item\":\"history__history-item___MA_uO\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/history/history.scss\n// module id = 64\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n * \n */\n\n/*eslint-disable no-self-compare */\n\n'use strict';\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n // Added the nonzero y check to make Flow happy, but it is redundant\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqual;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/shallowEqual.js\n// module id = 65\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.go = exports.replaceLocation = exports.pushLocation = exports.startListener = exports.getUserConfirmation = exports.getCurrentLocation = undefined;\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar needsHashchangeListener = _ExecutionEnvironment.canUseDOM && !(0, _DOMUtils.supportsPopstateOnHashchange)();\n\nvar _createLocation = function _createLocation(historyState) {\n var key = historyState && historyState.key;\n\n return (0, _LocationUtils.createLocation)({\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash,\n state: key ? (0, _DOMStateStorage.readState)(key) : undefined\n }, undefined, key);\n};\n\nvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() {\n var historyState = void 0;\n try {\n historyState = window.history.state || {};\n } catch (error) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n historyState = {};\n }\n\n return _createLocation(historyState);\n};\n\nvar getUserConfirmation = exports.getUserConfirmation = function getUserConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\nvar startListener = exports.startListener = function startListener(listener) {\n var handlePopState = function handlePopState(event) {\n if (event.state !== undefined) // Ignore extraneous popstate events in WebKit\n listener(_createLocation(event.state));\n };\n\n (0, _DOMUtils.addEventListener)(window, PopStateEvent, handlePopState);\n\n var handleUnpoppedHashChange = function handleUnpoppedHashChange() {\n return listener(getCurrentLocation());\n };\n\n if (needsHashchangeListener) {\n (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleUnpoppedHashChange);\n }\n\n return function () {\n (0, _DOMUtils.removeEventListener)(window, PopStateEvent, handlePopState);\n\n if (needsHashchangeListener) {\n (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleUnpoppedHashChange);\n }\n };\n};\n\nvar updateLocation = function updateLocation(location, updateState) {\n var state = location.state;\n var key = location.key;\n\n\n if (state !== undefined) (0, _DOMStateStorage.saveState)(key, state);\n\n updateState({ key: key }, (0, _PathUtils.createPath)(location));\n};\n\nvar pushLocation = exports.pushLocation = function pushLocation(location) {\n return updateLocation(location, function (state, path) {\n return window.history.pushState(state, null, path);\n });\n};\n\nvar replaceLocation = exports.replaceLocation = function replaceLocation(location) {\n return updateLocation(location, function (state, path) {\n return window.history.replaceState(state, null, path);\n });\n};\n\nvar go = exports.go = function go(n) {\n if (n) window.history.go(n);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/BrowserProtocol.js\n// module id = 66\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nvar canUseDOM = exports.canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/ExecutionEnvironment.js\n// module id = 67\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _Actions = require('./Actions');\n\nvar _LocationUtils = require('./LocationUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createHistory = function createHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n var getCurrentLocation = options.getCurrentLocation;\n var getUserConfirmation = options.getUserConfirmation;\n var pushLocation = options.pushLocation;\n var replaceLocation = options.replaceLocation;\n var go = options.go;\n var keyLength = options.keyLength;\n\n\n var currentLocation = void 0;\n var pendingLocation = void 0;\n var beforeListeners = [];\n var listeners = [];\n var allKeys = [];\n\n var getCurrentIndex = function getCurrentIndex() {\n if (pendingLocation && pendingLocation.action === _Actions.POP) return allKeys.indexOf(pendingLocation.key);\n\n if (currentLocation) return allKeys.indexOf(currentLocation.key);\n\n return -1;\n };\n\n var updateLocation = function updateLocation(nextLocation) {\n var currentIndex = getCurrentIndex();\n\n currentLocation = nextLocation;\n\n if (currentLocation.action === _Actions.PUSH) {\n allKeys = [].concat(allKeys.slice(0, currentIndex + 1), [currentLocation.key]);\n } else if (currentLocation.action === _Actions.REPLACE) {\n allKeys[currentIndex] = currentLocation.key;\n }\n\n listeners.forEach(function (listener) {\n return listener(currentLocation);\n });\n };\n\n var listenBefore = function listenBefore(listener) {\n beforeListeners.push(listener);\n\n return function () {\n return beforeListeners = beforeListeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var listen = function listen(listener) {\n listeners.push(listener);\n\n return function () {\n return listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, callback) {\n (0, _AsyncUtils.loopAsync)(beforeListeners.length, function (index, next, done) {\n (0, _runTransitionHook2.default)(beforeListeners[index], location, function (result) {\n return result != null ? done(result) : next();\n });\n }, function (message) {\n if (getUserConfirmation && typeof message === 'string') {\n getUserConfirmation(message, function (ok) {\n return callback(ok !== false);\n });\n } else {\n callback(message !== false);\n }\n });\n };\n\n var transitionTo = function transitionTo(nextLocation) {\n if (currentLocation && (0, _LocationUtils.locationsAreEqual)(currentLocation, nextLocation) || pendingLocation && (0, _LocationUtils.locationsAreEqual)(pendingLocation, nextLocation)) return; // Nothing to do\n\n pendingLocation = nextLocation;\n\n confirmTransitionTo(nextLocation, function (ok) {\n if (pendingLocation !== nextLocation) return; // Transition was interrupted during confirmation\n\n pendingLocation = null;\n\n if (ok) {\n // Treat PUSH to same path like REPLACE to be consistent with browsers\n if (nextLocation.action === _Actions.PUSH) {\n var prevPath = (0, _PathUtils.createPath)(currentLocation);\n var nextPath = (0, _PathUtils.createPath)(nextLocation);\n\n if (nextPath === prevPath && (0, _LocationUtils.statesAreEqual)(currentLocation.state, nextLocation.state)) nextLocation.action = _Actions.REPLACE;\n }\n\n if (nextLocation.action === _Actions.POP) {\n updateLocation(nextLocation);\n } else if (nextLocation.action === _Actions.PUSH) {\n if (pushLocation(nextLocation) !== false) updateLocation(nextLocation);\n } else if (nextLocation.action === _Actions.REPLACE) {\n if (replaceLocation(nextLocation) !== false) updateLocation(nextLocation);\n }\n } else if (currentLocation && nextLocation.action === _Actions.POP) {\n var prevIndex = allKeys.indexOf(currentLocation.key);\n var nextIndex = allKeys.indexOf(nextLocation.key);\n\n if (prevIndex !== -1 && nextIndex !== -1) go(prevIndex - nextIndex); // Restore the URL\n }\n });\n };\n\n var push = function push(input) {\n return transitionTo(createLocation(input, _Actions.PUSH));\n };\n\n var replace = function replace(input) {\n return transitionTo(createLocation(input, _Actions.REPLACE));\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength || 6);\n };\n\n var createHref = function createHref(location) {\n return (0, _PathUtils.createPath)(location);\n };\n\n var createLocation = function createLocation(location, action) {\n var key = arguments.length <= 2 || arguments[2] === undefined ? createKey() : arguments[2];\n return (0, _LocationUtils.createLocation)(location, action, key);\n };\n\n return {\n getCurrentLocation: getCurrentLocation,\n listenBefore: listenBefore,\n listen: listen,\n transitionTo: transitionTo,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n createKey: createKey,\n createPath: _PathUtils.createPath,\n createHref: createHref,\n createLocation: createLocation\n };\n};\n\nexports.default = createHistory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/createHistory.js\n// module id = 68\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar runTransitionHook = function runTransitionHook(hook, location, callback) {\n var result = hook(location, callback);\n\n if (hook.length < 2) {\n // Assume the hook runs synchronously and automatically\n // call the callback with the return value.\n callback(result);\n } else {\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(result === undefined, 'You should not \"return\" in a transition hook with a callback argument; ' + 'call the callback instead') : void 0;\n }\n};\n\nexports.default = runTransitionHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/runTransitionHook.js\n// module id = 69\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isPlainObject.js\n// module id = 70\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/node-libs-browser/~/process/browser.js\n// module id = 71\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar Danger = require('./Danger');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar createMicrosoftUnsafeLocalFunction = require('./createMicrosoftUnsafeLocalFunction');\nvar setInnerHTML = require('./setInnerHTML');\nvar setTextContent = require('./setTextContent');\n\nfunction getNodeAfter(parentNode, node) {\n // Special case for text components, which return [open, close] comments\n // from getHostNode.\n if (Array.isArray(node)) {\n node = node[1];\n }\n return node ? node.nextSibling : parentNode.firstChild;\n}\n\n/**\n * Inserts `childNode` as a child of `parentNode` at the `index`.\n *\n * @param {DOMElement} parentNode Parent node in which to insert.\n * @param {DOMElement} childNode Child node to insert.\n * @param {number} index Index at which to insert the child.\n * @internal\n */\nvar insertChildAt = createMicrosoftUnsafeLocalFunction(function (parentNode, childNode, referenceNode) {\n // We rely exclusively on `insertBefore(node, null)` instead of also using\n // `appendChild(node)`. (Using `undefined` is not allowed by all browsers so\n // we are careful to use `null`.)\n parentNode.insertBefore(childNode, referenceNode);\n});\n\nfunction insertLazyTreeChildAt(parentNode, childTree, referenceNode) {\n DOMLazyTree.insertTreeBefore(parentNode, childTree, referenceNode);\n}\n\nfunction moveChild(parentNode, childNode, referenceNode) {\n if (Array.isArray(childNode)) {\n moveDelimitedText(parentNode, childNode[0], childNode[1], referenceNode);\n } else {\n insertChildAt(parentNode, childNode, referenceNode);\n }\n}\n\nfunction removeChild(parentNode, childNode) {\n if (Array.isArray(childNode)) {\n var closingComment = childNode[1];\n childNode = childNode[0];\n removeDelimitedText(parentNode, childNode, closingComment);\n parentNode.removeChild(closingComment);\n }\n parentNode.removeChild(childNode);\n}\n\nfunction moveDelimitedText(parentNode, openingComment, closingComment, referenceNode) {\n var node = openingComment;\n while (true) {\n var nextNode = node.nextSibling;\n insertChildAt(parentNode, node, referenceNode);\n if (node === closingComment) {\n break;\n }\n node = nextNode;\n }\n}\n\nfunction removeDelimitedText(parentNode, startNode, closingComment) {\n while (true) {\n var node = startNode.nextSibling;\n if (node === closingComment) {\n // The closing comment is removed by ReactMultiChild.\n break;\n } else {\n parentNode.removeChild(node);\n }\n }\n}\n\nfunction replaceDelimitedText(openingComment, closingComment, stringText) {\n var parentNode = openingComment.parentNode;\n var nodeAfterComment = openingComment.nextSibling;\n if (nodeAfterComment === closingComment) {\n // There are no text nodes between the opening and closing comments; insert\n // a new one if stringText isn't empty.\n if (stringText) {\n insertChildAt(parentNode, document.createTextNode(stringText), nodeAfterComment);\n }\n } else {\n if (stringText) {\n // Set the text content of the first node after the opening comment, and\n // remove all following nodes up until the closing comment.\n setTextContent(nodeAfterComment, stringText);\n removeDelimitedText(parentNode, nodeAfterComment, closingComment);\n } else {\n removeDelimitedText(parentNode, openingComment, closingComment);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID,\n type: 'replace text',\n payload: stringText\n });\n }\n}\n\nvar dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;\nif (process.env.NODE_ENV !== 'production') {\n dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {\n Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);\n if (prevInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: prevInstance._debugID,\n type: 'replace with',\n payload: markup.toString()\n });\n } else {\n var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);\n if (nextInstance._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: nextInstance._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n };\n}\n\n/**\n * Operations for updating with DOM children.\n */\nvar DOMChildrenOperations = {\n\n dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,\n\n replaceDelimitedText: replaceDelimitedText,\n\n /**\n * Updates a component's children by processing a series of updates. The\n * update configurations are each expected to have a `parentNode` property.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n processUpdates: function (parentNode, updates) {\n if (process.env.NODE_ENV !== 'production') {\n var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;\n }\n\n for (var k = 0; k < updates.length; k++) {\n var update = updates[k];\n switch (update.type) {\n case 'INSERT_MARKUP':\n insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'insert child',\n payload: { toIndex: update.toIndex, content: update.content.toString() }\n });\n }\n break;\n case 'MOVE_EXISTING':\n moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'move child',\n payload: { fromIndex: update.fromIndex, toIndex: update.toIndex }\n });\n }\n break;\n case 'SET_MARKUP':\n setInnerHTML(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace children',\n payload: update.content.toString()\n });\n }\n break;\n case 'TEXT_CONTENT':\n setTextContent(parentNode, update.content);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'replace text',\n payload: update.content.toString()\n });\n }\n break;\n case 'REMOVE_NODE':\n removeChild(parentNode, update.fromNode);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: parentNodeDebugID,\n type: 'remove child',\n payload: { fromIndex: update.fromIndex }\n });\n }\n break;\n }\n }\n }\n\n};\n\nmodule.exports = DOMChildrenOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/DOMChildrenOperations.js\n// module id = 72\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMNamespaces = {\n html: 'http://www.w3.org/1999/xhtml',\n mathml: 'http://www.w3.org/1998/Math/MathML',\n svg: 'http://www.w3.org/2000/svg'\n};\n\nmodule.exports = DOMNamespaces;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/DOMNamespaces.js\n// module id = 73\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Injectable ordering of event plugins.\n */\nvar eventPluginOrder = null;\n\n/**\n * Injectable mapping from names to event plugin modules.\n */\nvar namesToPlugins = {};\n\n/**\n * Recomputes the plugin list using the injected plugins and plugin ordering.\n *\n * @private\n */\nfunction recomputePluginOrdering() {\n if (!eventPluginOrder) {\n // Wait until an `eventPluginOrder` is injected.\n return;\n }\n for (var pluginName in namesToPlugins) {\n var pluginModule = namesToPlugins[pluginName];\n var pluginIndex = eventPluginOrder.indexOf(pluginName);\n !(pluginIndex > -1) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;\n if (EventPluginRegistry.plugins[pluginIndex]) {\n continue;\n }\n !pluginModule.extractEvents ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;\n EventPluginRegistry.plugins[pluginIndex] = pluginModule;\n var publishedEvents = pluginModule.eventTypes;\n for (var eventName in publishedEvents) {\n !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;\n }\n }\n}\n\n/**\n * Publishes an event so that it can be dispatched by the supplied plugin.\n *\n * @param {object} dispatchConfig Dispatch configuration for the event.\n * @param {object} PluginModule Plugin publishing the event.\n * @return {boolean} True if the event was successfully published.\n * @private\n */\nfunction publishEventForPlugin(dispatchConfig, pluginModule, eventName) {\n !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;\n EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;\n\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n if (phasedRegistrationNames) {\n for (var phaseName in phasedRegistrationNames) {\n if (phasedRegistrationNames.hasOwnProperty(phaseName)) {\n var phasedRegistrationName = phasedRegistrationNames[phaseName];\n publishRegistrationName(phasedRegistrationName, pluginModule, eventName);\n }\n }\n return true;\n } else if (dispatchConfig.registrationName) {\n publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);\n return true;\n }\n return false;\n}\n\n/**\n * Publishes a registration name that is used to identify dispatched events and\n * can be used with `EventPluginHub.putListener` to register listeners.\n *\n * @param {string} registrationName Registration name to add.\n * @param {object} PluginModule Plugin publishing the event.\n * @private\n */\nfunction publishRegistrationName(registrationName, pluginModule, eventName) {\n !!EventPluginRegistry.registrationNameModules[registrationName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;\n EventPluginRegistry.registrationNameModules[registrationName] = pluginModule;\n EventPluginRegistry.registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;\n\n if (process.env.NODE_ENV !== 'production') {\n var lowerCasedName = registrationName.toLowerCase();\n EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;\n\n if (registrationName === 'onDoubleClick') {\n EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;\n }\n }\n}\n\n/**\n * Registers plugins so that they can extract and dispatch events.\n *\n * @see {EventPluginHub}\n */\nvar EventPluginRegistry = {\n\n /**\n * Ordered list of injected plugins.\n */\n plugins: [],\n\n /**\n * Mapping from event name to dispatch config\n */\n eventNameDispatchConfigs: {},\n\n /**\n * Mapping from registration name to plugin module\n */\n registrationNameModules: {},\n\n /**\n * Mapping from registration name to event name\n */\n registrationNameDependencies: {},\n\n /**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in __DEV__.\n * @type {Object}\n */\n possibleRegistrationNames: process.env.NODE_ENV !== 'production' ? {} : null,\n // Trust the developer to only use possibleRegistrationNames in __DEV__\n\n /**\n * Injects an ordering of plugins (by plugin name). This allows the ordering\n * to be decoupled from injection of the actual plugins so that ordering is\n * always deterministic regardless of packaging, on-the-fly injection, etc.\n *\n * @param {array} InjectedEventPluginOrder\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginOrder}\n */\n injectEventPluginOrder: function (injectedEventPluginOrder) {\n !!eventPluginOrder ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;\n // Clone the ordering so it cannot be dynamically mutated.\n eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);\n recomputePluginOrdering();\n },\n\n /**\n * Injects plugins to be used by `EventPluginHub`. The plugin names must be\n * in the ordering injected by `injectEventPluginOrder`.\n *\n * Plugins can be injected as part of page initialization or on-the-fly.\n *\n * @param {object} injectedNamesToPlugins Map from names to plugin modules.\n * @internal\n * @see {EventPluginHub.injection.injectEventPluginsByName}\n */\n injectEventPluginsByName: function (injectedNamesToPlugins) {\n var isOrderingDirty = false;\n for (var pluginName in injectedNamesToPlugins) {\n if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {\n continue;\n }\n var pluginModule = injectedNamesToPlugins[pluginName];\n if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {\n !!namesToPlugins[pluginName] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;\n namesToPlugins[pluginName] = pluginModule;\n isOrderingDirty = true;\n }\n }\n if (isOrderingDirty) {\n recomputePluginOrdering();\n }\n },\n\n /**\n * Looks up the plugin for the supplied event.\n *\n * @param {object} event A synthetic event.\n * @return {?object} The plugin that created the supplied event.\n * @internal\n */\n getPluginModuleForEvent: function (event) {\n var dispatchConfig = event.dispatchConfig;\n if (dispatchConfig.registrationName) {\n return EventPluginRegistry.registrationNameModules[dispatchConfig.registrationName] || null;\n }\n if (dispatchConfig.phasedRegistrationNames !== undefined) {\n // pulling phasedRegistrationNames out of dispatchConfig helps Flow see\n // that it is not undefined.\n var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;\n\n for (var phase in phasedRegistrationNames) {\n if (!phasedRegistrationNames.hasOwnProperty(phase)) {\n continue;\n }\n var pluginModule = EventPluginRegistry.registrationNameModules[phasedRegistrationNames[phase]];\n if (pluginModule) {\n return pluginModule;\n }\n }\n }\n return null;\n },\n\n /**\n * Exposed for unit testing.\n * @private\n */\n _resetEventPlugins: function () {\n eventPluginOrder = null;\n for (var pluginName in namesToPlugins) {\n if (namesToPlugins.hasOwnProperty(pluginName)) {\n delete namesToPlugins[pluginName];\n }\n }\n EventPluginRegistry.plugins.length = 0;\n\n var eventNameDispatchConfigs = EventPluginRegistry.eventNameDispatchConfigs;\n for (var eventName in eventNameDispatchConfigs) {\n if (eventNameDispatchConfigs.hasOwnProperty(eventName)) {\n delete eventNameDispatchConfigs[eventName];\n }\n }\n\n var registrationNameModules = EventPluginRegistry.registrationNameModules;\n for (var registrationName in registrationNameModules) {\n if (registrationNameModules.hasOwnProperty(registrationName)) {\n delete registrationNameModules[registrationName];\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var possibleRegistrationNames = EventPluginRegistry.possibleRegistrationNames;\n for (var lowerCasedName in possibleRegistrationNames) {\n if (possibleRegistrationNames.hasOwnProperty(lowerCasedName)) {\n delete possibleRegistrationNames[lowerCasedName];\n }\n }\n }\n }\n\n};\n\nmodule.exports = EventPluginRegistry;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/EventPluginRegistry.js\n// module id = 74\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactErrorUtils = require('./ReactErrorUtils');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Injected dependencies:\n */\n\n/**\n * - `ComponentTree`: [required] Module that can convert between React instances\n * and actual node references.\n */\nvar ComponentTree;\nvar TreeTraversal;\nvar injection = {\n injectComponentTree: function (Injected) {\n ComponentTree = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.getNodeFromInstance && Injected.getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.') : void 0;\n }\n },\n injectTreeTraversal: function (Injected) {\n TreeTraversal = Injected;\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(Injected && Injected.isAncestor && Injected.getLowestCommonAncestor, 'EventPluginUtils.injection.injectTreeTraversal(...): Injected ' + 'module is missing isAncestor or getLowestCommonAncestor.') : void 0;\n }\n }\n};\n\nfunction isEndish(topLevelType) {\n return topLevelType === 'topMouseUp' || topLevelType === 'topTouchEnd' || topLevelType === 'topTouchCancel';\n}\n\nfunction isMoveish(topLevelType) {\n return topLevelType === 'topMouseMove' || topLevelType === 'topTouchMove';\n}\nfunction isStartish(topLevelType) {\n return topLevelType === 'topMouseDown' || topLevelType === 'topTouchStart';\n}\n\nvar validateEventDispatches;\nif (process.env.NODE_ENV !== 'production') {\n validateEventDispatches = function (event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n\n var listenersIsArr = Array.isArray(dispatchListeners);\n var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;\n\n var instancesIsArr = Array.isArray(dispatchInstances);\n var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;\n\n process.env.NODE_ENV !== 'production' ? warning(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.') : void 0;\n };\n}\n\n/**\n * Dispatch the event to the listener.\n * @param {SyntheticEvent} event SyntheticEvent to handle\n * @param {boolean} simulated If the event is simulated (changes exn behavior)\n * @param {function} listener Application-level callback\n * @param {*} inst Internal component instance\n */\nfunction executeDispatch(event, simulated, listener, inst) {\n var type = event.type || 'unknown-event';\n event.currentTarget = EventPluginUtils.getNodeFromInstance(inst);\n if (simulated) {\n ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event);\n } else {\n ReactErrorUtils.invokeGuardedCallback(type, listener, event);\n }\n event.currentTarget = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches.\n */\nfunction executeDispatchesInOrder(event, simulated) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n executeDispatch(event, simulated, dispatchListeners[i], dispatchInstances[i]);\n }\n } else if (dispatchListeners) {\n executeDispatch(event, simulated, dispatchListeners, dispatchInstances);\n }\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n}\n\n/**\n * Standard/simple iteration through an event's collected dispatches, but stops\n * at the first dispatch execution returning true, and returns that id.\n *\n * @return {?string} id of the first dispatch execution who's listener returns\n * true, or null if no listener returned true.\n */\nfunction executeDispatchesInOrderStopAtTrueImpl(event) {\n var dispatchListeners = event._dispatchListeners;\n var dispatchInstances = event._dispatchInstances;\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n if (Array.isArray(dispatchListeners)) {\n for (var i = 0; i < dispatchListeners.length; i++) {\n if (event.isPropagationStopped()) {\n break;\n }\n // Listeners and Instances are two parallel arrays that are always in sync.\n if (dispatchListeners[i](event, dispatchInstances[i])) {\n return dispatchInstances[i];\n }\n }\n } else if (dispatchListeners) {\n if (dispatchListeners(event, dispatchInstances)) {\n return dispatchInstances;\n }\n }\n return null;\n}\n\n/**\n * @see executeDispatchesInOrderStopAtTrueImpl\n */\nfunction executeDispatchesInOrderStopAtTrue(event) {\n var ret = executeDispatchesInOrderStopAtTrueImpl(event);\n event._dispatchInstances = null;\n event._dispatchListeners = null;\n return ret;\n}\n\n/**\n * Execution of a \"direct\" dispatch - there must be at most one dispatch\n * accumulated on the event or it is considered an error. It doesn't really make\n * sense for an event with multiple dispatches (bubbled) to keep track of the\n * return values at each dispatch execution, but it does tend to make sense when\n * dealing with \"direct\" dispatches.\n *\n * @return {*} The return value of executing the single dispatch.\n */\nfunction executeDirectDispatch(event) {\n if (process.env.NODE_ENV !== 'production') {\n validateEventDispatches(event);\n }\n var dispatchListener = event._dispatchListeners;\n var dispatchInstance = event._dispatchInstances;\n !!Array.isArray(dispatchListener) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;\n event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;\n var res = dispatchListener ? dispatchListener(event) : null;\n event.currentTarget = null;\n event._dispatchListeners = null;\n event._dispatchInstances = null;\n return res;\n}\n\n/**\n * @param {SyntheticEvent} event\n * @return {boolean} True iff number of dispatches accumulated is greater than 0.\n */\nfunction hasDispatches(event) {\n return !!event._dispatchListeners;\n}\n\n/**\n * General utilities that are useful in creating custom Event Plugins.\n */\nvar EventPluginUtils = {\n isEndish: isEndish,\n isMoveish: isMoveish,\n isStartish: isStartish,\n\n executeDirectDispatch: executeDirectDispatch,\n executeDispatchesInOrder: executeDispatchesInOrder,\n executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,\n hasDispatches: hasDispatches,\n\n getInstanceFromNode: function (node) {\n return ComponentTree.getInstanceFromNode(node);\n },\n getNodeFromInstance: function (node) {\n return ComponentTree.getNodeFromInstance(node);\n },\n isAncestor: function (a, b) {\n return TreeTraversal.isAncestor(a, b);\n },\n getLowestCommonAncestor: function (a, b) {\n return TreeTraversal.getLowestCommonAncestor(a, b);\n },\n getParentInstance: function (inst) {\n return TreeTraversal.getParentInstance(inst);\n },\n traverseTwoPhase: function (target, fn, arg) {\n return TreeTraversal.traverseTwoPhase(target, fn, arg);\n },\n traverseEnterLeave: function (from, to, fn, argFrom, argTo) {\n return TreeTraversal.traverseEnterLeave(from, to, fn, argFrom, argTo);\n },\n\n injection: injection\n};\n\nmodule.exports = EventPluginUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/EventPluginUtils.js\n// module id = 75\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/KeyEscapeUtils.js\n// module id = 76\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar hasReadOnlyValue = {\n 'button': true,\n 'checkbox': true,\n 'image': true,\n 'hidden': true,\n 'radio': true,\n 'reset': true,\n 'submit': true\n};\n\nfunction _assertSingleLink(inputProps) {\n !(inputProps.checkedLink == null || inputProps.valueLink == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;\n}\nfunction _assertValueLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.value == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\\'t want to use valueLink.') : _prodInvariant('88') : void 0;\n}\n\nfunction _assertCheckedLink(inputProps) {\n _assertSingleLink(inputProps);\n !(inputProps.checked == null && inputProps.onChange == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\\'t want to use checkedLink') : _prodInvariant('89') : void 0;\n}\n\nvar propTypes = {\n value: function (props, propName, componentName) {\n if (!props[propName] || hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return 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`.');\n },\n checked: function (props, propName, componentName) {\n if (!props[propName] || props.onChange || props.readOnly || props.disabled) {\n return null;\n }\n return 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`.');\n },\n onChange: React.PropTypes.func\n};\n\nvar loggedTypeFailures = {};\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Provide a linked `value` attribute for controlled forms. You should not use\n * this outside of the ReactDOM controlled form components.\n */\nvar LinkedValueUtils = {\n checkPropTypes: function (tagName, props, owner) {\n for (var propName in propTypes) {\n if (propTypes.hasOwnProperty(propName)) {\n var error = propTypes[propName](props, propName, tagName, 'prop', null, ReactPropTypesSecret);\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var addendum = getDeclarationErrorAddendum(owner);\n process.env.NODE_ENV !== 'production' ? warning(false, 'Failed form propType: %s%s', error.message, addendum) : void 0;\n }\n }\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current value of the input either from value prop or link.\n */\n getValue: function (inputProps) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.value;\n }\n return inputProps.value;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @return {*} current checked status of the input either from checked prop\n * or link.\n */\n getChecked: function (inputProps) {\n if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.value;\n }\n return inputProps.checked;\n },\n\n /**\n * @param {object} inputProps Props for form component\n * @param {SyntheticEvent} event change event to handle\n */\n executeOnChange: function (inputProps, event) {\n if (inputProps.valueLink) {\n _assertValueLink(inputProps);\n return inputProps.valueLink.requestChange(event.target.value);\n } else if (inputProps.checkedLink) {\n _assertCheckedLink(inputProps);\n return inputProps.checkedLink.requestChange(event.target.checked);\n } else if (inputProps.onChange) {\n return inputProps.onChange.call(undefined, event);\n }\n }\n};\n\nmodule.exports = LinkedValueUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/LinkedValueUtils.js\n// module id = 77\n// module chunks = 0","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar injected = false;\n\nvar ReactComponentEnvironment = {\n\n /**\n * Optionally injectable hook for swapping out mount images in the middle of\n * the tree.\n */\n replaceNodeWithMarkup: null,\n\n /**\n * Optionally injectable hook for processing a queue of child updates. Will\n * later move into MultiChildComponents.\n */\n processChildrenUpdates: null,\n\n injection: {\n injectEnvironment: function (environment) {\n !!injected ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;\n ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;\n ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;\n injected = true;\n }\n }\n\n};\n\nmodule.exports = ReactComponentEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactComponentEnvironment.js\n// module id = 78\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar caughtError = null;\n\n/**\n * Call a function while guarding against errors that happens within it.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} a First argument\n * @param {*} b Second argument\n */\nfunction invokeGuardedCallback(name, func, a) {\n try {\n func(a);\n } catch (x) {\n if (caughtError === null) {\n caughtError = x;\n }\n }\n}\n\nvar ReactErrorUtils = {\n invokeGuardedCallback: invokeGuardedCallback,\n\n /**\n * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event\n * handler are sure to be rethrown by rethrowCaughtError.\n */\n invokeGuardedCallbackWithCatch: invokeGuardedCallback,\n\n /**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n rethrowCaughtError: function () {\n if (caughtError) {\n var error = caughtError;\n caughtError = null;\n throw error;\n }\n }\n};\n\nif (process.env.NODE_ENV !== 'production') {\n /**\n * To help development we can get better devtools integration by simulating a\n * real browser event.\n */\n if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n var fakeNode = document.createElement('react');\n ReactErrorUtils.invokeGuardedCallback = function (name, func, a) {\n var boundFunc = func.bind(null, a);\n var evtType = 'react-' + name;\n fakeNode.addEventListener(evtType, boundFunc, false);\n var evt = document.createEvent('Event');\n // $FlowFixMe https://github.com/facebook/flow/issues/2336\n evt.initEvent(evtType, false, false);\n fakeNode.dispatchEvent(evt);\n fakeNode.removeEventListener(evtType, boundFunc, false);\n };\n }\n}\n\nmodule.exports = ReactErrorUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactErrorUtils.js\n// module id = 79\n// module chunks = 0","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction enqueueUpdate(internalInstance) {\n ReactUpdates.enqueueUpdate(internalInstance);\n}\n\nfunction formatUnexpectedArgument(arg) {\n var type = typeof arg;\n if (type !== 'object') {\n return type;\n }\n var displayName = arg.constructor && arg.constructor.name || type;\n var keys = Object.keys(arg);\n if (keys.length > 0 && keys.length < 20) {\n return displayName + ' (keys: ' + keys.join(', ') + ')';\n }\n return displayName;\n}\n\nfunction getInternalInstanceReadyForUpdate(publicInstance, callerName) {\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (!internalInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var ctor = publicInstance.constructor;\n // Only warn when we have a callerName. Otherwise we should be silent.\n // We're probably calling from enqueueCallback. We don't want to warn\n // there because we already warned for the corresponding lifecycle method.\n process.env.NODE_ENV !== 'production' ? warning(!callerName, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, ctor && (ctor.displayName || ctor.name) || 'ReactClass') : void 0;\n }\n return null;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '%s(...): Cannot update during an existing state transition (such as ' + 'within `render` or another component\\'s constructor). Render methods ' + 'should be a pure function of props and state; constructor ' + 'side-effects are an anti-pattern, but can be moved to ' + '`componentWillMount`.', callerName) : void 0;\n }\n\n return internalInstance;\n}\n\n/**\n * ReactUpdateQueue allows for state updates to be scheduled into a later\n * reconciliation step.\n */\nvar ReactUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n var internalInstance = ReactInstanceMap.get(publicInstance);\n if (internalInstance) {\n // During componentWillMount and render this will still be null but after\n // that will always render to something. At least for now. So we can use\n // this hack.\n return !!internalInstance._renderedComponent;\n } else {\n return false;\n }\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @param {string} callerName Name of the calling function in the public API.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback, callerName) {\n ReactUpdateQueue.validateCallback(callback, callerName);\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance);\n\n // Previously we would throw an error if we didn't have an internal\n // instance. Since we want to make it a no-op instead, we mirror the same\n // behavior we have in other enqueue* methods.\n // We also need to ignore callbacks in componentWillMount. See\n // enqueueUpdates.\n if (!internalInstance) {\n return null;\n }\n\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n // TODO: The callback here is ignored when setState is called from\n // componentWillMount. Either fix it or disallow doing so completely in\n // favor of getInitialState. Alternatively, we can disallow\n // componentWillMount during server-side rendering.\n enqueueUpdate(internalInstance);\n },\n\n enqueueCallbackInternal: function (internalInstance, callback) {\n if (internalInstance._pendingCallbacks) {\n internalInstance._pendingCallbacks.push(callback);\n } else {\n internalInstance._pendingCallbacks = [callback];\n }\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'forceUpdate');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingForceUpdate = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'replaceState');\n\n if (!internalInstance) {\n return;\n }\n\n internalInstance._pendingStateQueue = [completeState];\n internalInstance._pendingReplaceState = true;\n\n enqueueUpdate(internalInstance);\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetState();\n process.env.NODE_ENV !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;\n }\n\n var internalInstance = getInternalInstanceReadyForUpdate(publicInstance, 'setState');\n\n if (!internalInstance) {\n return;\n }\n\n var queue = internalInstance._pendingStateQueue || (internalInstance._pendingStateQueue = []);\n queue.push(partialState);\n\n enqueueUpdate(internalInstance);\n },\n\n enqueueElementInternal: function (internalInstance, nextElement, nextContext) {\n internalInstance._pendingElement = nextElement;\n // TODO: introduce _pendingContext instead of setting it directly.\n internalInstance._context = nextContext;\n enqueueUpdate(internalInstance);\n },\n\n validateCallback: function (callback, callerName) {\n !(!callback || typeof callback === 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.', callerName, formatUnexpectedArgument(callback)) : _prodInvariant('122', callerName, formatUnexpectedArgument(callback)) : void 0;\n }\n\n};\n\nmodule.exports = ReactUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactUpdateQueue.js\n// module id = 80\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals MSApp */\n\n'use strict';\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\n\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n return function (arg0, arg1, arg2, arg3) {\n MSApp.execUnsafeLocalFunction(function () {\n return func(arg0, arg1, arg2, arg3);\n });\n };\n } else {\n return func;\n }\n};\n\nmodule.exports = createMicrosoftUnsafeLocalFunction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/createMicrosoftUnsafeLocalFunction.js\n// module id = 81\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\n\nfunction getEventCharCode(nativeEvent) {\n var charCode;\n var keyCode = nativeEvent.keyCode;\n\n if ('charCode' in nativeEvent) {\n charCode = nativeEvent.charCode;\n\n // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n if (charCode === 0 && keyCode === 13) {\n charCode = 13;\n }\n } else {\n // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n charCode = keyCode;\n }\n\n // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n // Must not discard the (non-)printable Enter-key.\n if (charCode >= 32 || charCode === 13) {\n return charCode;\n }\n\n return 0;\n}\n\nmodule.exports = getEventCharCode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getEventCharCode.js\n// module id = 82\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\nvar modifierKeyToProp = {\n 'Alt': 'altKey',\n 'Control': 'ctrlKey',\n 'Meta': 'metaKey',\n 'Shift': 'shiftKey'\n};\n\n// IE8 does not implement getModifierState so we simply map it to the only\n// modifier keys exposed by the event itself, does not support Lock-keys.\n// Currently, all major browsers except Chrome seems to support Lock-keys.\nfunction modifierStateGetter(keyArg) {\n var syntheticEvent = this;\n var nativeEvent = syntheticEvent.nativeEvent;\n if (nativeEvent.getModifierState) {\n return nativeEvent.getModifierState(keyArg);\n }\n var keyProp = modifierKeyToProp[keyArg];\n return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n return modifierStateGetter;\n}\n\nmodule.exports = getEventModifierState;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getEventModifierState.js\n// module id = 83\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n var target = nativeEvent.target || nativeEvent.srcElement || window;\n\n // Normalize SVG <use> element events #4963\n if (target.correspondingUseElement) {\n target = target.correspondingUseElement;\n }\n\n // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n // @see http://www.quirksmode.org/js/events_properties.html\n return target.nodeType === 3 ? target.parentNode : target;\n}\n\nmodule.exports = getEventTarget;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getEventTarget.js\n// module id = 84\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n useHasFeature = document.implementation && document.implementation.hasFeature &&\n // always returns true in newer browsers as per the standard.\n // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n if (!ExecutionEnvironment.canUseDOM || capture && !('addEventListener' in document)) {\n return false;\n }\n\n var eventName = 'on' + eventNameSuffix;\n var isSupported = eventName in document;\n\n if (!isSupported) {\n var element = document.createElement('div');\n element.setAttribute(eventName, 'return;');\n isSupported = typeof element[eventName] === 'function';\n }\n\n if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n // This is the only way to test support for the `wheel` event in IE9+.\n isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n }\n\n return isSupported;\n}\n\nmodule.exports = isEventSupported;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/isEventSupported.js\n// module id = 85\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Given a `prevElement` and `nextElement`, determines if the existing\n * instance should be updated as opposed to being destroyed or replaced by a new\n * instance. Both arguments are elements. This ensures that this logic can\n * operate on stateless trees without any backing instance.\n *\n * @param {?object} prevElement\n * @param {?object} nextElement\n * @return {boolean} True if the existing instance should be updated.\n * @protected\n */\n\nfunction shouldUpdateReactComponent(prevElement, nextElement) {\n var prevEmpty = prevElement === null || prevElement === false;\n var nextEmpty = nextElement === null || nextElement === false;\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n var prevType = typeof prevElement;\n var nextType = typeof nextElement;\n if (prevType === 'string' || prevType === 'number') {\n return nextType === 'string' || nextType === 'number';\n } else {\n return nextType === 'object' && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nmodule.exports = shouldUpdateReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/shouldUpdateReactComponent.js\n// module id = 86\n// module chunks = 0","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar warning = require('fbjs/lib/warning');\n\nvar validateDOMNesting = emptyFunction;\n\nif (process.env.NODE_ENV !== 'production') {\n // This validation code was written based on the HTML5 parsing spec:\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n //\n // Note: this does not catch all invalid nesting, nor does it try to (as it's\n // not clear what practical benefit doing so provides); instead, we warn only\n // for cases where the parser will give a parse tree differing from what React\n // intended. For example, <b><div></div></b> is invalid but we don't warn\n // because it still parses correctly; we do warn for other cases like nested\n // <p> tags where the beginning of the second element implicitly closes the\n // first, causing a confusing mess.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#special\n var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template',\n\n // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n // TODO: Distinguish by namespace here -- for <title>, including it here\n // errs on the side of fewer warnings\n 'foreignObject', 'desc', 'title'];\n\n // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n var buttonScopeTags = inScopeTags.concat(['button']);\n\n // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n\n var emptyAncestorInfo = {\n current: null,\n\n formTag: null,\n aTagInScope: null,\n buttonTagInScope: null,\n nobrTagInScope: null,\n pTagInButtonScope: null,\n\n listItemTagAutoclosing: null,\n dlItemTagAutoclosing: null\n };\n\n var updatedAncestorInfo = function (oldInfo, tag, instance) {\n var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);\n var info = { tag: tag, instance: instance };\n\n if (inScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.aTagInScope = null;\n ancestorInfo.buttonTagInScope = null;\n ancestorInfo.nobrTagInScope = null;\n }\n if (buttonScopeTags.indexOf(tag) !== -1) {\n ancestorInfo.pTagInButtonScope = null;\n }\n\n // See rules for 'li', 'dd', 'dt' start tags in\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n ancestorInfo.listItemTagAutoclosing = null;\n ancestorInfo.dlItemTagAutoclosing = null;\n }\n\n ancestorInfo.current = info;\n\n if (tag === 'form') {\n ancestorInfo.formTag = info;\n }\n if (tag === 'a') {\n ancestorInfo.aTagInScope = info;\n }\n if (tag === 'button') {\n ancestorInfo.buttonTagInScope = info;\n }\n if (tag === 'nobr') {\n ancestorInfo.nobrTagInScope = info;\n }\n if (tag === 'p') {\n ancestorInfo.pTagInButtonScope = info;\n }\n if (tag === 'li') {\n ancestorInfo.listItemTagAutoclosing = info;\n }\n if (tag === 'dd' || tag === 'dt') {\n ancestorInfo.dlItemTagAutoclosing = info;\n }\n\n return ancestorInfo;\n };\n\n /**\n * Returns whether\n */\n var isTagValidWithParent = function (tag, parentTag) {\n // First, let's check if we're in an unusual parsing mode...\n switch (parentTag) {\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n case 'select':\n return tag === 'option' || tag === 'optgroup' || tag === '#text';\n case 'optgroup':\n return tag === 'option' || tag === '#text';\n // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n // but\n case 'option':\n return tag === '#text';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n // No special behavior since these rules fall back to \"in body\" mode for\n // all except special table nodes which cause bad parsing behavior anyway.\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n case 'tr':\n return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n case 'tbody':\n case 'thead':\n case 'tfoot':\n return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n case 'colgroup':\n return tag === 'col' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n case 'table':\n return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n case 'head':\n return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n\n // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n case 'html':\n return tag === 'head' || tag === 'body';\n case '#document':\n return tag === 'html';\n }\n\n // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n // where the parsing rules cause implicit opens or closes to be added.\n // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n switch (tag) {\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n case 'rp':\n case 'rt':\n return impliedEndTags.indexOf(parentTag) === -1;\n\n case 'body':\n case 'caption':\n case 'col':\n case 'colgroup':\n case 'frame':\n case 'head':\n case 'html':\n case 'tbody':\n case 'td':\n case 'tfoot':\n case 'th':\n case 'thead':\n case 'tr':\n // These tags are only valid with a few parents that have special child\n // parsing rules -- if we're down here, then none of those matched and\n // so we allow it only if we don't know what the parent is, as all other\n // cases are invalid.\n return parentTag == null;\n }\n\n return true;\n };\n\n /**\n * Returns whether\n */\n var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n switch (tag) {\n case 'address':\n case 'article':\n case 'aside':\n case 'blockquote':\n case 'center':\n case 'details':\n case 'dialog':\n case 'dir':\n case 'div':\n case 'dl':\n case 'fieldset':\n case 'figcaption':\n case 'figure':\n case 'footer':\n case 'header':\n case 'hgroup':\n case 'main':\n case 'menu':\n case 'nav':\n case 'ol':\n case 'p':\n case 'section':\n case 'summary':\n case 'ul':\n\n case 'pre':\n case 'listing':\n\n case 'table':\n\n case 'hr':\n\n case 'xmp':\n\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6':\n return ancestorInfo.pTagInButtonScope;\n\n case 'form':\n return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n case 'li':\n return ancestorInfo.listItemTagAutoclosing;\n\n case 'dd':\n case 'dt':\n return ancestorInfo.dlItemTagAutoclosing;\n\n case 'button':\n return ancestorInfo.buttonTagInScope;\n\n case 'a':\n // Spec says something about storing a list of markers, but it sounds\n // equivalent to this check.\n return ancestorInfo.aTagInScope;\n\n case 'nobr':\n return ancestorInfo.nobrTagInScope;\n }\n\n return null;\n };\n\n /**\n * Given a ReactCompositeComponent instance, return a list of its recursive\n * owners, starting at the root and ending with the instance itself.\n */\n var findOwnerStack = function (instance) {\n if (!instance) {\n return [];\n }\n\n var stack = [];\n do {\n stack.push(instance);\n } while (instance = instance._currentElement._owner);\n stack.reverse();\n return stack;\n };\n\n var didWarn = {};\n\n validateDOMNesting = function (childTag, childText, childInstance, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n\n if (childText != null) {\n process.env.NODE_ENV !== 'production' ? warning(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null') : void 0;\n childTag = '#text';\n }\n\n var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n var problematic = invalidParent || invalidAncestor;\n\n if (problematic) {\n var ancestorTag = problematic.tag;\n var ancestorInstance = problematic.instance;\n\n var childOwner = childInstance && childInstance._currentElement._owner;\n var ancestorOwner = ancestorInstance && ancestorInstance._currentElement._owner;\n\n var childOwners = findOwnerStack(childOwner);\n var ancestorOwners = findOwnerStack(ancestorOwner);\n\n var minStackLen = Math.min(childOwners.length, ancestorOwners.length);\n var i;\n\n var deepestCommon = -1;\n for (i = 0; i < minStackLen; i++) {\n if (childOwners[i] === ancestorOwners[i]) {\n deepestCommon = i;\n } else {\n break;\n }\n }\n\n var UNKNOWN = '(unknown)';\n var childOwnerNames = childOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ancestorOwnerNames = ancestorOwners.slice(deepestCommon + 1).map(function (inst) {\n return inst.getName() || UNKNOWN;\n });\n var ownerInfo = [].concat(\n // If the parent and child instances have a common owner ancestor, start\n // with that -- otherwise we just start with the parent's owners.\n deepestCommon !== -1 ? childOwners[deepestCommon].getName() || UNKNOWN : [], ancestorOwnerNames, ancestorTag,\n // If we're warning about an invalid (non-parent) ancestry, add '...'\n invalidAncestor ? ['...'] : [], childOwnerNames, childTag).join(' > ');\n\n var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + ownerInfo;\n if (didWarn[warnKey]) {\n return;\n }\n didWarn[warnKey] = true;\n\n var tagDisplayName = childTag;\n var whitespaceInfo = '';\n if (childTag === '#text') {\n if (/\\S/.test(childText)) {\n tagDisplayName = 'Text nodes';\n } else {\n tagDisplayName = 'Whitespace text nodes';\n whitespaceInfo = ' Make sure you don\\'t have any extra whitespace between tags on ' + 'each line of your source code.';\n }\n } else {\n tagDisplayName = '<' + childTag + '>';\n }\n\n if (invalidParent) {\n var info = '';\n if (ancestorTag === 'table' && childTag === 'tr') {\n info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';\n }\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s ' + 'See %s.%s', tagDisplayName, ancestorTag, whitespaceInfo, ownerInfo, info) : void 0;\n } else {\n process.env.NODE_ENV !== 'production' ? warning(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>. See %s.', tagDisplayName, ancestorTag, ownerInfo) : void 0;\n }\n }\n };\n\n validateDOMNesting.updatedAncestorInfo = updatedAncestorInfo;\n\n // For testing\n validateDOMNesting.isTagValidInContext = function (tag, ancestorInfo) {\n ancestorInfo = ancestorInfo || emptyAncestorInfo;\n var parentInfo = ancestorInfo.current;\n var parentTag = parentInfo && parentInfo.tag;\n return isTagValidWithParent(tag, parentTag) && !findInvalidAncestorForTag(tag, ancestorInfo);\n };\n}\n\nmodule.exports = validateDOMNesting;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/validateDOMNesting.js\n// module id = 87\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _mdlUpgrade = require('./utils/mdlUpgrade');\n\nvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n accent: _react.PropTypes.bool,\n className: _react.PropTypes.string,\n colored: _react.PropTypes.bool,\n component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.func]),\n href: _react.PropTypes.string,\n primary: _react.PropTypes.bool,\n raised: _react.PropTypes.bool,\n ripple: _react.PropTypes.bool\n};\n\n// eslint-disable-next-line react/prefer-stateless-function\n\nvar Button = function (_React$Component) {\n _inherits(Button, _React$Component);\n\n function Button() {\n _classCallCheck(this, Button);\n\n return _possibleConstructorReturn(this, (Button.__proto__ || Object.getPrototypeOf(Button)).apply(this, arguments));\n }\n\n _createClass(Button, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n accent = _props.accent,\n className = _props.className,\n colored = _props.colored,\n primary = _props.primary,\n raised = _props.raised,\n ripple = _props.ripple,\n component = _props.component,\n href = _props.href,\n children = _props.children,\n otherProps = _objectWithoutProperties(_props, ['accent', 'className', 'colored', 'primary', 'raised', 'ripple', 'component', 'href', 'children']);\n\n var buttonClasses = (0, _classnames2.default)('mdl-button mdl-js-button', {\n 'mdl-js-ripple-effect': ripple,\n 'mdl-button--raised': raised,\n 'mdl-button--colored': colored,\n 'mdl-button--primary': primary,\n 'mdl-button--accent': accent\n }, className);\n\n return _react2.default.createElement(component || (href ? 'a' : 'button'), _extends({\n className: buttonClasses,\n href: href\n }, otherProps), children);\n }\n }]);\n\n return Button;\n}(_react2.default.Component);\n\nButton.propTypes = propTypes;\n\nexports.default = (0, _mdlUpgrade2.default)(Button);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Button.js\n// module id = 88\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _basicClassCreator = require('../utils/basicClassCreator');\n\nvar _basicClassCreator2 = _interopRequireDefault(_basicClassCreator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _basicClassCreator2.default)('Spacer', 'mdl-layout-spacer');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Layout/Spacer.js\n// module id = 89\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n activeTab: _react.PropTypes.number,\n className: _react.PropTypes.string,\n cssPrefix: _react.PropTypes.string.isRequired,\n onChange: _react.PropTypes.func\n};\n\nvar defaultProps = {\n activeTab: 0\n};\n\nvar TabBar = function (_React$Component) {\n _inherits(TabBar, _React$Component);\n\n function TabBar(props) {\n _classCallCheck(this, TabBar);\n\n var _this = _possibleConstructorReturn(this, (TabBar.__proto__ || Object.getPrototypeOf(TabBar)).call(this, props));\n\n _this.handleClickTab = _this.handleClickTab.bind(_this);\n return _this;\n }\n\n _createClass(TabBar, [{\n key: 'handleClickTab',\n value: function handleClickTab(tabId) {\n if (this.props.onChange) {\n this.props.onChange(tabId);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n activeTab = _props.activeTab,\n className = _props.className,\n cssPrefix = _props.cssPrefix,\n children = _props.children,\n otherProps = _objectWithoutProperties(_props, ['activeTab', 'className', 'cssPrefix', 'children']);\n\n var classes = (0, _classnames2.default)(_defineProperty({}, cssPrefix + '__tab-bar', true), className);\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: classes }, otherProps),\n _react2.default.Children.map(children, function (child, tabId) {\n return _react2.default.cloneElement(child, {\n cssPrefix: cssPrefix,\n tabId: tabId,\n active: tabId === activeTab,\n onTabClick: _this2.handleClickTab\n });\n })\n );\n }\n }]);\n\n return TabBar;\n}(_react2.default.Component);\n\nTabBar.propTypes = propTypes;\nTabBar.defaultProps = defaultProps;\n\nexports.default = TabBar;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Tabs/TabBar.js\n// module id = 90\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _reactDom = require('react-dom');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MDLComponent = function (_Component) {\n _inherits(MDLComponent, _Component);\n\n function MDLComponent() {\n _classCallCheck(this, MDLComponent);\n\n return _possibleConstructorReturn(this, (MDLComponent.__proto__ || Object.getPrototypeOf(MDLComponent)).apply(this, arguments));\n }\n\n _createClass(MDLComponent, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.recursive) {\n window.componentHandler.upgradeElements((0, _reactDom.findDOMNode)(this));\n } else {\n window.componentHandler.upgradeElement((0, _reactDom.findDOMNode)(this));\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.componentHandler.downgradeElements((0, _reactDom.findDOMNode)(this));\n }\n }, {\n key: 'render',\n value: function render() {\n return _react.Children.only(this.props.children);\n }\n }]);\n\n return MDLComponent;\n}(_react.Component);\n\nexports.default = MDLComponent;\n\n\nMDLComponent.propTypes = {\n recursive: _react.PropTypes.bool\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/utils/MDLComponent.js\n// module id = 91\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\nexports.loopAsync = loopAsync;\nexports.mapAsync = mapAsync;\nfunction loopAsync(turns, work, callback) {\n var currentTurn = 0,\n isDone = false;\n var sync = false,\n hasNext = false,\n doneArgs = void 0;\n\n function done() {\n isDone = true;\n if (sync) {\n // Iterate instead of recursing if possible.\n doneArgs = [].concat(Array.prototype.slice.call(arguments));\n return;\n }\n\n callback.apply(this, arguments);\n }\n\n function next() {\n if (isDone) {\n return;\n }\n\n hasNext = true;\n if (sync) {\n // Iterate instead of recursing if possible.\n return;\n }\n\n sync = true;\n\n while (!isDone && currentTurn < turns && hasNext) {\n hasNext = false;\n work.call(this, currentTurn++, next, done);\n }\n\n sync = false;\n\n if (isDone) {\n // This means the loop finished synchronously.\n callback.apply(this, doneArgs);\n return;\n }\n\n if (currentTurn >= turns && hasNext) {\n isDone = true;\n callback();\n }\n }\n\n next();\n}\n\nfunction mapAsync(array, work, callback) {\n var length = array.length;\n var values = [];\n\n if (length === 0) return callback(null, values);\n\n var isDone = false,\n doneCount = 0;\n\n function done(index, error, value) {\n if (isDone) return;\n\n if (error) {\n isDone = true;\n callback(error);\n } else {\n values[index] = value;\n\n isDone = ++doneCount === length;\n\n if (isDone) callback(null, values);\n }\n }\n\n array.forEach(function (item, index) {\n work(item, index, function (error, value) {\n done(index, error, value);\n });\n });\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/AsyncUtils.js\n// module id = 92\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.ContextProvider = ContextProvider;\nexports.ContextSubscriber = ContextSubscriber;\n\nvar _react = require('react');\n\n// Works around issues with context updates failing to propagate.\n// Caveat: the context value is expected to never change its identity.\n// https://github.com/facebook/react/issues/2517\n// https://github.com/reactjs/react-router/issues/470\n\nvar contextProviderShape = _react.PropTypes.shape({\n subscribe: _react.PropTypes.func.isRequired,\n eventIndex: _react.PropTypes.number.isRequired\n});\n\nfunction makeContextName(name) {\n return '@@contextSubscriber/' + name;\n}\n\nfunction ContextProvider(name) {\n var _childContextTypes, _ref2;\n\n var contextName = makeContextName(name);\n var listenersKey = contextName + '/listeners';\n var eventIndexKey = contextName + '/eventIndex';\n var subscribeKey = contextName + '/subscribe';\n\n return _ref2 = {\n childContextTypes: (_childContextTypes = {}, _childContextTypes[contextName] = contextProviderShape.isRequired, _childContextTypes),\n\n getChildContext: function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextName] = {\n eventIndex: this[eventIndexKey],\n subscribe: this[subscribeKey]\n }, _ref;\n },\n componentWillMount: function componentWillMount() {\n this[listenersKey] = [];\n this[eventIndexKey] = 0;\n },\n componentWillReceiveProps: function componentWillReceiveProps() {\n this[eventIndexKey]++;\n },\n componentDidUpdate: function componentDidUpdate() {\n var _this = this;\n\n this[listenersKey].forEach(function (listener) {\n return listener(_this[eventIndexKey]);\n });\n }\n }, _ref2[subscribeKey] = function (listener) {\n var _this2 = this;\n\n // No need to immediately call listener here.\n this[listenersKey].push(listener);\n\n return function () {\n _this2[listenersKey] = _this2[listenersKey].filter(function (item) {\n return item !== listener;\n });\n };\n }, _ref2;\n}\n\nfunction ContextSubscriber(name) {\n var _contextTypes, _ref4;\n\n var contextName = makeContextName(name);\n var lastRenderedEventIndexKey = contextName + '/lastRenderedEventIndex';\n var handleContextUpdateKey = contextName + '/handleContextUpdate';\n var unsubscribeKey = contextName + '/unsubscribe';\n\n return _ref4 = {\n contextTypes: (_contextTypes = {}, _contextTypes[contextName] = contextProviderShape, _contextTypes),\n\n getInitialState: function getInitialState() {\n var _ref3;\n\n if (!this.context[contextName]) {\n return {};\n }\n\n return _ref3 = {}, _ref3[lastRenderedEventIndexKey] = this.context[contextName].eventIndex, _ref3;\n },\n componentDidMount: function componentDidMount() {\n if (!this.context[contextName]) {\n return;\n }\n\n this[unsubscribeKey] = this.context[contextName].subscribe(this[handleContextUpdateKey]);\n },\n componentWillReceiveProps: function componentWillReceiveProps() {\n var _setState;\n\n if (!this.context[contextName]) {\n return;\n }\n\n this.setState((_setState = {}, _setState[lastRenderedEventIndexKey] = this.context[contextName].eventIndex, _setState));\n },\n componentWillUnmount: function componentWillUnmount() {\n if (!this[unsubscribeKey]) {\n return;\n }\n\n this[unsubscribeKey]();\n this[unsubscribeKey] = null;\n }\n }, _ref4[handleContextUpdateKey] = function (eventIndex) {\n if (eventIndex !== this.state[lastRenderedEventIndexKey]) {\n var _setState2;\n\n this.setState((_setState2 = {}, _setState2[lastRenderedEventIndexKey] = eventIndex, _setState2));\n }\n }, _ref4;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/ContextUtils.js\n// module id = 93\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.locationShape = exports.routerShape = undefined;\n\nvar _react = require('react');\n\nvar func = _react.PropTypes.func,\n object = _react.PropTypes.object,\n shape = _react.PropTypes.shape,\n string = _react.PropTypes.string;\nvar routerShape = exports.routerShape = shape({\n push: func.isRequired,\n replace: func.isRequired,\n go: func.isRequired,\n goBack: func.isRequired,\n goForward: func.isRequired,\n setRouteLeaveHook: func.isRequired,\n isActive: func.isRequired\n});\n\nvar locationShape = exports.locationShape = shape({\n pathname: string.isRequired,\n search: string.isRequired,\n state: object,\n action: string.isRequired,\n key: string\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/PropTypes.js\n// module id = 94\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _getRouteParams = require('./getRouteParams');\n\nvar _getRouteParams2 = _interopRequireDefault(_getRouteParams);\n\nvar _ContextUtils = require('./ContextUtils');\n\nvar _RouteUtils = require('./RouteUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n array = _React$PropTypes.array,\n func = _React$PropTypes.func,\n object = _React$PropTypes.object;\n\n/**\n * A <RouterContext> renders the component tree for a given router state\n * and sets the history object and the current location in context.\n */\n\nvar RouterContext = _react2.default.createClass({\n displayName: 'RouterContext',\n\n\n mixins: [(0, _ContextUtils.ContextProvider)('router')],\n\n propTypes: {\n router: object.isRequired,\n location: object.isRequired,\n routes: array.isRequired,\n params: object.isRequired,\n components: array.isRequired,\n createElement: func.isRequired\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n createElement: _react2.default.createElement\n };\n },\n\n\n childContextTypes: {\n router: object.isRequired\n },\n\n getChildContext: function getChildContext() {\n return {\n router: this.props.router\n };\n },\n createElement: function createElement(component, props) {\n return component == null ? null : this.props.createElement(component, props);\n },\n render: function render() {\n var _this = this;\n\n var _props = this.props,\n location = _props.location,\n routes = _props.routes,\n params = _props.params,\n components = _props.components,\n router = _props.router;\n\n var element = null;\n\n if (components) {\n element = components.reduceRight(function (element, components, index) {\n if (components == null) return element; // Don't create new children; use the grandchildren.\n\n var route = routes[index];\n var routeParams = (0, _getRouteParams2.default)(route, params);\n var props = {\n location: location,\n params: params,\n route: route,\n router: router,\n routeParams: routeParams,\n routes: routes\n };\n\n if ((0, _RouteUtils.isReactChildren)(element)) {\n props.children = element;\n } else if (element) {\n for (var prop in element) {\n if (Object.prototype.hasOwnProperty.call(element, prop)) props[prop] = element[prop];\n }\n }\n\n if ((typeof components === 'undefined' ? 'undefined' : _typeof(components)) === 'object') {\n var elements = {};\n\n for (var key in components) {\n if (Object.prototype.hasOwnProperty.call(components, key)) {\n // Pass through the key as a prop to createElement to allow\n // custom createElement functions to know which named component\n // they're rendering, for e.g. matching up to fetched data.\n elements[key] = _this.createElement(components[key], _extends({\n key: key }, props));\n }\n }\n\n return elements;\n }\n\n return _this.createElement(components, props);\n }, element);\n }\n\n !(element === null || element === false || _react2.default.isValidElement(element)) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'The root route must render a single element') : (0, _invariant2.default)(false) : void 0;\n\n return element;\n }\n});\n\nexports.default = RouterContext;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/RouterContext.js\n// module id = 95\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar canDefineProperty = require('./canDefineProperty');\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nReactComponent.prototype.isReactComponent = {};\n\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\nReactComponent.prototype.setState = function (partialState, callback) {\n !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;\n this.updater.enqueueSetState(this, partialState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'setState');\n }\n};\n\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\nReactComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'forceUpdate');\n }\n};\n\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\nif (process.env.NODE_ENV !== 'production') {\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n var defineDeprecationWarning = function (methodName, info) {\n if (canDefineProperty) {\n Object.defineProperty(ReactComponent.prototype, methodName, {\n get: function () {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]) : void 0;\n return undefined;\n }\n });\n }\n };\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nmodule.exports = ReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactComponent.js\n// module id = 96\n// module chunks = 0","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounted or mounting component. ' + 'This usually means you called %s() on an unmounted component. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the abstract API for an update queue.\n */\nvar ReactNoopUpdateQueue = {\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n enqueueCallback: function (publicInstance, callback) {},\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nmodule.exports = ReactNoopUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactNoopUpdateQueue.js\n// module id = 97\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.compose = exports.applyMiddleware = exports.bindActionCreators = exports.combineReducers = exports.createStore = undefined;\n\nvar _createStore = require('./createStore');\n\nvar _createStore2 = _interopRequireDefault(_createStore);\n\nvar _combineReducers = require('./combineReducers');\n\nvar _combineReducers2 = _interopRequireDefault(_combineReducers);\n\nvar _bindActionCreators = require('./bindActionCreators');\n\nvar _bindActionCreators2 = _interopRequireDefault(_bindActionCreators);\n\nvar _applyMiddleware = require('./applyMiddleware');\n\nvar _applyMiddleware2 = _interopRequireDefault(_applyMiddleware);\n\nvar _compose = require('./compose');\n\nvar _compose2 = _interopRequireDefault(_compose);\n\nvar _warning = require('./utils/warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/*\n* This is a dummy function to check if the function name has been altered by minification.\n* If the function has been minified and NODE_ENV !== 'production', warn the user.\n*/\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n (0, _warning2['default'])('You are currently using minified code outside of NODE_ENV === \\'production\\'. ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexports.createStore = _createStore2['default'];\nexports.combineReducers = _combineReducers2['default'];\nexports.bindActionCreators = _bindActionCreators2['default'];\nexports.applyMiddleware = _applyMiddleware2['default'];\nexports.compose = _compose2['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/lib/index.js\n// module id = 98\n// module chunks = 0","import React, { Component, PropTypes } from 'react';\nimport { Textfield, Switch } from 'react-mdl';\nimport StrategiesSection from './strategies-section-container';\n\nimport { FormButtons, HeaderTitle } from '../../common';\n\nconst trim = (value) => {\n if (value && value.trim) {\n return value.trim();\n } else {\n return value;\n }\n};\n\nclass AddFeatureToggleComponent extends Component {\n\n componentWillMount () {\n // TODO unwind this stuff\n if (this.props.initCallRequired === true) {\n this.props.init(this.props.input);\n }\n }\n\n render () {\n const {\n input,\n setValue,\n validateName,\n addStrategy,\n removeStrategy,\n updateStrategy,\n onSubmit,\n onCancel,\n editmode = false,\n title,\n } = this.props;\n\n const {\n name, // eslint-disable-line\n nameError,\n description,\n enabled,\n } = input;\n const configuredStrategies = input.strategies || [];\n\n return (\n <form onSubmit={onSubmit(input)}>\n {title && <HeaderTitle title={title} />}\n <section>\n <Textfield\n floatingLabel\n label=\"Name\"\n name=\"name\"\n disabled={editmode}\n required\n value={name}\n error={nameError}\n onBlur={(v) => validateName(v.target.value)}\n onChange={(v) => setValue('name', trim(v.target.value))} />\n <br />\n <Textfield\n floatingLabel\n style={{ width: '100%' }}\n rows={1}\n label=\"Description\"\n required\n value={description}\n onChange={(v) => setValue('description', v.target.value)} />\n\n <br />\n\n <Switch\n checked={enabled}\n onChange={() => {\n setValue('enabled', !enabled);\n }}>Enabled</Switch>\n <hr />\n </section>\n\n <StrategiesSection\n configuredStrategies={configuredStrategies}\n addStrategy={addStrategy}\n updateStrategy={updateStrategy}\n removeStrategy={removeStrategy} />\n\n <br />\n <FormButtons\n submitText={editmode ? 'Update' : 'Create'}\n onCancel={onCancel}\n />\n </form>\n );\n }\n\n};\n\nAddFeatureToggleComponent.propTypes = {\n input: PropTypes.object,\n setValue: PropTypes.func.isRequired,\n addStrategy: PropTypes.func.isRequired,\n removeStrategy: PropTypes.func.isRequired,\n updateStrategy: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n validateName: PropTypes.func.isRequired,\n editmode: PropTypes.bool,\n};\n\nexport default AddFeatureToggleComponent;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/form/index.jsx","import React, { PropTypes, Component } from 'react';\nimport styles from './progress-styles.scss';\n\nclass Progress extends Component {\n constructor (props) {\n super(props);\n\n this.state = {\n percentage: props.initialAnimation ? 0 : props.percentage,\n percentageText: props.initialAnimation ? 0 : props.percentage,\n };\n }\n\n componentDidMount () {\n if (this.props.initialAnimation) {\n this.initialTimeout = setTimeout(() => {\n this.rafTimerInit = window.requestAnimationFrame(() => {\n this.setState({\n percentage: this.props.percentage,\n });\n });\n }, 0);\n }\n }\n\n componentWillReceiveProps ({ percentage }) {\n if (this.state.percentage !== percentage) {\n const nextState = { percentage };\n if (this.props.animatePercentageText) {\n this.animateTo(percentage, this.getTarget(percentage));\n } else {\n nextState.percentageText = percentage;\n }\n this.setState(nextState);\n }\n }\n\n getTarget (target) {\n const start = this.state.percentageText;\n const TOTAL_ANIMATION_TIME = 5000;\n const diff = start > target ? -(start - target) : target - start;\n const perCycle = TOTAL_ANIMATION_TIME / diff;\n const cyclesCounter = Math.round(Math.abs(TOTAL_ANIMATION_TIME / perCycle));\n const perCycleTime = Math.round(Math.abs(perCycle));\n\n return {\n start,\n target,\n cyclesCounter,\n perCycleTime,\n increment: diff / cyclesCounter,\n };\n }\n\n animateTo (percentage, targetState) {\n cancelAnimationFrame(this.rafCounterTimer);\n clearTimeout(this.nextTimer);\n\n const current = this.state.percentageText;\n\n targetState.cyclesCounter --;\n if (targetState.cyclesCounter <= 0) {\n this.setState({ percentageText: targetState.target });\n return;\n }\n\n const next = Math.round(current + targetState.increment);\n this.rafCounterTimer = requestAnimationFrame(() => {\n this.setState({ percentageText: next });\n this.nextTimer = setTimeout(() => {\n this.animateTo(next, targetState);\n }, targetState.perCycleTime);\n });\n }\n\n\n componentWillUnmount () {\n clearTimeout(this.initialTimeout);\n clearTimeout(this.nextTimer);\n window.cancelAnimationFrame(this.rafTimerInit);\n window.cancelAnimationFrame(this.rafCounterTimer);\n }\n\n render () {\n const { strokeWidth } = this.props;\n const radius = (50 - strokeWidth / 2);\n const pathDescription = `\n M 50,50 m 0,-${radius}\n a ${radius},${radius} 0 1 1 0,${2 * radius}\n a ${radius},${radius} 0 1 1 0,-${2 * radius}\n `;\n\n const diameter = Math.PI * 2 * radius;\n const progressStyle = {\n strokeDasharray: `${diameter}px ${diameter}px`,\n strokeDashoffset: `${((100 - this.state.percentage) / 100 * diameter)}px`,\n };\n\n return (<svg viewBox=\"0 0 100 100\">\n <path\n className={styles.trail}\n d={pathDescription}\n strokeWidth={strokeWidth}\n fillOpacity={0}\n />\n\n <path\n className={styles.path}\n d={pathDescription}\n strokeWidth={strokeWidth}\n fillOpacity={0}\n style={progressStyle}\n />\n\n <text\n className={styles.text}\n x={50}\n y={50}\n >{this.state.percentageText}%</text>\n </svg>);\n }\n}\n\nProgress.propTypes = {\n percentage: PropTypes.number.isRequired,\n strokeWidth: PropTypes.number,\n initialAnimation: PropTypes.bool,\n animatePercentageText: PropTypes.bool,\n textForPercentage: PropTypes.func,\n};\n\nProgress.defaultProps = {\n strokeWidth: 8,\n animatePercentageText: false,\n initialAnimation: false,\n};\n\nexport default Progress;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/progress.jsx","import { connect } from 'react-redux';\nimport HistoryListToggleComponent from './history-list-component';\nimport { updateSettingForGroup } from '../../store/settings/actions';\n\nconst mapStateToProps = (state) => {\n const settings = state.settings.toJS().history || {};\n\n return {\n settings,\n };\n};\n\nconst HistoryListContainer = connect(mapStateToProps, {\n updateSetting: updateSettingForGroup('history'),\n})(HistoryListToggleComponent);\n\nexport default HistoryListContainer;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/history/history-list-container.jsx","import { connect } from 'react-redux';\nimport HistoryListToggleComponent from './history-list-toggle-component';\nimport { fetchHistoryForToggle } from '../../store/history-actions';\n\nfunction getHistoryFromToggle (state, toggleName) {\n if (!toggleName) {\n return [];\n }\n\n if (state.history.hasIn(['toggles', toggleName])) {\n return state.history.getIn(['toggles', toggleName]).toArray();\n }\n\n return [];\n}\n\nconst mapStateToProps = (state, props) => ({\n history: getHistoryFromToggle(state, props.toggleName),\n});\n\nconst HistoryListToggleContainer = connect(mapStateToProps, {\n fetchHistoryForToggle,\n})(HistoryListToggleComponent);\n\nexport default HistoryListToggleContainer;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/history/history-list-toggle-container.jsx","import React, { PropTypes, Component } from 'react';\n\nimport { Textfield, IconButton, Menu, MenuItem, Checkbox } from 'react-mdl';\nimport { FormButtons } from '../common';\n\n\nconst trim = (value) => {\n if (value && value.trim) {\n return value.trim();\n } else {\n return value;\n }\n};\n\nfunction gerArrayWithEntries (num) {\n return Array.from(Array(num));\n}\n\nconst Parameter = ({ set, input = {}, index }) => (\n <div style={{ background: '#f1f1f1', padding: '16px 20px', marginBottom: '20px' }}>\n <Textfield\n style={{ width: '50%' }}\n floatingLabel\n label={`Parameter name ${index + 1}`}\n onChange={({ target }) => set({ name: target.value }, true)}\n value={input.name} />\n <div style={{ position: 'relative', display: 'inline-block' }}>\n <span className=\"mdl-outline\" id={`${index}-type-menu`} style={{\n borderRadius: '2px',\n cursor: 'pointer',\n boxShadow: '0 2px 2px 0 rgba(0,0,0,.04),0 3px 1px -2px rgba(0,0,0,.1),0 1px 5px 0 rgba(0,0,0,.12)',\n marginLeft: '10px',\n border: '1px solid #f1f1f1',\n backgroundColor: 'white',\n padding: '10px 2px 10px 20px',\n }}>\n {input.type || 'string'}\n <IconButton name=\"arrow_drop_down\" onClick={(evt) => evt.preventDefault()} />\n </span>\n <Menu target={`${index}-type-menu`} align=\"right\">\n <MenuItem onClick={() => set({ type: 'string' })}>string</MenuItem>\n <MenuItem onClick={() => set({ type: 'percentage' })}>percentage</MenuItem>\n <MenuItem onClick={() => set({ type: 'list' })}>list</MenuItem>\n <MenuItem onClick={() => set({ type: 'number' })}>number</MenuItem>\n </Menu>\n </div>\n <Textfield\n floatingLabel\n style={{ width: '100%' }}\n rows={2}\n label={`Parameter name ${index + 1} description`}\n onChange={({ target }) => set({ description: target.value })}\n value={input.description}\n />\n <Checkbox\n label=\"Required\"\n checked={!!input.required}\n onChange={() => set({ required: !input.required })}\n ripple\n defaultChecked\n />\n </div>\n);\n\nconst EditHeader = () => (\n <div>\n <h4>Edit strategy</h4>\n <p style={{ background: '#ffb7b7', padding: '16px 20px' }}>\n Be carefull! Changing a strategy definition might also require changes to the\n implementation in the clients.\n </p>\n </div>\n);\n\nconst CreateHeader = () => (\n <div>\n <h4>Create a new Strategy definition</h4>\n </div>\n);\n\n\nconst Parameters = ({ input = [], count = 0, updateInList }) => (\n<div>{\n gerArrayWithEntries(count)\n .map((v, i) => <Parameter\n key={i}\n set={(v) => updateInList('parameters', i, v, true)}\n index={i}\n input={input[i]}\n />)\n}</div>);\n\nclass AddStrategy extends Component {\n\n static propTypes () {\n return {\n input: PropTypes.object,\n setValue: PropTypes.func,\n updateInList: PropTypes.func,\n incValue: PropTypes.func,\n clear: PropTypes.func,\n onCancel: PropTypes.func,\n onSubmit: PropTypes.func,\n editmode: PropTypes.bool,\n initCallRequired: PropTypes.bool,\n init: PropTypes.func,\n };\n }\n\n componentWillMount () {\n // TODO unwind this stuff\n if (this.props.initCallRequired === true) {\n this.props.init(this.props.input);\n if (this.props.input.parameters) {\n this.props.setValue('_params', this.props.input.parameters.length);\n }\n }\n }\n\n\n render () {\n const {\n input,\n setValue,\n updateInList,\n incValue,\n onCancel,\n editmode = false,\n onSubmit,\n } = this.props;\n\n return (\n <form onSubmit={onSubmit(input)}>\n {editmode ? <EditHeader /> : <CreateHeader />}\n <Textfield label=\"Strategy name\"\n floatingLabel\n name=\"name\"\n required\n disabled={editmode}\n pattern=\"^[0-9a-zA-Z\\.\\-]+$\"\n onChange={({ target }) => setValue('name', trim(target.value))}\n value={input.name}\n />\n <br />\n <Textfield\n floatingLabel\n style={{ width: '100%' }}\n rows={1}\n label=\"Description\"\n name=\"description\"\n onChange={({ target }) => setValue('description', target.value)}\n value={input.description}\n />\n\n\n <Parameters input={input.parameters} count={input._params} updateInList={updateInList} />\n <IconButton raised name=\"add\" title=\"Add parameter\" onClick={(e) => {\n e.preventDefault();\n incValue('_params');\n }}/>  Add parameter\n\n\n <br />\n <hr />\n\n <FormButtons\n submitText={editmode ? 'Update' : 'Create'}\n onCancel={onCancel}\n />\n </form>\n );\n }\n}\n\nexport default AddStrategy;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/strategies/add-strategy.jsx","import { throwIfNotSuccess, headers } from './helper';\n\nconst URI = '/api/client/applications';\n\nfunction fetchAll () {\n return fetch(URI, { headers })\n .then(throwIfNotSuccess)\n .then(response => response.json());\n}\n\nfunction fetchApplication (appName) {\n return fetch(`${URI}/${appName}`, { headers })\n .then(throwIfNotSuccess)\n .then(response => response.json());\n}\n\nfunction fetchApplicationsWithStrategyName (strategyName) {\n return fetch(`${URI}?strategyName=${strategyName}`, { headers })\n .then(throwIfNotSuccess)\n .then(response => response.json());\n}\n\nfunction storeApplicationMetaData (appName, key, value) {\n const data = {};\n data[key] = value;\n return fetch(`${URI}/${appName}`, {\n method: 'POST',\n headers,\n body: JSON.stringify(data),\n credentials: 'include',\n }).then(throwIfNotSuccess);\n}\n\nmodule.exports = {\n fetchApplication,\n fetchAll,\n fetchApplicationsWithStrategyName,\n storeApplicationMetaData,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/data/applications-api.js","import api from '../data/archive-api';\n\nexport const REVIVE_TOGGLE = 'REVIVE_TOGGLE';\nexport const RECEIVE_ARCHIVE = 'RECEIVE_ARCHIVE';\nexport const ERROR_RECEIVE_ARCHIVE = 'ERROR_RECEIVE_ARCHIVE';\n\nconst receiveArchive = (json) => ({\n type: RECEIVE_ARCHIVE,\n value: json.features,\n});\n\nconst reviveToggle = (archiveFeatureToggle) => ({\n type: REVIVE_TOGGLE,\n value: archiveFeatureToggle,\n});\n\nconst errorReceiveArchive = (statusCode) => ({\n type: ERROR_RECEIVE_ARCHIVE,\n statusCode,\n});\n\nexport function revive (featureToggle) {\n return dispatch => api.revive(featureToggle)\n .then(() => dispatch(reviveToggle(featureToggle)))\n .catch(error => dispatch(errorReceiveArchive(error)));\n}\n\n\nexport function fetchArchive () {\n return dispatch => api.fetchAll()\n .then(json => dispatch(receiveArchive(json)))\n .catch(error => dispatch(errorReceiveArchive(error)));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/archive-actions.js","export const MUTE_ERRORS = 'MUTE_ERRORS';\nexport const MUTE_ERROR = 'MUTE_ERROR';\n\nexport const muteErrors = () => ({ type: MUTE_ERRORS });\n\nexport const muteError = (error) => ({ type: MUTE_ERROR, error });\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/error-actions.js","export const actions = {\n SET_VALUE: 'SET_VALUE',\n INCREMENT_VALUE: 'INCREMENT_VALUE',\n LIST_PUSH: 'LIST_PUSH',\n LIST_POP: 'LIST_POP',\n LIST_UP: 'LIST_UP',\n CLEAR: 'CLEAR',\n INIT: 'INIT',\n};\n\nexport const createInit = ({ id, value }) => ({ type: actions.INIT, id, value });\nexport const createInc = ({ id, key }) => ({ type: actions.INCREMENT_VALUE, id, key });\nexport const createSet = ({ id, key, value }) => ({ type: actions.SET_VALUE, id, key, value });\nexport const createPush = ({ id, key, value }) => ({ type: actions.LIST_PUSH, id, key, value });\nexport const createPop = ({ id, key, index }) => ({ type: actions.LIST_POP, id, key, index });\nexport const createUp = ({ id, key, index, newValue, merge }) => ({ type: actions.LIST_UP, id, key, index, newValue, merge });\nexport const createClear = ({ id }) => ({ type: actions.CLEAR, id });\n\nexport default actions;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/input-actions.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"action\":\"feature__action___3x5M_\",\"yes\":\"feature__yes___hSOLA\",\"no\":\"feature__no___2MSTG\",\"link\":\"feature__link___17O3D\",\"iconList\":\"feature__iconList___hHnHM\",\"iconListItem\":\"feature__iconListItem___2v4ND\",\"iconListItemChip\":\"feature__iconListItemChip___3BVh2\",\"topList\":\"feature__topList___lzJpE\",\"topListItem0\":\"feature__topListItem0___3my85\",\"topListItem\":\"feature__topListItem___2FEEF\",\"topListItem2\":\"feature__topListItem2___fjd8v\",\"hideLt960\":\"feature__hideLt960___3-OB2\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/feature/feature.scss\n// module id = 108\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @typechecks\n */\n\nvar emptyFunction = require('./emptyFunction');\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (process.env.NODE_ENV !== 'production') {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/EventListener.js\n// module id = 109\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * @param {DOMElement} node input/textarea to focus\n */\n\nfunction focusNode(node) {\n // IE8 can throw \"Can't move focus to the control because it is invisible,\n // not enabled, or of a type that does not accept the focus.\" for all kinds of\n // reasons that are too expensive and fragile to test.\n try {\n node.focus();\n } catch (e) {}\n}\n\nmodule.exports = focusNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/focusNode.js\n// module id = 110\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/* eslint-disable fb-www/typeof-undefined */\n\n/**\n * Same as document.activeElement but wraps in a try-catch block. In IE it is\n * not safe to call document.activeElement if there is nothing focused.\n *\n * The activeElement will be null only if the document or document body is not\n * yet defined.\n */\nfunction getActiveElement() /*?DOMElement*/{\n if (typeof document === 'undefined') {\n return null;\n }\n try {\n return document.activeElement || document.body;\n } catch (e) {\n return document.body;\n }\n}\n\nmodule.exports = getActiveElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/getActiveElement.js\n// module id = 111\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.readState = exports.saveState = undefined;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar QuotaExceededErrors = {\n QuotaExceededError: true,\n QUOTA_EXCEEDED_ERR: true\n};\n\nvar SecurityErrors = {\n SecurityError: true\n};\n\nvar KeyPrefix = '@@History/';\n\nvar createKey = function createKey(key) {\n return KeyPrefix + key;\n};\n\nvar saveState = exports.saveState = function saveState(key, state) {\n if (!window.sessionStorage) {\n // Session storage is not available or hidden.\n // sessionStorage is undefined in Internet Explorer when served via file protocol.\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available') : void 0;\n\n return;\n }\n\n try {\n if (state == null) {\n window.sessionStorage.removeItem(createKey(key));\n } else {\n window.sessionStorage.setItem(createKey(key), JSON.stringify(state));\n }\n } catch (error) {\n if (SecurityErrors[error.name]) {\n // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n // attempt to access window.sessionStorage.\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available due to security settings') : void 0;\n\n return;\n }\n\n if (QuotaExceededErrors[error.name] && window.sessionStorage.length === 0) {\n // Safari \"private mode\" throws QuotaExceededError.\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to save state; sessionStorage is not available in Safari private mode') : void 0;\n\n return;\n }\n\n throw error;\n }\n};\n\nvar readState = exports.readState = function readState(key) {\n var json = void 0;\n try {\n json = window.sessionStorage.getItem(createKey(key));\n } catch (error) {\n if (SecurityErrors[error.name]) {\n // Blocking cookies in Chrome/Firefox/Safari throws SecurityError on any\n // attempt to access window.sessionStorage.\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, '[history] Unable to read state; sessionStorage is not available due to security settings') : void 0;\n\n return undefined;\n }\n }\n\n if (json) {\n try {\n return JSON.parse(json);\n } catch (error) {\n // Ignore invalid JSON.\n }\n }\n\n return undefined;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/DOMStateStorage.js\n// module id = 112\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar useBasename = function useBasename(createHistory) {\n return function () {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var history = createHistory(options);\n var basename = options.basename;\n\n\n var addBasename = function addBasename(location) {\n if (!location) return location;\n\n if (basename && location.basename == null) {\n if (location.pathname.indexOf(basename) === 0) {\n location.pathname = location.pathname.substring(basename.length);\n location.basename = basename;\n\n if (location.pathname === '') location.pathname = '/';\n } else {\n location.basename = '';\n }\n }\n\n return location;\n };\n\n var prependBasename = function prependBasename(location) {\n if (!basename) return location;\n\n var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location;\n var pname = object.pathname;\n var normalizedBasename = basename.slice(-1) === '/' ? basename : basename + '/';\n var normalizedPathname = pname.charAt(0) === '/' ? pname.slice(1) : pname;\n var pathname = normalizedBasename + normalizedPathname;\n\n return _extends({}, object, {\n pathname: pathname\n });\n };\n\n // Override all read methods with basename-aware versions.\n var getCurrentLocation = function getCurrentLocation() {\n return addBasename(history.getCurrentLocation());\n };\n\n var listenBefore = function listenBefore(hook) {\n return history.listenBefore(function (location, callback) {\n return (0, _runTransitionHook2.default)(hook, addBasename(location), callback);\n });\n };\n\n var listen = function listen(listener) {\n return history.listen(function (location) {\n return listener(addBasename(location));\n });\n };\n\n // Override all write methods with basename-aware versions.\n var push = function push(location) {\n return history.push(prependBasename(location));\n };\n\n var replace = function replace(location) {\n return history.replace(prependBasename(location));\n };\n\n var createPath = function createPath(location) {\n return history.createPath(prependBasename(location));\n };\n\n var createHref = function createHref(location) {\n return history.createHref(prependBasename(location));\n };\n\n var createLocation = function createLocation(location) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return addBasename(history.createLocation.apply(history, [prependBasename(location)].concat(args)));\n };\n\n return _extends({}, history, {\n getCurrentLocation: getCurrentLocation,\n listenBefore: listenBefore,\n listen: listen,\n push: push,\n replace: replace,\n createPath: createPath,\n createHref: createHref,\n createLocation: createLocation\n });\n };\n};\n\nexports.default = useBasename;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/useBasename.js\n// module id = 113\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _queryString = require('query-string');\n\nvar _runTransitionHook = require('./runTransitionHook');\n\nvar _runTransitionHook2 = _interopRequireDefault(_runTransitionHook);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaultStringifyQuery = function defaultStringifyQuery(query) {\n return (0, _queryString.stringify)(query).replace(/%20/g, '+');\n};\n\nvar defaultParseQueryString = _queryString.parse;\n\n/**\n * Returns a new createHistory function that may be used to create\n * history objects that know how to handle URL queries.\n */\nvar useQueries = function useQueries(createHistory) {\n return function () {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var history = createHistory(options);\n var stringifyQuery = options.stringifyQuery;\n var parseQueryString = options.parseQueryString;\n\n\n if (typeof stringifyQuery !== 'function') stringifyQuery = defaultStringifyQuery;\n\n if (typeof parseQueryString !== 'function') parseQueryString = defaultParseQueryString;\n\n var decodeQuery = function decodeQuery(location) {\n if (!location) return location;\n\n if (location.query == null) location.query = parseQueryString(location.search.substring(1));\n\n return location;\n };\n\n var encodeQuery = function encodeQuery(location, query) {\n if (query == null) return location;\n\n var object = typeof location === 'string' ? (0, _PathUtils.parsePath)(location) : location;\n var queryString = stringifyQuery(query);\n var search = queryString ? '?' + queryString : '';\n\n return _extends({}, object, {\n search: search\n });\n };\n\n // Override all read methods with query-aware versions.\n var getCurrentLocation = function getCurrentLocation() {\n return decodeQuery(history.getCurrentLocation());\n };\n\n var listenBefore = function listenBefore(hook) {\n return history.listenBefore(function (location, callback) {\n return (0, _runTransitionHook2.default)(hook, decodeQuery(location), callback);\n });\n };\n\n var listen = function listen(listener) {\n return history.listen(function (location) {\n return listener(decodeQuery(location));\n });\n };\n\n // Override all write methods with query-aware versions.\n var push = function push(location) {\n return history.push(encodeQuery(location, location.query));\n };\n\n var replace = function replace(location) {\n return history.replace(encodeQuery(location, location.query));\n };\n\n var createPath = function createPath(location) {\n return history.createPath(encodeQuery(location, location.query));\n };\n\n var createHref = function createHref(location) {\n return history.createHref(encodeQuery(location, location.query));\n };\n\n var createLocation = function createLocation(location) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var newLocation = history.createLocation.apply(history, [encodeQuery(location, location.query)].concat(args));\n\n if (location.query) newLocation.query = (0, _LocationUtils.createQuery)(location.query);\n\n return decodeQuery(newLocation);\n };\n\n return _extends({}, history, {\n getCurrentLocation: getCurrentLocation,\n listenBefore: listenBefore,\n listen: listen,\n push: push,\n replace: replace,\n createPath: createPath,\n createHref: createHref,\n createLocation: createLocation\n });\n };\n};\n\nexports.default = useQueries;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/useQueries.js\n// module id = 114\n// module chunks = 0","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n'use strict';\n\nvar REACT_STATICS = {\n childContextTypes: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n arguments: true,\n arity: true\n};\n\nvar isGetOwnPropertySymbolsAvailable = typeof Object.getOwnPropertySymbols === 'function';\n\nmodule.exports = function hoistNonReactStatics(targetComponent, sourceComponent, customStatics) {\n if (typeof sourceComponent !== 'string') { // don't hoist over string (html) components\n var keys = Object.getOwnPropertyNames(sourceComponent);\n\n /* istanbul ignore else */\n if (isGetOwnPropertySymbolsAvailable) {\n keys = keys.concat(Object.getOwnPropertySymbols(sourceComponent));\n }\n\n for (var i = 0; i < keys.length; ++i) {\n if (!REACT_STATICS[keys[i]] && !KNOWN_STATICS[keys[i]] && (!customStatics || !customStatics[keys[i]])) {\n try {\n targetComponent[keys[i]] = sourceComponent[keys[i]];\n } catch (error) {\n\n }\n }\n }\n }\n\n return targetComponent;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/hoist-non-react-statics/index.js\n// module id = 115\n// module chunks = 0","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max;\n\n/** Detect if properties shadowing those on `Object.prototype` are non-enumerable. */\nvar nonEnumShadows = !propertyIsEnumerable.call({ 'valueOf': 1 }, 'valueOf');\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = array;\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n assignValue(object, key, newValue === undefined ? source[key] : newValue);\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (nonEnumShadows || isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash.assign/index.js\n// module id = 116\n// module chunks = 0","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_Symbol.js\n// module id = 117\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\n\nvar isUnitlessNumber = {\n animationIterationCount: true,\n borderImageOutset: true,\n borderImageSlice: true,\n borderImageWidth: true,\n boxFlex: true,\n boxFlexGroup: true,\n boxOrdinalGroup: true,\n columnCount: true,\n flex: true,\n flexGrow: true,\n flexPositive: true,\n flexShrink: true,\n flexNegative: true,\n flexOrder: true,\n gridRow: true,\n gridColumn: true,\n fontWeight: true,\n lineClamp: true,\n lineHeight: true,\n opacity: true,\n order: true,\n orphans: true,\n tabSize: true,\n widows: true,\n zIndex: true,\n zoom: true,\n\n // SVG-related properties\n fillOpacity: true,\n floodOpacity: true,\n stopOpacity: true,\n strokeDasharray: true,\n strokeDashoffset: true,\n strokeMiterlimit: true,\n strokeOpacity: true,\n strokeWidth: true\n};\n\n/**\n * @param {string} prefix vendor-specific prefix, eg: Webkit\n * @param {string} key style name, eg: transitionDuration\n * @return {string} style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nvar prefixes = ['Webkit', 'ms', 'Moz', 'O'];\n\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n prefixes.forEach(function (prefix) {\n isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n });\n});\n\n/**\n * Most style properties can be unset by doing .style[prop] = '' but IE8\n * doesn't like doing that with shorthand properties so for the properties that\n * IE8 breaks on, which are listed here, we instead unset each of the\n * individual properties. See http://bugs.jquery.com/ticket/12385.\n * The 4-value 'clock' properties like margin, padding, border-width seem to\n * behave without any problems. Curiously, list-style works too without any\n * special prodding.\n */\nvar shorthandPropertyExpansions = {\n background: {\n backgroundAttachment: true,\n backgroundColor: true,\n backgroundImage: true,\n backgroundPositionX: true,\n backgroundPositionY: true,\n backgroundRepeat: true\n },\n backgroundPosition: {\n backgroundPositionX: true,\n backgroundPositionY: true\n },\n border: {\n borderWidth: true,\n borderStyle: true,\n borderColor: true\n },\n borderBottom: {\n borderBottomWidth: true,\n borderBottomStyle: true,\n borderBottomColor: true\n },\n borderLeft: {\n borderLeftWidth: true,\n borderLeftStyle: true,\n borderLeftColor: true\n },\n borderRight: {\n borderRightWidth: true,\n borderRightStyle: true,\n borderRightColor: true\n },\n borderTop: {\n borderTopWidth: true,\n borderTopStyle: true,\n borderTopColor: true\n },\n font: {\n fontStyle: true,\n fontVariant: true,\n fontWeight: true,\n fontSize: true,\n lineHeight: true,\n fontFamily: true\n },\n outline: {\n outlineWidth: true,\n outlineStyle: true,\n outlineColor: true\n }\n};\n\nvar CSSProperty = {\n isUnitlessNumber: isUnitlessNumber,\n shorthandPropertyExpansions: shorthandPropertyExpansions\n};\n\nmodule.exports = CSSProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/CSSProperty.js\n// module id = 118\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PooledClass = require('./PooledClass');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * A specialized pseudo-event module to help keep track of components waiting to\n * be notified when their DOM representations are available for use.\n *\n * This implements `PooledClass`, so you should never need to instantiate this.\n * Instead, use `CallbackQueue.getPooled()`.\n *\n * @class ReactMountReady\n * @implements PooledClass\n * @internal\n */\n\nvar CallbackQueue = function () {\n function CallbackQueue(arg) {\n _classCallCheck(this, CallbackQueue);\n\n this._callbacks = null;\n this._contexts = null;\n this._arg = arg;\n }\n\n /**\n * Enqueues a callback to be invoked when `notifyAll` is invoked.\n *\n * @param {function} callback Invoked when `notifyAll` is invoked.\n * @param {?object} context Context to call `callback` with.\n * @internal\n */\n\n\n CallbackQueue.prototype.enqueue = function enqueue(callback, context) {\n this._callbacks = this._callbacks || [];\n this._callbacks.push(callback);\n this._contexts = this._contexts || [];\n this._contexts.push(context);\n };\n\n /**\n * Invokes all enqueued callbacks and clears the queue. This is invoked after\n * the DOM representation of a component has been created or updated.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.notifyAll = function notifyAll() {\n var callbacks = this._callbacks;\n var contexts = this._contexts;\n var arg = this._arg;\n if (callbacks && contexts) {\n !(callbacks.length === contexts.length) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Mismatched list of contexts in callback queue') : _prodInvariant('24') : void 0;\n this._callbacks = null;\n this._contexts = null;\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].call(contexts[i], arg);\n }\n callbacks.length = 0;\n contexts.length = 0;\n }\n };\n\n CallbackQueue.prototype.checkpoint = function checkpoint() {\n return this._callbacks ? this._callbacks.length : 0;\n };\n\n CallbackQueue.prototype.rollback = function rollback(len) {\n if (this._callbacks && this._contexts) {\n this._callbacks.length = len;\n this._contexts.length = len;\n }\n };\n\n /**\n * Resets the internal queue.\n *\n * @internal\n */\n\n\n CallbackQueue.prototype.reset = function reset() {\n this._callbacks = null;\n this._contexts = null;\n };\n\n /**\n * `PooledClass` looks for this.\n */\n\n\n CallbackQueue.prototype.destructor = function destructor() {\n this.reset();\n };\n\n return CallbackQueue;\n}();\n\nmodule.exports = PooledClass.addPoolingTo(CallbackQueue);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/CallbackQueue.js\n// module id = 119\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar quoteAttributeValueForBrowser = require('./quoteAttributeValueForBrowser');\nvar warning = require('fbjs/lib/warning');\n\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\n\nfunction isAttributeNameSafe(attributeName) {\n if (validatedAttributeNameCache.hasOwnProperty(attributeName)) {\n return true;\n }\n if (illegalAttributeNameCache.hasOwnProperty(attributeName)) {\n return false;\n }\n if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n validatedAttributeNameCache[attributeName] = true;\n return true;\n }\n illegalAttributeNameCache[attributeName] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid attribute name: `%s`', attributeName) : void 0;\n return false;\n}\n\nfunction shouldIgnoreValue(propertyInfo, value) {\n return value == null || propertyInfo.hasBooleanValue && !value || propertyInfo.hasNumericValue && isNaN(value) || propertyInfo.hasPositiveNumericValue && value < 1 || propertyInfo.hasOverloadedBooleanValue && value === false;\n}\n\n/**\n * Operations for dealing with DOM properties.\n */\nvar DOMPropertyOperations = {\n\n /**\n * Creates markup for the ID property.\n *\n * @param {string} id Unescaped ID.\n * @return {string} Markup string.\n */\n createMarkupForID: function (id) {\n return DOMProperty.ID_ATTRIBUTE_NAME + '=' + quoteAttributeValueForBrowser(id);\n },\n\n setAttributeForID: function (node, id) {\n node.setAttribute(DOMProperty.ID_ATTRIBUTE_NAME, id);\n },\n\n createMarkupForRoot: function () {\n return DOMProperty.ROOT_ATTRIBUTE_NAME + '=\"\"';\n },\n\n setAttributeForRoot: function (node) {\n node.setAttribute(DOMProperty.ROOT_ATTRIBUTE_NAME, '');\n },\n\n /**\n * Creates markup for a property.\n *\n * @param {string} name\n * @param {*} value\n * @return {?string} Markup string, or null if the property was invalid.\n */\n createMarkupForProperty: function (name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n if (shouldIgnoreValue(propertyInfo, value)) {\n return '';\n }\n var attributeName = propertyInfo.attributeName;\n if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n return attributeName + '=\"\"';\n }\n return attributeName + '=' + quoteAttributeValueForBrowser(value);\n } else if (DOMProperty.isCustomAttribute(name)) {\n if (value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n }\n return null;\n },\n\n /**\n * Creates markup for a custom property.\n *\n * @param {string} name\n * @param {*} value\n * @return {string} Markup string, or empty string if the property was invalid.\n */\n createMarkupForCustomAttribute: function (name, value) {\n if (!isAttributeNameSafe(name) || value == null) {\n return '';\n }\n return name + '=' + quoteAttributeValueForBrowser(value);\n },\n\n /**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n setValueForProperty: function (node, name, value) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, value);\n } else if (shouldIgnoreValue(propertyInfo, value)) {\n this.deleteValueForProperty(node, name);\n return;\n } else if (propertyInfo.mustUseProperty) {\n // Contrary to `setAttribute`, object properties are properly\n // `toString`ed by IE8/9.\n node[propertyInfo.propertyName] = value;\n } else {\n var attributeName = propertyInfo.attributeName;\n var namespace = propertyInfo.attributeNamespace;\n // `setAttribute` with objects becomes only `[object]` in IE8/9,\n // ('' + value) makes it output the correct toString()-value.\n if (namespace) {\n node.setAttributeNS(namespace, attributeName, '' + value);\n } else if (propertyInfo.hasBooleanValue || propertyInfo.hasOverloadedBooleanValue && value === true) {\n node.setAttribute(attributeName, '');\n } else {\n node.setAttribute(attributeName, '' + value);\n }\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n DOMPropertyOperations.setValueForAttribute(node, name, value);\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n setValueForAttribute: function (node, name, value) {\n if (!isAttributeNameSafe(name)) {\n return;\n }\n if (value == null) {\n node.removeAttribute(name);\n } else {\n node.setAttribute(name, '' + value);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var payload = {};\n payload[name] = value;\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'update attribute',\n payload: payload\n });\n }\n },\n\n /**\n * Deletes an attributes from a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForAttribute: function (node, name) {\n node.removeAttribute(name);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n },\n\n /**\n * Deletes the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n */\n deleteValueForProperty: function (node, name) {\n var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;\n if (propertyInfo) {\n var mutationMethod = propertyInfo.mutationMethod;\n if (mutationMethod) {\n mutationMethod(node, undefined);\n } else if (propertyInfo.mustUseProperty) {\n var propName = propertyInfo.propertyName;\n if (propertyInfo.hasBooleanValue) {\n node[propName] = false;\n } else {\n node[propName] = '';\n }\n } else {\n node.removeAttribute(propertyInfo.attributeName);\n }\n } else if (DOMProperty.isCustomAttribute(name)) {\n node.removeAttribute(name);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: ReactDOMComponentTree.getInstanceFromNode(node)._debugID,\n type: 'remove attribute',\n payload: name\n });\n }\n }\n\n};\n\nmodule.exports = DOMPropertyOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/DOMPropertyOperations.js\n// module id = 120\n// module chunks = 0","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentFlags = {\n hasCachedChildNodes: 1 << 0\n};\n\nmodule.exports = ReactDOMComponentFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMComponentFlags.js\n// module id = 121\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValueDefaultValue = false;\n\nfunction updateOptionsIfPendingUpdateAndMounted() {\n if (this._rootNodeID && this._wrapperState.pendingUpdate) {\n this._wrapperState.pendingUpdate = false;\n\n var props = this._currentElement.props;\n var value = LinkedValueUtils.getValue(props);\n\n if (value != null) {\n updateOptions(this, Boolean(props.multiple), value);\n }\n }\n}\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n\n/**\n * Validation function for `value` and `defaultValue`.\n * @private\n */\nfunction checkSelectPropTypes(inst, props) {\n var owner = inst._currentElement._owner;\n LinkedValueUtils.checkPropTypes('select', props, owner);\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `select` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n\n for (var i = 0; i < valuePropNames.length; i++) {\n var propName = valuePropNames[i];\n if (props[propName] == null) {\n continue;\n }\n var isArray = Array.isArray(props[propName]);\n if (props.multiple && !isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n } else if (!props.multiple && isArray) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum(owner)) : void 0;\n }\n }\n}\n\n/**\n * @param {ReactDOMComponent} inst\n * @param {boolean} multiple\n * @param {*} propValue A stringable (with `multiple`, a list of stringables).\n * @private\n */\nfunction updateOptions(inst, multiple, propValue) {\n var selectedValue, i;\n var options = ReactDOMComponentTree.getNodeFromInstance(inst).options;\n\n if (multiple) {\n selectedValue = {};\n for (i = 0; i < propValue.length; i++) {\n selectedValue['' + propValue[i]] = true;\n }\n for (i = 0; i < options.length; i++) {\n var selected = selectedValue.hasOwnProperty(options[i].value);\n if (options[i].selected !== selected) {\n options[i].selected = selected;\n }\n }\n } else {\n // Do not set `select.value` as exact behavior isn't consistent across all\n // browsers for all cases.\n selectedValue = '' + propValue;\n for (i = 0; i < options.length; i++) {\n if (options[i].value === selectedValue) {\n options[i].selected = true;\n return;\n }\n }\n if (options.length) {\n options[0].selected = true;\n }\n }\n}\n\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\nvar ReactDOMSelect = {\n getHostProps: function (inst, props) {\n return _assign({}, props, {\n onChange: inst._wrapperState.onChange,\n value: undefined\n });\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n checkSelectPropTypes(inst, props);\n }\n\n var value = LinkedValueUtils.getValue(props);\n inst._wrapperState = {\n pendingUpdate: false,\n initialValue: value != null ? value : props.defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst),\n wasMultiple: Boolean(props.multiple)\n };\n\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValueDefaultValue = true;\n }\n },\n\n getSelectValueContext: function (inst) {\n // ReactDOMOption looks at this initial value so the initial generated\n // markup has correct `selected` attributes\n return inst._wrapperState.initialValue;\n },\n\n postUpdateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // After the initial mount, we control selected-ness manually so don't pass\n // this value down\n inst._wrapperState.initialValue = undefined;\n\n var wasMultiple = inst._wrapperState.wasMultiple;\n inst._wrapperState.wasMultiple = Boolean(props.multiple);\n\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n inst._wrapperState.pendingUpdate = false;\n updateOptions(inst, Boolean(props.multiple), value);\n } else if (wasMultiple !== Boolean(props.multiple)) {\n // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n if (props.defaultValue != null) {\n updateOptions(inst, Boolean(props.multiple), props.defaultValue);\n } else {\n // Revert the select back to its default unselected state.\n updateOptions(inst, Boolean(props.multiple), props.multiple ? [] : '');\n }\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n if (this._rootNodeID) {\n this._wrapperState.pendingUpdate = true;\n }\n ReactUpdates.asap(updateOptionsIfPendingUpdateAndMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMSelect;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMSelect.js\n// module id = 122\n// module chunks = 0","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar emptyComponentFactory;\n\nvar ReactEmptyComponentInjection = {\n injectEmptyComponentFactory: function (factory) {\n emptyComponentFactory = factory;\n }\n};\n\nvar ReactEmptyComponent = {\n create: function (instantiate) {\n return emptyComponentFactory(instantiate);\n }\n};\n\nReactEmptyComponent.injection = ReactEmptyComponentInjection;\n\nmodule.exports = ReactEmptyComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactEmptyComponent.js\n// module id = 123\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactFeatureFlags = {\n // When true, call console.time() before and .timeEnd() after each top-level\n // render (both initial renders and updates). Useful when looking at prod-mode\n // timeline profiles in Chrome, for example.\n logTopLevelRenders: false\n};\n\nmodule.exports = ReactFeatureFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactFeatureFlags.js\n// module id = 124\n// module chunks = 0","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar genericComponentClass = null;\n// This registry keeps track of wrapper classes around host tags.\nvar tagToComponentClass = {};\nvar textComponentClass = null;\n\nvar ReactHostComponentInjection = {\n // This accepts a class that receives the tag string. This is a catch all\n // that can render any kind of tag.\n injectGenericComponentClass: function (componentClass) {\n genericComponentClass = componentClass;\n },\n // This accepts a text component class that takes the text string to be\n // rendered as props.\n injectTextComponentClass: function (componentClass) {\n textComponentClass = componentClass;\n },\n // This accepts a keyed object with classes as values. Each key represents a\n // tag. That particular tag will use this class instead of the generic one.\n injectComponentClasses: function (componentClasses) {\n _assign(tagToComponentClass, componentClasses);\n }\n};\n\n/**\n * Get a host internal component class for a specific tag.\n *\n * @param {ReactElement} element The element to create.\n * @return {function} The internal class constructor function.\n */\nfunction createInternalComponent(element) {\n !genericComponentClass ? process.env.NODE_ENV !== 'production' ? invariant(false, 'There is no registered component for the tag %s', element.type) : _prodInvariant('111', element.type) : void 0;\n return new genericComponentClass(element);\n}\n\n/**\n * @param {ReactText} text\n * @return {ReactComponent}\n */\nfunction createInstanceForText(text) {\n return new textComponentClass(text);\n}\n\n/**\n * @param {ReactComponent} component\n * @return {boolean}\n */\nfunction isTextComponent(component) {\n return component instanceof textComponentClass;\n}\n\nvar ReactHostComponent = {\n createInternalComponent: createInternalComponent,\n createInstanceForText: createInstanceForText,\n isTextComponent: isTextComponent,\n injection: ReactHostComponentInjection\n};\n\nmodule.exports = ReactHostComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactHostComponent.js\n// module id = 125\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMSelection = require('./ReactDOMSelection');\n\nvar containsNode = require('fbjs/lib/containsNode');\nvar focusNode = require('fbjs/lib/focusNode');\nvar getActiveElement = require('fbjs/lib/getActiveElement');\n\nfunction isInDocument(node) {\n return containsNode(document.documentElement, node);\n}\n\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\nvar ReactInputSelection = {\n\n hasSelectionCapabilities: function (elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName && (nodeName === 'input' && elem.type === 'text' || nodeName === 'textarea' || elem.contentEditable === 'true');\n },\n\n getSelectionInformation: function () {\n var focusedElem = getActiveElement();\n return {\n focusedElem: focusedElem,\n selectionRange: ReactInputSelection.hasSelectionCapabilities(focusedElem) ? ReactInputSelection.getSelection(focusedElem) : null\n };\n },\n\n /**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n restoreSelection: function (priorSelectionInformation) {\n var curFocusedElem = getActiveElement();\n var priorFocusedElem = priorSelectionInformation.focusedElem;\n var priorSelectionRange = priorSelectionInformation.selectionRange;\n if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n if (ReactInputSelection.hasSelectionCapabilities(priorFocusedElem)) {\n ReactInputSelection.setSelection(priorFocusedElem, priorSelectionRange);\n }\n focusNode(priorFocusedElem);\n }\n },\n\n /**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n getSelection: function (input) {\n var selection;\n\n if ('selectionStart' in input) {\n // Modern browser with input or textarea.\n selection = {\n start: input.selectionStart,\n end: input.selectionEnd\n };\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n // IE8 input.\n var range = document.selection.createRange();\n // There can only be one selection per document in IE, so it must\n // be in our element.\n if (range.parentElement() === input) {\n selection = {\n start: -range.moveStart('character', -input.value.length),\n end: -range.moveEnd('character', -input.value.length)\n };\n }\n } else {\n // Content editable or old IE textarea.\n selection = ReactDOMSelection.getOffsets(input);\n }\n\n return selection || { start: 0, end: 0 };\n },\n\n /**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input Set selection bounds of this input or textarea\n * -@offsets Object of same form that is returned from get*\n */\n setSelection: function (input, offsets) {\n var start = offsets.start;\n var end = offsets.end;\n if (end === undefined) {\n end = start;\n }\n\n if ('selectionStart' in input) {\n input.selectionStart = start;\n input.selectionEnd = Math.min(end, input.value.length);\n } else if (document.selection && input.nodeName && input.nodeName.toLowerCase() === 'input') {\n var range = input.createTextRange();\n range.collapse(true);\n range.moveStart('character', start);\n range.moveEnd('character', end - start);\n range.select();\n } else {\n ReactDOMSelection.setOffsets(input, offsets);\n }\n }\n};\n\nmodule.exports = ReactInputSelection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactInputSelection.js\n// module id = 126\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMProperty = require('./DOMProperty');\nvar React = require('react/lib/React');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMContainerInfo = require('./ReactDOMContainerInfo');\nvar ReactDOMFeatureFlags = require('./ReactDOMFeatureFlags');\nvar ReactFeatureFlags = require('./ReactFeatureFlags');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMarkupChecksum = require('./ReactMarkupChecksum');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar invariant = require('fbjs/lib/invariant');\nvar setInnerHTML = require('./setInnerHTML');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;\nvar ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;\n\nvar ELEMENT_NODE_TYPE = 1;\nvar DOC_NODE_TYPE = 9;\nvar DOCUMENT_FRAGMENT_NODE_TYPE = 11;\n\nvar instancesByReactRootID = {};\n\n/**\n * Finds the index of the first character\n * that's not common between the two given strings.\n *\n * @return {number} the index of the character where the strings diverge\n */\nfunction firstDifferenceIndex(string1, string2) {\n var minLen = Math.min(string1.length, string2.length);\n for (var i = 0; i < minLen; i++) {\n if (string1.charAt(i) !== string2.charAt(i)) {\n return i;\n }\n }\n return string1.length === string2.length ? -1 : minLen;\n}\n\n/**\n * @param {DOMElement|DOMDocument} container DOM element that may contain\n * a React component\n * @return {?*} DOM element that may have the reactRoot ID, or null.\n */\nfunction getReactRootElementInContainer(container) {\n if (!container) {\n return null;\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n return container.documentElement;\n } else {\n return container.firstChild;\n }\n}\n\nfunction internalGetID(node) {\n // If node is something like a window, document, or text node, none of\n // which support attributes or a .getAttribute method, gracefully return\n // the empty string, as if the attribute were missing.\n return node.getAttribute && node.getAttribute(ATTR_NAME) || '';\n}\n\n/**\n * Mounts this component and inserts it into the DOM.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {ReactReconcileTransaction} transaction\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction mountComponentIntoNode(wrapperInstance, container, transaction, shouldReuseMarkup, context) {\n var markerName;\n if (ReactFeatureFlags.logTopLevelRenders) {\n var wrappedElement = wrapperInstance._currentElement.props.child;\n var type = wrappedElement.type;\n markerName = 'React mount: ' + (typeof type === 'string' ? type : type.displayName || type.name);\n console.time(markerName);\n }\n\n var markup = ReactReconciler.mountComponent(wrapperInstance, transaction, null, ReactDOMContainerInfo(wrapperInstance, container), context, 0 /* parentDebugID */\n );\n\n if (markerName) {\n console.timeEnd(markerName);\n }\n\n wrapperInstance._renderedComponent._topLevelWrapper = wrapperInstance;\n ReactMount._mountImageIntoNode(markup, container, wrapperInstance, shouldReuseMarkup, transaction);\n}\n\n/**\n * Batched mount.\n *\n * @param {ReactComponent} componentInstance The instance to mount.\n * @param {DOMElement} container DOM element to mount into.\n * @param {boolean} shouldReuseMarkup If true, do not insert markup\n */\nfunction batchedMountComponentIntoNode(componentInstance, container, shouldReuseMarkup, context) {\n var transaction = ReactUpdates.ReactReconcileTransaction.getPooled(\n /* useCreateElement */\n !shouldReuseMarkup && ReactDOMFeatureFlags.useCreateElement);\n transaction.perform(mountComponentIntoNode, null, componentInstance, container, transaction, shouldReuseMarkup, context);\n ReactUpdates.ReactReconcileTransaction.release(transaction);\n}\n\n/**\n * Unmounts a component and removes it from the DOM.\n *\n * @param {ReactComponent} instance React component instance.\n * @param {DOMElement} container DOM element to unmount from.\n * @final\n * @internal\n * @see {ReactMount.unmountComponentAtNode}\n */\nfunction unmountComponentFromNode(instance, container, safely) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginFlush();\n }\n ReactReconciler.unmountComponent(instance, safely);\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onEndFlush();\n }\n\n if (container.nodeType === DOC_NODE_TYPE) {\n container = container.documentElement;\n }\n\n // http://jsperf.com/emptying-a-node\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n}\n\n/**\n * True if the supplied DOM node has a direct React-rendered child that is\n * not a React root element. Useful for warning in `render`,\n * `unmountComponentAtNode`, etc.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM element contains a direct child that was\n * rendered by React but is not a root element.\n * @internal\n */\nfunction hasNonRootReactChild(container) {\n var rootEl = getReactRootElementInContainer(container);\n if (rootEl) {\n var inst = ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return !!(inst && inst._hostParent);\n }\n}\n\n/**\n * True if the supplied DOM node is a React DOM element and\n * it has been rendered by another copy of React.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM has been rendered by another copy of React\n * @internal\n */\nfunction nodeIsRenderedByOtherInstance(container) {\n var rootEl = getReactRootElementInContainer(container);\n return !!(rootEl && isReactNode(rootEl) && !ReactDOMComponentTree.getInstanceFromNode(rootEl));\n}\n\n/**\n * True if the supplied DOM node is a valid node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid DOM node.\n * @internal\n */\nfunction isValidContainer(node) {\n return !!(node && (node.nodeType === ELEMENT_NODE_TYPE || node.nodeType === DOC_NODE_TYPE || node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE));\n}\n\n/**\n * True if the supplied DOM node is a valid React node element.\n *\n * @param {?DOMElement} node The candidate DOM node.\n * @return {boolean} True if the DOM is a valid React DOM node.\n * @internal\n */\nfunction isReactNode(node) {\n return isValidContainer(node) && (node.hasAttribute(ROOT_ATTR_NAME) || node.hasAttribute(ATTR_NAME));\n}\n\nfunction getHostRootInstanceInContainer(container) {\n var rootEl = getReactRootElementInContainer(container);\n var prevHostInstance = rootEl && ReactDOMComponentTree.getInstanceFromNode(rootEl);\n return prevHostInstance && !prevHostInstance._hostParent ? prevHostInstance : null;\n}\n\nfunction getTopLevelWrapperInContainer(container) {\n var root = getHostRootInstanceInContainer(container);\n return root ? root._hostContainerInfo._topLevelWrapper : null;\n}\n\n/**\n * Temporary (?) hack so that we can store all top-level pending updates on\n * composites instead of having to worry about different types of components\n * here.\n */\nvar topLevelRootCounter = 1;\nvar TopLevelWrapper = function () {\n this.rootID = topLevelRootCounter++;\n};\nTopLevelWrapper.prototype.isReactComponent = {};\nif (process.env.NODE_ENV !== 'production') {\n TopLevelWrapper.displayName = 'TopLevelWrapper';\n}\nTopLevelWrapper.prototype.render = function () {\n return this.props.child;\n};\nTopLevelWrapper.isReactTopLevelWrapper = true;\n\n/**\n * Mounting is the process of initializing a React component by creating its\n * representative DOM elements and inserting them into a supplied `container`.\n * Any prior content inside `container` is destroyed in the process.\n *\n * ReactMount.render(\n * component,\n * document.getElementById('container')\n * );\n *\n * <div id=\"container\"> <-- Supplied `container`.\n * <div data-reactid=\".3\"> <-- Rendered reactRoot of React\n * // ... component.\n * </div>\n * </div>\n *\n * Inside of `container`, the first element rendered is the \"reactRoot\".\n */\nvar ReactMount = {\n\n TopLevelWrapper: TopLevelWrapper,\n\n /**\n * Used by devtools. The keys are not important.\n */\n _instancesByReactRootID: instancesByReactRootID,\n\n /**\n * This is a hook provided to support rendering React components while\n * ensuring that the apparent scroll position of its `container` does not\n * change.\n *\n * @param {DOMElement} container The `container` being rendered into.\n * @param {function} renderCallback This must be called once to do the render.\n */\n scrollMonitor: function (container, renderCallback) {\n renderCallback();\n },\n\n /**\n * Take a component that's already mounted into the DOM and replace its props\n * @param {ReactComponent} prevComponent component instance already in the DOM\n * @param {ReactElement} nextElement component instance to render\n * @param {DOMElement} container container to render into\n * @param {?function} callback function triggered on completion\n */\n _updateRootComponent: function (prevComponent, nextElement, nextContext, container, callback) {\n ReactMount.scrollMonitor(container, function () {\n ReactUpdateQueue.enqueueElementInternal(prevComponent, nextElement, nextContext);\n if (callback) {\n ReactUpdateQueue.enqueueCallbackInternal(prevComponent, callback);\n }\n });\n\n return prevComponent;\n },\n\n /**\n * Render a new component into the DOM. Hooked by hooks!\n *\n * @param {ReactElement} nextElement element to render\n * @param {DOMElement} container container to render into\n * @param {boolean} shouldReuseMarkup if we should skip the markup insertion\n * @return {ReactComponent} nextComponent\n */\n _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case.\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, '_renderNewRootComponent(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from ' + 'render is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, '_registerComponent(...): Target container is not a DOM element.') : _prodInvariant('37') : void 0;\n\n ReactBrowserEventEmitter.ensureScrollValueMonitoring();\n var componentInstance = instantiateReactComponent(nextElement, false);\n\n // The initial render is synchronous but any updates that happen during\n // rendering, in componentWillMount or componentDidMount, will be batched\n // according to the current batching strategy.\n\n ReactUpdates.batchedUpdates(batchedMountComponentIntoNode, componentInstance, container, shouldReuseMarkup, context);\n\n var wrapperID = componentInstance._instance.rootID;\n instancesByReactRootID[wrapperID] = componentInstance;\n\n return componentInstance;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactComponent} parentComponent The conceptual parent of this render tree.\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n !(parentComponent != null && ReactInstanceMap.has(parentComponent)) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'parentComponent must be a valid React Component') : _prodInvariant('38') : void 0;\n return ReactMount._renderSubtreeIntoContainer(parentComponent, nextElement, container, callback);\n },\n\n _renderSubtreeIntoContainer: function (parentComponent, nextElement, container, callback) {\n ReactUpdateQueue.validateCallback(callback, 'ReactDOM.render');\n !React.isValidElement(nextElement) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOM.render(): Invalid component element.%s', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' :\n // Check if it quacks like an element\n nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : _prodInvariant('39', typeof nextElement === 'string' ? ' Instead of passing a string like \\'div\\', pass ' + 'React.createElement(\\'div\\') or <div />.' : typeof nextElement === 'function' ? ' Instead of passing a class like Foo, pass ' + 'React.createElement(Foo) or <Foo />.' : nextElement != null && nextElement.props !== undefined ? ' This may be caused by unintentionally loading two independent ' + 'copies of React.' : '') : void 0;\n\n process.env.NODE_ENV !== 'production' ? warning(!container || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.') : void 0;\n\n var nextWrappedElement = React.createElement(TopLevelWrapper, { child: nextElement });\n\n var nextContext;\n if (parentComponent) {\n var parentInst = ReactInstanceMap.get(parentComponent);\n nextContext = parentInst._processChildContext(parentInst._context);\n } else {\n nextContext = emptyObject;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n\n if (prevComponent) {\n var prevWrappedElement = prevComponent._currentElement;\n var prevElement = prevWrappedElement.props.child;\n if (shouldUpdateReactComponent(prevElement, nextElement)) {\n var publicInst = prevComponent._renderedComponent.getPublicInstance();\n var updatedCallback = callback && function () {\n callback.call(publicInst);\n };\n ReactMount._updateRootComponent(prevComponent, nextWrappedElement, nextContext, container, updatedCallback);\n return publicInst;\n } else {\n ReactMount.unmountComponentAtNode(container);\n }\n }\n\n var reactRootElement = getReactRootElementInContainer(container);\n var containerHasReactMarkup = reactRootElement && !!internalGetID(reactRootElement);\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.') : void 0;\n\n if (!containerHasReactMarkup || reactRootElement.nextSibling) {\n var rootElementSibling = reactRootElement;\n while (rootElementSibling) {\n if (internalGetID(rootElementSibling)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.') : void 0;\n break;\n }\n rootElementSibling = rootElementSibling.nextSibling;\n }\n }\n }\n\n var shouldReuseMarkup = containerHasReactMarkup && !prevComponent && !containerHasNonRootReactChild;\n var component = ReactMount._renderNewRootComponent(nextWrappedElement, container, shouldReuseMarkup, nextContext)._renderedComponent.getPublicInstance();\n if (callback) {\n callback.call(component);\n }\n return component;\n },\n\n /**\n * Renders a React component into the DOM in the supplied `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render\n *\n * If the React component was previously rendered into `container`, this will\n * perform an update on it and only mutate the DOM as necessary to reflect the\n * latest React component.\n *\n * @param {ReactElement} nextElement Component element to render.\n * @param {DOMElement} container DOM element to render into.\n * @param {?function} callback function triggered on completion\n * @return {ReactComponent} Component instance rendered in `container`.\n */\n render: function (nextElement, container, callback) {\n return ReactMount._renderSubtreeIntoContainer(null, nextElement, container, callback);\n },\n\n /**\n * Unmounts and destroys the React component rendered in the `container`.\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode\n *\n * @param {DOMElement} container DOM element containing a React component.\n * @return {boolean} True if a component was found in and unmounted from\n * `container`\n */\n unmountComponentAtNode: function (container) {\n // Various parts of our code (such as ReactCompositeComponent's\n // _renderValidatedComponent) assume that calls to render aren't nested;\n // verify that that's the case. (Strictly speaking, unmounting won't cause a\n // render but we still don't expect to be in a render call here.)\n process.env.NODE_ENV !== 'production' ? warning(ReactCurrentOwner.current == null, 'unmountComponentAtNode(): Render methods should be a pure function ' + 'of props and state; triggering nested component updates from render ' + 'is not allowed. If necessary, trigger nested updates in ' + 'componentDidUpdate. Check the render method of %s.', ReactCurrentOwner.current && ReactCurrentOwner.current.getName() || 'ReactCompositeComponent') : void 0;\n\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : _prodInvariant('40') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!nodeIsRenderedByOtherInstance(container), 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by another copy of React.') : void 0;\n }\n\n var prevComponent = getTopLevelWrapperInContainer(container);\n if (!prevComponent) {\n // Check if the node being unmounted was rendered by React, but isn't a\n // root node.\n var containerHasNonRootReactChild = hasNonRootReactChild(container);\n\n // Check if the container itself is a React root node.\n var isContainerReactRoot = container.nodeType === 1 && container.hasAttribute(ROOT_ATTR_NAME);\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!containerHasNonRootReactChild, 'unmountComponentAtNode(): The node you\\'re attempting to unmount ' + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.') : void 0;\n }\n\n return false;\n }\n delete instancesByReactRootID[prevComponent._instance.rootID];\n ReactUpdates.batchedUpdates(unmountComponentFromNode, prevComponent, container, false);\n return true;\n },\n\n _mountImageIntoNode: function (markup, container, instance, shouldReuseMarkup, transaction) {\n !isValidContainer(container) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mountComponentIntoNode(...): Target container is not valid.') : _prodInvariant('41') : void 0;\n\n if (shouldReuseMarkup) {\n var rootElement = getReactRootElementInContainer(container);\n if (ReactMarkupChecksum.canReuseMarkup(markup, rootElement)) {\n ReactDOMComponentTree.precacheNode(instance, rootElement);\n return;\n } else {\n var checksum = rootElement.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n rootElement.removeAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n\n var rootMarkup = rootElement.outerHTML;\n rootElement.setAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME, checksum);\n\n var normalizedMarkup = markup;\n if (process.env.NODE_ENV !== 'production') {\n // because rootMarkup is retrieved from the DOM, various normalizations\n // will have occurred which will not be present in `markup`. Here,\n // insert markup into a <div> or <iframe> depending on the container\n // type to perform the same normalizations before comparing.\n var normalizer;\n if (container.nodeType === ELEMENT_NODE_TYPE) {\n normalizer = document.createElement('div');\n normalizer.innerHTML = markup;\n normalizedMarkup = normalizer.innerHTML;\n } else {\n normalizer = document.createElement('iframe');\n document.body.appendChild(normalizer);\n normalizer.contentDocument.write(markup);\n normalizedMarkup = normalizer.contentDocument.documentElement.outerHTML;\n document.body.removeChild(normalizer);\n }\n }\n\n var diffIndex = firstDifferenceIndex(normalizedMarkup, rootMarkup);\n var difference = ' (client) ' + normalizedMarkup.substring(diffIndex - 20, diffIndex + 20) + '\\n (server) ' + rootMarkup.substring(diffIndex - 20, diffIndex + 20);\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document using server rendering but the checksum was invalid. This usually means you rendered a different component type or props on the client from the one on the server, or your render() methods are impure. React cannot handle this case due to cross-browser quirks by rendering at the document root. You should look for environment dependent code in your components and ensure the props are the same client and server side:\\n%s', difference) : _prodInvariant('42', difference) : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'React attempted to reuse markup in a container but the ' + 'checksum was invalid. This generally means that you are ' + 'using server rendering and the markup generated on the ' + 'server was not what the client was expecting. React injected ' + 'new markup to compensate which works but you have lost many ' + 'of the benefits of server rendering. Instead, figure out ' + 'why the markup being generated is different on the client ' + 'or server:\\n%s', difference) : void 0;\n }\n }\n }\n\n !(container.nodeType !== DOC_NODE_TYPE) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'You\\'re trying to render a component to the document but you didn\\'t use server rendering. We can\\'t do this without using server rendering due to cross-browser quirks. See ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('43') : void 0;\n\n if (transaction.useCreateElement) {\n while (container.lastChild) {\n container.removeChild(container.lastChild);\n }\n DOMLazyTree.insertTreeBefore(container, markup, null);\n } else {\n setInnerHTML(container, markup);\n ReactDOMComponentTree.precacheNode(instance, container.firstChild);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var hostNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);\n if (hostNode._debugID !== 0) {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: hostNode._debugID,\n type: 'mount',\n payload: markup.toString()\n });\n }\n }\n }\n};\n\nmodule.exports = ReactMount;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactMount.js\n// module id = 127\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar React = require('react/lib/React');\n\nvar invariant = require('fbjs/lib/invariant');\n\nvar ReactNodeTypes = {\n HOST: 0,\n COMPOSITE: 1,\n EMPTY: 2,\n\n getType: function (node) {\n if (node === null || node === false) {\n return ReactNodeTypes.EMPTY;\n } else if (React.isValidElement(node)) {\n if (typeof node.type === 'function') {\n return ReactNodeTypes.COMPOSITE;\n } else {\n return ReactNodeTypes.HOST;\n }\n }\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Unexpected node: %s', node) : _prodInvariant('26', node) : void 0;\n }\n};\n\nmodule.exports = ReactNodeTypes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactNodeTypes.js\n// module id = 128\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ViewportMetrics = {\n\n currentScrollLeft: 0,\n\n currentScrollTop: 0,\n\n refreshScrollValues: function (scrollPosition) {\n ViewportMetrics.currentScrollLeft = scrollPosition.x;\n ViewportMetrics.currentScrollTop = scrollPosition.y;\n }\n\n};\n\nmodule.exports = ViewportMetrics;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ViewportMetrics.js\n// module id = 129\n// module chunks = 0","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Accumulates items that must not be null or undefined into the first one. This\n * is used to conserve memory by avoiding array allocations, and thus sacrifices\n * API cleanness. Since `current` can be null before being passed in and not\n * null after this function, make sure to assign it back to `current`:\n *\n * `a = accumulateInto(a, b);`\n *\n * This API should be sparingly used. Try `accumulate` for something cleaner.\n *\n * @return {*|array<*>} An accumulation of items.\n */\n\nfunction accumulateInto(current, next) {\n !(next != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : _prodInvariant('30') : void 0;\n\n if (current == null) {\n return next;\n }\n\n // Both are not empty. Warning: Never call x.concat(y) when you are not\n // certain that x is an Array (x could be a string with concat method).\n if (Array.isArray(current)) {\n if (Array.isArray(next)) {\n current.push.apply(current, next);\n return current;\n }\n current.push(next);\n return current;\n }\n\n if (Array.isArray(next)) {\n // A bit too dangerous to mutate `next`.\n return [current].concat(next);\n }\n\n return [current, next];\n}\n\nmodule.exports = accumulateInto;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/accumulateInto.js\n// module id = 130\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * @param {array} arr an \"accumulation\" of items which is either an Array or\n * a single item. Useful when paired with the `accumulate` module. This is a\n * simple utility that allows us to reason about a collection of items, but\n * handling the case when there is exactly one item (and we do not need to\n * allocate an array).\n */\n\nfunction forEachAccumulated(arr, cb, scope) {\n if (Array.isArray(arr)) {\n arr.forEach(cb, scope);\n } else if (arr) {\n cb.call(scope, arr);\n }\n}\n\nmodule.exports = forEachAccumulated;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/forEachAccumulated.js\n// module id = 131\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactNodeTypes = require('./ReactNodeTypes');\n\nfunction getHostComponentFromComposite(inst) {\n var type;\n\n while ((type = inst._renderedNodeType) === ReactNodeTypes.COMPOSITE) {\n inst = inst._renderedComponent;\n }\n\n if (type === ReactNodeTypes.HOST) {\n return inst._renderedComponent;\n } else if (type === ReactNodeTypes.EMPTY) {\n return null;\n }\n}\n\nmodule.exports = getHostComponentFromComposite;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getHostComponentFromComposite.js\n// module id = 132\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar contentKey = null;\n\n/**\n * Gets the key used to access text content on a DOM node.\n *\n * @return {?string} Key used to access text content.\n * @internal\n */\nfunction getTextContentAccessor() {\n if (!contentKey && ExecutionEnvironment.canUseDOM) {\n // Prefer textContent to innerText because many browsers support both but\n // SVG <text> elements don't support innerText even when <div> does.\n contentKey = 'textContent' in document.documentElement ? 'textContent' : 'innerText';\n }\n return contentKey;\n}\n\nmodule.exports = getTextContentAccessor;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getTextContentAccessor.js\n// module id = 133\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactCompositeComponent = require('./ReactCompositeComponent');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactHostComponent = require('./ReactHostComponent');\n\nvar getNextDebugID = require('./getNextDebugID');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n// To avoid a cyclic dependency, we create the final class in this module\nvar ReactCompositeComponentWrapper = function (element) {\n this.construct(element);\n};\n_assign(ReactCompositeComponentWrapper.prototype, ReactCompositeComponent, {\n _instantiateReactComponent: instantiateReactComponent\n});\n\nfunction getDeclarationErrorAddendum(owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n}\n\n/**\n * Check if the type reference is a known internal type. I.e. not a user\n * provided composite type.\n *\n * @param {function} type\n * @return {boolean} Returns true if this is a valid internal type.\n */\nfunction isInternalComponentType(type) {\n return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';\n}\n\n/**\n * Given a ReactNode, create an instance that will actually be mounted.\n *\n * @param {ReactNode} node\n * @param {boolean} shouldHaveDebugID\n * @return {object} A new instance of the element's constructor.\n * @protected\n */\nfunction instantiateReactComponent(node, shouldHaveDebugID) {\n var instance;\n\n if (node === null || node === false) {\n instance = ReactEmptyComponent.create(instantiateReactComponent);\n } else if (typeof node === 'object') {\n var element = node;\n !(element && (typeof element.type === 'function' || typeof element.type === 'string')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', element.type == null ? element.type : typeof element.type, getDeclarationErrorAddendum(element._owner)) : _prodInvariant('130', element.type == null ? element.type : typeof element.type, getDeclarationErrorAddendum(element._owner)) : void 0;\n\n // Special case string values\n if (typeof element.type === 'string') {\n instance = ReactHostComponent.createInternalComponent(element);\n } else if (isInternalComponentType(element.type)) {\n // This is temporarily available for custom components that are not string\n // representations. I.e. ART. Once those are updated to use the string\n // representation, we can drop this code path.\n instance = new element.type(element);\n\n // We renamed this. Allow the old name for compat. :(\n if (!instance.getHostNode) {\n instance.getHostNode = instance.getNativeNode;\n }\n } else {\n instance = new ReactCompositeComponentWrapper(element);\n }\n } else if (typeof node === 'string' || typeof node === 'number') {\n instance = ReactHostComponent.createInstanceForText(node);\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Encountered invalid React node of type %s', typeof node) : _prodInvariant('131', typeof node) : void 0;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(typeof instance.mountComponent === 'function' && typeof instance.receiveComponent === 'function' && typeof instance.getHostNode === 'function' && typeof instance.unmountComponent === 'function', 'Only React Components can be mounted.') : void 0;\n }\n\n // These two fields are used by the DOM and ART diffing algorithms\n // respectively. Instead of using expandos on components, we should be\n // storing the state needed by the diffing algorithms elsewhere.\n instance._mountIndex = 0;\n instance._mountImage = null;\n\n if (process.env.NODE_ENV !== 'production') {\n instance._debugID = shouldHaveDebugID ? getNextDebugID() : 0;\n }\n\n // Internal instances should fully constructed at this point, so they should\n // not get any new fields added to them at this point.\n if (process.env.NODE_ENV !== 'production') {\n if (Object.preventExtensions) {\n Object.preventExtensions(instance);\n }\n }\n\n return instance;\n}\n\nmodule.exports = instantiateReactComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/instantiateReactComponent.js\n// module id = 134\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\n\nvar supportedInputTypes = {\n 'color': true,\n 'date': true,\n 'datetime': true,\n 'datetime-local': true,\n 'email': true,\n 'month': true,\n 'number': true,\n 'password': true,\n 'range': true,\n 'search': true,\n 'tel': true,\n 'text': true,\n 'time': true,\n 'url': true,\n 'week': true\n};\n\nfunction isTextInputElement(elem) {\n var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n if (nodeName === 'input') {\n return !!supportedInputTypes[elem.type];\n }\n\n if (nodeName === 'textarea') {\n return true;\n }\n\n return false;\n}\n\nmodule.exports = isTextInputElement;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/isTextInputElement.js\n// module id = 135\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar setInnerHTML = require('./setInnerHTML');\n\n/**\n * Set the textContent property of a node, ensuring that whitespace is preserved\n * even in IE8. innerText is a poor substitute for textContent and, among many\n * issues, inserts <br> instead of the literal newline chars. innerHTML behaves\n * as it should.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\nvar setTextContent = function (node, text) {\n if (text) {\n var firstChild = node.firstChild;\n\n if (firstChild && firstChild === node.lastChild && firstChild.nodeType === 3) {\n firstChild.nodeValue = text;\n return;\n }\n }\n node.textContent = text;\n};\n\nif (ExecutionEnvironment.canUseDOM) {\n if (!('textContent' in document.documentElement)) {\n setTextContent = function (node, text) {\n if (node.nodeType === 3) {\n node.nodeValue = text;\n return;\n }\n setInnerHTML(node, escapeTextContentForBrowser(text));\n };\n }\n}\n\nmodule.exports = setTextContent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/setTextContent.js\n// module id = 136\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/traverseAllChildren.js\n// module id = 137\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _mdlUpgrade = require('./utils/mdlUpgrade');\n\nvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n checked: _react.PropTypes.bool,\n className: _react.PropTypes.string,\n disabled: _react.PropTypes.bool,\n label: _react.PropTypes.string,\n onChange: _react.PropTypes.func,\n ripple: _react.PropTypes.bool\n};\n\nvar Checkbox = function (_React$Component) {\n _inherits(Checkbox, _React$Component);\n\n function Checkbox() {\n _classCallCheck(this, Checkbox);\n\n return _possibleConstructorReturn(this, (Checkbox.__proto__ || Object.getPrototypeOf(Checkbox)).apply(this, arguments));\n }\n\n _createClass(Checkbox, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.disabled !== prevProps.disabled) {\n var fnName = this.props.disabled ? 'disable' : 'enable';\n (0, _reactDom.findDOMNode)(this).MaterialCheckbox[fnName]();\n }\n if (this.props.checked !== prevProps.checked) {\n var _fnName = this.props.checked ? 'check' : 'uncheck';\n (0, _reactDom.findDOMNode)(this).MaterialCheckbox[_fnName]();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n label = _props.label,\n ripple = _props.ripple,\n inputProps = _objectWithoutProperties(_props, ['className', 'label', 'ripple']);\n\n var classes = (0, _classnames2.default)('mdl-checkbox mdl-js-checkbox', {\n 'mdl-js-ripple-effect': ripple\n }, className);\n\n return _react2.default.createElement(\n 'label',\n { className: classes },\n _react2.default.createElement('input', _extends({\n type: 'checkbox',\n className: 'mdl-checkbox__input'\n }, inputProps)),\n label && _react2.default.createElement(\n 'span',\n { className: 'mdl-checkbox__label' },\n label\n )\n );\n }\n }]);\n\n return Checkbox;\n}(_react2.default.Component);\n\nCheckbox.propTypes = propTypes;\n\nexports.default = (0, _mdlUpgrade2.default)(Checkbox, true);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Checkbox.js\n// module id = 138\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _Spacer = require('./Spacer');\n\nvar _Spacer2 = _interopRequireDefault(_Spacer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar HeaderRow = function HeaderRow(props) {\n var className = props.className,\n title = props.title,\n children = props.children,\n hideSpacer = props.hideSpacer,\n otherProps = _objectWithoutProperties(props, ['className', 'title', 'children', 'hideSpacer']);\n\n var classes = (0, _classnames2.default)('mdl-layout__header-row', className);\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: classes }, otherProps),\n title && _react2.default.createElement(\n 'span',\n { className: 'mdl-layout-title' },\n title\n ),\n title && !hideSpacer && _react2.default.createElement(_Spacer2.default, null),\n children\n );\n};\nHeaderRow.propTypes = {\n className: _react.PropTypes.string,\n title: _react.PropTypes.node,\n hideSpacer: _react.PropTypes.bool\n};\n\nexports.default = HeaderRow;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Layout/HeaderRow.js\n// module id = 139\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _TabBar = require('../Tabs/TabBar');\n\nvar _TabBar2 = _interopRequireDefault(_TabBar);\n\nvar _mdlUpgrade = require('../utils/mdlUpgrade');\n\nvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar HeaderTabs = function HeaderTabs(props) {\n var className = props.className,\n ripple = props.ripple,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'ripple', 'children']);\n\n var classes = (0, _classnames2.default)({\n 'mdl-js-ripple-effect': ripple,\n 'mdl-js-ripple-effect--ignore-events': ripple\n }, className);\n\n return _react2.default.createElement(\n _TabBar2.default,\n _extends({ cssPrefix: 'mdl-layout', className: classes }, otherProps),\n children\n );\n};\nHeaderTabs.propTypes = {\n activeTab: _react.PropTypes.number,\n className: _react.PropTypes.string,\n onChange: _react.PropTypes.func,\n ripple: _react.PropTypes.bool\n};\n\nexports.default = (0, _mdlUpgrade2.default)(HeaderTabs);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Layout/HeaderTabs.js\n// module id = 140\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _Icon = require('../Icon');\n\nvar _Icon2 = _interopRequireDefault(_Icon);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n avatar: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),\n children: _react.PropTypes.node,\n className: _react.PropTypes.string,\n icon: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element]),\n subtitle: _react.PropTypes.node,\n useBodyClass: _react.PropTypes.bool\n};\n\nfunction createIcon(type, icon) {\n if (typeof icon === 'string') {\n return _react2.default.createElement(_Icon2.default, { className: 'mdl-list__item-' + type, name: icon });\n }\n return _react2.default.cloneElement(icon, { className: 'mdl-list__item-' + type });\n}\n\nvar ListItemContent = function ListItemContent(props) {\n var avatar = props.avatar,\n children = props.children,\n className = props.className,\n icon = props.icon,\n subtitle = props.subtitle,\n useBodyClass = props.useBodyClass,\n otherProps = _objectWithoutProperties(props, ['avatar', 'children', 'className', 'icon', 'subtitle', 'useBodyClass']);\n\n var classes = (0, _classnames2.default)('mdl-list__item-primary-content', className);\n var subtitleClassName = useBodyClass ? 'mdl-list__item-text-body' : 'mdl-list__item-sub-title';\n\n var iconElement = null;\n if (icon) {\n iconElement = createIcon('icon', icon);\n } else if (avatar) {\n iconElement = createIcon('avatar', avatar);\n }\n\n return _react2.default.createElement(\n 'span',\n _extends({ className: classes }, otherProps),\n iconElement,\n _react2.default.createElement(\n 'span',\n null,\n children\n ),\n subtitle && _react2.default.createElement(\n 'span',\n { className: subtitleClassName },\n subtitle\n )\n );\n};\n\nListItemContent.propTypes = propTypes;\n\nexports.default = ListItemContent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/List/ListItemContent.js\n// module id = 141\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _mdlUpgrade = require('./utils/mdlUpgrade');\n\nvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n checked: _react.PropTypes.bool,\n className: _react.PropTypes.string,\n disabled: _react.PropTypes.bool,\n name: _react.PropTypes.string,\n onChange: _react.PropTypes.func,\n ripple: _react.PropTypes.bool,\n value: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]).isRequired\n};\n\nvar Radio = function (_React$Component) {\n _inherits(Radio, _React$Component);\n\n function Radio() {\n _classCallCheck(this, Radio);\n\n return _possibleConstructorReturn(this, (Radio.__proto__ || Object.getPrototypeOf(Radio)).apply(this, arguments));\n }\n\n _createClass(Radio, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.disabled !== prevProps.disabled) {\n var fnName = this.props.disabled ? 'disable' : 'enable';\n (0, _reactDom.findDOMNode)(this).MaterialRadio[fnName]();\n }\n if (this.props.checked !== prevProps.checked) {\n var _fnName = this.props.checked ? 'check' : 'uncheck';\n (0, _reactDom.findDOMNode)(this).MaterialRadio[_fnName]();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n children = _props.children,\n className = _props.className,\n name = _props.name,\n ripple = _props.ripple,\n value = _props.value,\n inputProps = _objectWithoutProperties(_props, ['children', 'className', 'name', 'ripple', 'value']);\n\n var classes = (0, _classnames2.default)('mdl-radio mdl-js-radio', {\n 'mdl-js-ripple-effect': ripple\n }, className);\n\n return _react2.default.createElement(\n 'label',\n { className: classes },\n _react2.default.createElement('input', _extends({\n type: 'radio',\n className: 'mdl-radio__button',\n value: value,\n name: name\n }, inputProps)),\n _react2.default.createElement(\n 'span',\n { className: 'mdl-radio__label' },\n children\n )\n );\n }\n }]);\n\n return Radio;\n}(_react2.default.Component);\n\nRadio.propTypes = propTypes;\n\nexports.default = (0, _mdlUpgrade2.default)(Radio, true);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Radio.js\n// module id = 142\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n active: _react.PropTypes.bool,\n className: _react.PropTypes.string,\n component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.func]),\n cssPrefix: _react.PropTypes.string,\n onTabClick: _react.PropTypes.func,\n style: _react.PropTypes.object,\n tabId: _react.PropTypes.number\n};\n\nvar defaultProps = {\n style: {}\n};\n\nvar Tab = function Tab(props) {\n var _classNames;\n\n var active = props.active,\n className = props.className,\n component = props.component,\n children = props.children,\n cssPrefix = props.cssPrefix,\n onTabClick = props.onTabClick,\n style = props.style,\n tabId = props.tabId,\n otherProps = _objectWithoutProperties(props, ['active', 'className', 'component', 'children', 'cssPrefix', 'onTabClick', 'style', 'tabId']);\n\n var classes = (0, _classnames2.default)((_classNames = {}, _defineProperty(_classNames, cssPrefix + '__tab', true), _defineProperty(_classNames, 'is-active', active), _classNames), className);\n\n style.cursor = 'pointer';\n\n return _react2.default.createElement(component || 'a', _extends({\n className: classes,\n onClick: function onClick() {\n return onTabClick(tabId);\n },\n style: style\n }, otherProps), children);\n};\n\nTab.propTypes = propTypes;\nTab.defaultProps = defaultProps;\n\nexports.default = Tab;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Tabs/Tab.js\n// module id = 143\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _MDLComponent = require('./utils/MDLComponent');\n\nvar _MDLComponent2 = _interopRequireDefault(_MDLComponent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar Tooltip = function Tooltip(props) {\n var label = props.label,\n large = props.large,\n children = props.children,\n position = props.position,\n otherProps = _objectWithoutProperties(props, ['label', 'large', 'children', 'position']);\n\n var id = Math.random().toString(36).substr(2);\n\n var newLabel = typeof label === 'string' ? _react2.default.createElement(\n 'span',\n null,\n label\n ) : label;\n\n var element = void 0;\n if (typeof children === 'string') {\n element = _react2.default.createElement(\n 'span',\n null,\n children\n );\n } else {\n element = _react2.default.Children.only(children);\n }\n\n return _react2.default.createElement(\n 'div',\n _extends({ style: { display: 'inline-block' } }, otherProps),\n _react2.default.cloneElement(element, { id: id }),\n _react2.default.createElement(\n _MDLComponent2.default,\n null,\n _react2.default.cloneElement(newLabel, {\n htmlFor: id,\n className: (0, _classnames2.default)('mdl-tooltip', _defineProperty({\n 'mdl-tooltip--large': large\n }, 'mdl-tooltip--' + position, typeof position !== 'undefined'))\n })\n )\n );\n};\n\nTooltip.propTypes = {\n children: _react.PropTypes.node.isRequired,\n label: _react.PropTypes.node.isRequired,\n large: _react.PropTypes.bool,\n position: _react.PropTypes.oneOf(['left', 'right', 'top', 'bottom'])\n};\n\nexports.default = Tooltip;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Tooltip.js\n// module id = 144\n// module chunks = 0","/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n return (/input|select|textarea|button|object/.test(nodeName) ?\n !element.disabled :\n \"a\" === nodeName ?\n element.href || isTabIndexNotNaN :\n isTabIndexNotNaN) && visible(element);\n}\n\nfunction hidden(el) {\n return (el.offsetWidth <= 0 && el.offsetHeight <= 0) ||\n el.style.display === 'none';\n}\n\nfunction visible(element) {\n while (element) {\n if (element === document.body) break;\n if (hidden(element)) return false;\n element = element.parentNode;\n }\n return true;\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute('tabindex');\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n return [].slice.call(element.querySelectorAll('*'), 0).filter(function(el) {\n return tabbable(el);\n });\n}\n\nmodule.exports = findTabbableDescendants;\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/tabbable.js\n// module id = 145\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nexports[\"default\"] = _react.PropTypes.shape({\n subscribe: _react.PropTypes.func.isRequired,\n dispatch: _react.PropTypes.func.isRequired,\n getState: _react.PropTypes.func.isRequired\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-redux/lib/utils/storeShape.js\n// module id = 146\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports[\"default\"] = warning;\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-redux/lib/utils/warning.js\n// module id = 147\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _PropTypes = require('./PropTypes');\n\nvar _ContextUtils = require('./ContextUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n bool = _React$PropTypes.bool,\n object = _React$PropTypes.object,\n string = _React$PropTypes.string,\n func = _React$PropTypes.func,\n oneOfType = _React$PropTypes.oneOfType;\n\n\nfunction isLeftClickEvent(event) {\n return event.button === 0;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\n// TODO: De-duplicate against hasAnyProperties in createTransitionManager.\nfunction isEmptyObject(object) {\n for (var p in object) {\n if (Object.prototype.hasOwnProperty.call(object, p)) return false;\n }return true;\n}\n\nfunction resolveToLocation(to, router) {\n return typeof to === 'function' ? to(router.location) : to;\n}\n\n/**\n * A <Link> is used to create an <a> element that links to a route.\n * When that route is active, the link gets the value of its\n * activeClassName prop.\n *\n * For example, assuming you have the following route:\n *\n * <Route path=\"/posts/:postID\" component={Post} />\n *\n * You could use the following component to link to that route:\n *\n * <Link to={`/posts/${post.id}`} />\n *\n * Links may pass along location state and/or query string parameters\n * in the state/query props, respectively.\n *\n * <Link ... query={{ show: true }} state={{ the: 'state' }} />\n */\nvar Link = _react2.default.createClass({\n displayName: 'Link',\n\n\n mixins: [(0, _ContextUtils.ContextSubscriber)('router')],\n\n contextTypes: {\n router: _PropTypes.routerShape\n },\n\n propTypes: {\n to: oneOfType([string, object, func]),\n query: object,\n hash: string,\n state: object,\n activeStyle: object,\n activeClassName: string,\n onlyActiveOnIndex: bool.isRequired,\n onClick: func,\n target: string\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n onlyActiveOnIndex: false,\n style: {}\n };\n },\n handleClick: function handleClick(event) {\n if (this.props.onClick) this.props.onClick(event);\n\n if (event.defaultPrevented) return;\n\n var router = this.context.router;\n\n !router ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<Link>s rendered outside of a router context cannot navigate.') : (0, _invariant2.default)(false) : void 0;\n\n if (isModifiedEvent(event) || !isLeftClickEvent(event)) return;\n\n // If target prop is set (e.g. to \"_blank\"), let browser handle link.\n /* istanbul ignore if: untestable with Karma */\n if (this.props.target) return;\n\n event.preventDefault();\n\n router.push(resolveToLocation(this.props.to, router));\n },\n render: function render() {\n var _props = this.props,\n to = _props.to,\n activeClassName = _props.activeClassName,\n activeStyle = _props.activeStyle,\n onlyActiveOnIndex = _props.onlyActiveOnIndex,\n props = _objectWithoutProperties(_props, ['to', 'activeClassName', 'activeStyle', 'onlyActiveOnIndex']);\n\n // Ignore if rendered outside the context of router to simplify unit testing.\n\n\n var router = this.context.router;\n\n\n if (router) {\n // If user does not specify a `to` prop, return an empty anchor tag.\n if (to == null) {\n return _react2.default.createElement('a', props);\n }\n\n var toLocation = resolveToLocation(to, router);\n props.href = router.createHref(toLocation);\n\n if (activeClassName || activeStyle != null && !isEmptyObject(activeStyle)) {\n if (router.isActive(toLocation, onlyActiveOnIndex)) {\n if (activeClassName) {\n if (props.className) {\n props.className += ' ' + activeClassName;\n } else {\n props.className = activeClassName;\n }\n }\n\n if (activeStyle) props.style = _extends({}, props.style, activeStyle);\n }\n }\n }\n\n return _react2.default.createElement('a', _extends({}, props, { onClick: this.handleClick }));\n }\n});\n\nexports.default = Link;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/Link.js\n// module id = 148\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.isPromise = isPromise;\nfunction isPromise(obj) {\n return obj && typeof obj.then === 'function';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/PromiseUtils.js\n// module id = 149\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _PatternUtils = require('./PatternUtils');\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n string = _React$PropTypes.string,\n object = _React$PropTypes.object;\n\n/**\n * A <Redirect> is used to declare another URL path a client should\n * be sent to when they request a given URL.\n *\n * Redirects are placed alongside routes in the route configuration\n * and are traversed in the same manner.\n */\n/* eslint-disable react/require-render-return */\n\nvar Redirect = _react2.default.createClass({\n displayName: 'Redirect',\n\n\n statics: {\n createRouteFromReactElement: function createRouteFromReactElement(element) {\n var route = (0, _RouteUtils.createRouteFromReactElement)(element);\n\n if (route.from) route.path = route.from;\n\n route.onEnter = function (nextState, replace) {\n var location = nextState.location,\n params = nextState.params;\n\n\n var pathname = void 0;\n if (route.to.charAt(0) === '/') {\n pathname = (0, _PatternUtils.formatPattern)(route.to, params);\n } else if (!route.to) {\n pathname = location.pathname;\n } else {\n var routeIndex = nextState.routes.indexOf(route);\n var parentPattern = Redirect.getRoutePattern(nextState.routes, routeIndex - 1);\n var pattern = parentPattern.replace(/\\/*$/, '/') + route.to;\n pathname = (0, _PatternUtils.formatPattern)(pattern, params);\n }\n\n replace({\n pathname: pathname,\n query: route.query || location.query,\n state: route.state || location.state\n });\n };\n\n return route;\n },\n getRoutePattern: function getRoutePattern(routes, routeIndex) {\n var parentPattern = '';\n\n for (var i = routeIndex; i >= 0; i--) {\n var route = routes[i];\n var pattern = route.path || '';\n\n parentPattern = pattern.replace(/\\/*$/, '/') + parentPattern;\n\n if (pattern.indexOf('/') === 0) break;\n }\n\n return '/' + parentPattern;\n }\n },\n\n propTypes: {\n path: string,\n from: string, // Alias for path\n to: string.isRequired,\n query: object,\n state: object,\n onEnter: _InternalPropTypes.falsy,\n children: _InternalPropTypes.falsy\n },\n\n /* istanbul ignore next: sanity check */\n render: function render() {\n !false ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<Redirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n }\n});\n\nexports.default = Redirect;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/Redirect.js\n// module id = 150\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.createRouterObject = createRouterObject;\nexports.assignRouterState = assignRouterState;\nfunction createRouterObject(history, transitionManager, state) {\n var router = _extends({}, history, {\n setRouteLeaveHook: transitionManager.listenBeforeLeavingRoute,\n isActive: transitionManager.isActive\n });\n\n return assignRouterState(router, state);\n}\n\nfunction assignRouterState(router, _ref) {\n var location = _ref.location,\n params = _ref.params,\n routes = _ref.routes;\n\n router.location = location;\n router.params = params;\n router.routes = routes;\n\n return router;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/RouterUtils.js\n// module id = 151\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.default = createMemoryHistory;\n\nvar _useQueries = require('history/lib/useQueries');\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _useBasename = require('history/lib/useBasename');\n\nvar _useBasename2 = _interopRequireDefault(_useBasename);\n\nvar _createMemoryHistory = require('history/lib/createMemoryHistory');\n\nvar _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createMemoryHistory(options) {\n // signatures and type checking differ between `useQueries` and\n // `createMemoryHistory`, have to create `memoryHistory` first because\n // `useQueries` doesn't understand the signature\n var memoryHistory = (0, _createMemoryHistory2.default)(options);\n var createHistory = function createHistory() {\n return memoryHistory;\n };\n var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);\n return history;\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/createMemoryHistory.js\n// module id = 152\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nexports.default = function (createHistory) {\n var history = void 0;\n if (canUseDOM) history = (0, _useRouterHistory2.default)(createHistory)();\n return history;\n};\n\nvar _useRouterHistory = require('./useRouterHistory');\n\nvar _useRouterHistory2 = _interopRequireDefault(_useRouterHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/createRouterHistory.js\n// module id = 153\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = createTransitionManager;\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _computeChangedRoutes2 = require('./computeChangedRoutes');\n\nvar _computeChangedRoutes3 = _interopRequireDefault(_computeChangedRoutes2);\n\nvar _TransitionUtils = require('./TransitionUtils');\n\nvar _isActive2 = require('./isActive');\n\nvar _isActive3 = _interopRequireDefault(_isActive2);\n\nvar _getComponents = require('./getComponents');\n\nvar _getComponents2 = _interopRequireDefault(_getComponents);\n\nvar _matchRoutes = require('./matchRoutes');\n\nvar _matchRoutes2 = _interopRequireDefault(_matchRoutes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction hasAnyProperties(object) {\n for (var p in object) {\n if (Object.prototype.hasOwnProperty.call(object, p)) return true;\n }return false;\n}\n\nfunction createTransitionManager(history, routes) {\n var state = {};\n\n // Signature should be (location, indexOnly), but needs to support (path,\n // query, indexOnly)\n function isActive(location, indexOnly) {\n location = history.createLocation(location);\n\n return (0, _isActive3.default)(location, indexOnly, state.location, state.routes, state.params);\n }\n\n var partialNextState = void 0;\n\n function match(location, callback) {\n if (partialNextState && partialNextState.location === location) {\n // Continue from where we left off.\n finishMatch(partialNextState, callback);\n } else {\n (0, _matchRoutes2.default)(routes, location, function (error, nextState) {\n if (error) {\n callback(error);\n } else if (nextState) {\n finishMatch(_extends({}, nextState, { location: location }), callback);\n } else {\n callback();\n }\n });\n }\n }\n\n function finishMatch(nextState, callback) {\n var _computeChangedRoutes = (0, _computeChangedRoutes3.default)(state, nextState),\n leaveRoutes = _computeChangedRoutes.leaveRoutes,\n changeRoutes = _computeChangedRoutes.changeRoutes,\n enterRoutes = _computeChangedRoutes.enterRoutes;\n\n (0, _TransitionUtils.runLeaveHooks)(leaveRoutes, state);\n\n // Tear down confirmation hooks for left routes\n leaveRoutes.filter(function (route) {\n return enterRoutes.indexOf(route) === -1;\n }).forEach(removeListenBeforeHooksForRoute);\n\n // change and enter hooks are run in series\n (0, _TransitionUtils.runChangeHooks)(changeRoutes, state, nextState, function (error, redirectInfo) {\n if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);\n\n (0, _TransitionUtils.runEnterHooks)(enterRoutes, nextState, finishEnterHooks);\n });\n\n function finishEnterHooks(error, redirectInfo) {\n if (error || redirectInfo) return handleErrorOrRedirect(error, redirectInfo);\n\n // TODO: Fetch components after state is updated.\n (0, _getComponents2.default)(nextState, function (error, components) {\n if (error) {\n callback(error);\n } else {\n // TODO: Make match a pure function and have some other API\n // for \"match and update state\".\n callback(null, null, state = _extends({}, nextState, { components: components }));\n }\n });\n }\n\n function handleErrorOrRedirect(error, redirectInfo) {\n if (error) callback(error);else callback(null, redirectInfo);\n }\n }\n\n var RouteGuid = 1;\n\n function getRouteID(route) {\n var create = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n return route.__id__ || create && (route.__id__ = RouteGuid++);\n }\n\n var RouteHooks = Object.create(null);\n\n function getRouteHooksForRoutes(routes) {\n return routes.map(function (route) {\n return RouteHooks[getRouteID(route)];\n }).filter(function (hook) {\n return hook;\n });\n }\n\n function transitionHook(location, callback) {\n (0, _matchRoutes2.default)(routes, location, function (error, nextState) {\n if (nextState == null) {\n // TODO: We didn't actually match anything, but hang\n // onto error/nextState so we don't have to matchRoutes\n // again in the listen callback.\n callback();\n return;\n }\n\n // Cache some state here so we don't have to\n // matchRoutes() again in the listen callback.\n partialNextState = _extends({}, nextState, { location: location });\n\n var hooks = getRouteHooksForRoutes((0, _computeChangedRoutes3.default)(state, partialNextState).leaveRoutes);\n\n var result = void 0;\n for (var i = 0, len = hooks.length; result == null && i < len; ++i) {\n // Passing the location arg here indicates to\n // the user that this is a transition hook.\n result = hooks[i](location);\n }\n\n callback(result);\n });\n }\n\n /* istanbul ignore next: untestable with Karma */\n function beforeUnloadHook() {\n // Synchronously check to see if any route hooks want\n // to prevent the current window/tab from closing.\n if (state.routes) {\n var hooks = getRouteHooksForRoutes(state.routes);\n\n var message = void 0;\n for (var i = 0, len = hooks.length; typeof message !== 'string' && i < len; ++i) {\n // Passing no args indicates to the user that this is a\n // beforeunload hook. We don't know the next location.\n message = hooks[i]();\n }\n\n return message;\n }\n }\n\n var unlistenBefore = void 0,\n unlistenBeforeUnload = void 0;\n\n function removeListenBeforeHooksForRoute(route) {\n var routeID = getRouteID(route);\n if (!routeID) {\n return;\n }\n\n delete RouteHooks[routeID];\n\n if (!hasAnyProperties(RouteHooks)) {\n // teardown transition & beforeunload hooks\n if (unlistenBefore) {\n unlistenBefore();\n unlistenBefore = null;\n }\n\n if (unlistenBeforeUnload) {\n unlistenBeforeUnload();\n unlistenBeforeUnload = null;\n }\n }\n }\n\n /**\n * Registers the given hook function to run before leaving the given route.\n *\n * During a normal transition, the hook function receives the next location\n * as its only argument and can return either a prompt message (string) to show the user,\n * to make sure they want to leave the page; or `false`, to prevent the transition.\n * Any other return value will have no effect.\n *\n * During the beforeunload event (in browsers) the hook receives no arguments.\n * In this case it must return a prompt message to prevent the transition.\n *\n * Returns a function that may be used to unbind the listener.\n */\n function listenBeforeLeavingRoute(route, hook) {\n var thereWereNoRouteHooks = !hasAnyProperties(RouteHooks);\n var routeID = getRouteID(route, true);\n\n RouteHooks[routeID] = hook;\n\n if (thereWereNoRouteHooks) {\n // setup transition & beforeunload hooks\n unlistenBefore = history.listenBefore(transitionHook);\n\n if (history.listenBeforeUnload) unlistenBeforeUnload = history.listenBeforeUnload(beforeUnloadHook);\n }\n\n return function () {\n removeListenBeforeHooksForRoute(route);\n };\n }\n\n /**\n * This is the API for stateful environments. As the location\n * changes, we update state and call the listener. We can also\n * gracefully handle errors and redirects.\n */\n function listen(listener) {\n function historyListener(location) {\n if (state.location === location) {\n listener(null, state);\n } else {\n match(location, function (error, redirectLocation, nextState) {\n if (error) {\n listener(error);\n } else if (redirectLocation) {\n history.replace(redirectLocation);\n } else if (nextState) {\n listener(null, nextState);\n } else {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'Location \"%s\" did not match any routes', location.pathname + location.search + location.hash) : void 0;\n }\n });\n }\n }\n\n // TODO: Only use a single history listener. Otherwise we'll end up with\n // multiple concurrent calls to match.\n\n // Set up the history listener first in case the initial match redirects.\n var unsubscribe = history.listen(historyListener);\n\n if (state.location) {\n // Picking up on a matchContext.\n listener(null, state);\n } else {\n historyListener(history.getCurrentLocation());\n }\n\n return unsubscribe;\n }\n\n return {\n isActive: isActive,\n match: match,\n listenBeforeLeavingRoute: listenBeforeLeavingRoute,\n listen: listen\n };\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/createTransitionManager.js\n// module id = 154\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.default = useRouterHistory;\n\nvar _useQueries = require('history/lib/useQueries');\n\nvar _useQueries2 = _interopRequireDefault(_useQueries);\n\nvar _useBasename = require('history/lib/useBasename');\n\nvar _useBasename2 = _interopRequireDefault(_useBasename);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction useRouterHistory(createHistory) {\n return function (options) {\n var history = (0, _useQueries2.default)((0, _useBasename2.default)(createHistory))(options);\n return history;\n };\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/useRouterHistory.js\n// module id = 155\n// module chunks = 0","/**\n * Copyright 2016-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nfunction isNative(fn) {\n // Based on isNative() from Lodash\n var funcToString = Function.prototype.toString;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var reIsNative = RegExp('^' + funcToString\n // Take an example native function source for comparison\n .call(hasOwnProperty)\n // Strip regex characters so we can use it for regex\n .replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n // Remove hasOwnProperty from the template to make it generic\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n try {\n var source = funcToString.call(fn);\n return reIsNative.test(source);\n } catch (err) {\n return false;\n }\n}\n\nvar canUseCollections =\n// Array.from\ntypeof Array.from === 'function' &&\n// Map\ntypeof Map === 'function' && isNative(Map) &&\n// Map.prototype.keys\nMap.prototype != null && typeof Map.prototype.keys === 'function' && isNative(Map.prototype.keys) &&\n// Set\ntypeof Set === 'function' && isNative(Set) &&\n// Set.prototype.keys\nSet.prototype != null && typeof Set.prototype.keys === 'function' && isNative(Set.prototype.keys);\n\nvar setItem;\nvar getItem;\nvar removeItem;\nvar getItemIDs;\nvar addRoot;\nvar removeRoot;\nvar getRootIDs;\n\nif (canUseCollections) {\n var itemMap = new Map();\n var rootIDSet = new Set();\n\n setItem = function (id, item) {\n itemMap.set(id, item);\n };\n getItem = function (id) {\n return itemMap.get(id);\n };\n removeItem = function (id) {\n itemMap['delete'](id);\n };\n getItemIDs = function () {\n return Array.from(itemMap.keys());\n };\n\n addRoot = function (id) {\n rootIDSet.add(id);\n };\n removeRoot = function (id) {\n rootIDSet['delete'](id);\n };\n getRootIDs = function () {\n return Array.from(rootIDSet.keys());\n };\n} else {\n var itemByKey = {};\n var rootByKey = {};\n\n // Use non-numeric keys to prevent V8 performance issues:\n // https://github.com/facebook/react/pull/7232\n var getKeyFromID = function (id) {\n return '.' + id;\n };\n var getIDFromKey = function (key) {\n return parseInt(key.substr(1), 10);\n };\n\n setItem = function (id, item) {\n var key = getKeyFromID(id);\n itemByKey[key] = item;\n };\n getItem = function (id) {\n var key = getKeyFromID(id);\n return itemByKey[key];\n };\n removeItem = function (id) {\n var key = getKeyFromID(id);\n delete itemByKey[key];\n };\n getItemIDs = function () {\n return Object.keys(itemByKey).map(getIDFromKey);\n };\n\n addRoot = function (id) {\n var key = getKeyFromID(id);\n rootByKey[key] = true;\n };\n removeRoot = function (id) {\n var key = getKeyFromID(id);\n delete rootByKey[key];\n };\n getRootIDs = function () {\n return Object.keys(rootByKey).map(getIDFromKey);\n };\n}\n\nvar unmountedIDs = [];\n\nfunction purgeDeep(id) {\n var item = getItem(id);\n if (item) {\n var childIDs = item.childIDs;\n\n removeItem(id);\n childIDs.forEach(purgeDeep);\n }\n}\n\nfunction describeComponentFrame(name, source, ownerName) {\n return '\\n in ' + (name || 'Unknown') + (source ? ' (at ' + source.fileName.replace(/^.*[\\\\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');\n}\n\nfunction getDisplayName(element) {\n if (element == null) {\n return '#empty';\n } else if (typeof element === 'string' || typeof element === 'number') {\n return '#text';\n } else if (typeof element.type === 'string') {\n return element.type;\n } else {\n return element.type.displayName || element.type.name || 'Unknown';\n }\n}\n\nfunction describeID(id) {\n var name = ReactComponentTreeHook.getDisplayName(id);\n var element = ReactComponentTreeHook.getElement(id);\n var ownerID = ReactComponentTreeHook.getOwnerID(id);\n var ownerName;\n if (ownerID) {\n ownerName = ReactComponentTreeHook.getDisplayName(ownerID);\n }\n process.env.NODE_ENV !== 'production' ? warning(element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id) : void 0;\n return describeComponentFrame(name, element && element._source, ownerName);\n}\n\nvar ReactComponentTreeHook = {\n onSetChildren: function (id, nextChildIDs) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.childIDs = nextChildIDs;\n\n for (var i = 0; i < nextChildIDs.length; i++) {\n var nextChildID = nextChildIDs[i];\n var nextChild = getItem(nextChildID);\n !nextChild ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected hook events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('140') : void 0;\n !(nextChild.childIDs != null || typeof nextChild.element !== 'object' || nextChild.element == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onSetChildren() to fire for a container child before its parent includes it in onSetChildren().') : _prodInvariant('141') : void 0;\n !nextChild.isMounted ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;\n if (nextChild.parentID == null) {\n nextChild.parentID = id;\n // TODO: This shouldn't be necessary but mounting a new root during in\n // componentWillMount currently causes not-yet-mounted components to\n // be purged from our tree data so their parent id is missing.\n }\n !(nextChild.parentID === id) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Expected onBeforeMountComponent() parent and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('142', nextChildID, nextChild.parentID, id) : void 0;\n }\n },\n onBeforeMountComponent: function (id, element, parentID) {\n var item = {\n element: element,\n parentID: parentID,\n text: null,\n childIDs: [],\n isMounted: false,\n updateCount: 0\n };\n setItem(id, item);\n },\n onBeforeUpdateComponent: function (id, element) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.element = element;\n },\n onMountComponent: function (id) {\n var item = getItem(id);\n !item ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Item must have been set') : _prodInvariant('144') : void 0;\n item.isMounted = true;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n addRoot(id);\n }\n },\n onUpdateComponent: function (id) {\n var item = getItem(id);\n if (!item || !item.isMounted) {\n // We may end up here as a result of setState() in componentWillUnmount().\n // In this case, ignore the element.\n return;\n }\n item.updateCount++;\n },\n onUnmountComponent: function (id) {\n var item = getItem(id);\n if (item) {\n // We need to check if it exists.\n // `item` might not exist if it is inside an error boundary, and a sibling\n // error boundary child threw while mounting. Then this instance never\n // got a chance to mount, but it still gets an unmounting event during\n // the error boundary cleanup.\n item.isMounted = false;\n var isRoot = item.parentID === 0;\n if (isRoot) {\n removeRoot(id);\n }\n }\n unmountedIDs.push(id);\n },\n purgeUnmountedComponents: function () {\n if (ReactComponentTreeHook._preventPurging) {\n // Should only be used for testing.\n return;\n }\n\n for (var i = 0; i < unmountedIDs.length; i++) {\n var id = unmountedIDs[i];\n purgeDeep(id);\n }\n unmountedIDs.length = 0;\n },\n isMounted: function (id) {\n var item = getItem(id);\n return item ? item.isMounted : false;\n },\n getCurrentStackAddendum: function (topElement) {\n var info = '';\n if (topElement) {\n var name = getDisplayName(topElement);\n var owner = topElement._owner;\n info += describeComponentFrame(name, topElement._source, owner && owner.getName());\n }\n\n var currentOwner = ReactCurrentOwner.current;\n var id = currentOwner && currentOwner._debugID;\n\n info += ReactComponentTreeHook.getStackAddendumByID(id);\n return info;\n },\n getStackAddendumByID: function (id) {\n var info = '';\n while (id) {\n info += describeID(id);\n id = ReactComponentTreeHook.getParentID(id);\n }\n return info;\n },\n getChildIDs: function (id) {\n var item = getItem(id);\n return item ? item.childIDs : [];\n },\n getDisplayName: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element) {\n return null;\n }\n return getDisplayName(element);\n },\n getElement: function (id) {\n var item = getItem(id);\n return item ? item.element : null;\n },\n getOwnerID: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (!element || !element._owner) {\n return null;\n }\n return element._owner._debugID;\n },\n getParentID: function (id) {\n var item = getItem(id);\n return item ? item.parentID : null;\n },\n getSource: function (id) {\n var item = getItem(id);\n var element = item ? item.element : null;\n var source = element != null ? element._source : null;\n return source;\n },\n getText: function (id) {\n var element = ReactComponentTreeHook.getElement(id);\n if (typeof element === 'string') {\n return element;\n } else if (typeof element === 'number') {\n return '' + element;\n } else {\n return null;\n }\n },\n getUpdateCount: function (id) {\n var item = getItem(id);\n return item ? item.updateCount : 0;\n },\n\n\n getRootIDs: getRootIDs,\n getRegisteredIDs: getItemIDs\n};\n\nmodule.exports = ReactComponentTreeHook;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactComponentTreeHook.js\n// module id = 156\n// module chunks = 0","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactElementSymbol.js\n// module id = 157\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypeLocationNames = {};\n\nif (process.env.NODE_ENV !== 'production') {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n}\n\nmodule.exports = ReactPropTypeLocationNames;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactPropTypeLocationNames.js\n// module id = 158\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar canDefineProperty = false;\nif (process.env.NODE_ENV !== 'production') {\n try {\n // $FlowFixMe https://github.com/facebook/flow/issues/285\n Object.defineProperty({}, 'x', { get: function () {} });\n canDefineProperty = true;\n } catch (x) {\n // IE will fail on defineProperty\n }\n}\n\nmodule.exports = canDefineProperty;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/canDefineProperty.js\n// module id = 159\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/getIteratorFn.js\n// module id = 160\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = compose;\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\n\nfunction compose() {\n for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n var last = funcs[funcs.length - 1];\n var rest = funcs.slice(0, -1);\n return function () {\n return rest.reduceRight(function (composed, f) {\n return f(composed);\n }, last.apply(undefined, arguments));\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/lib/compose.js\n// module id = 161\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.ActionTypes = undefined;\nexports['default'] = createStore;\n\nvar _isPlainObject = require('lodash/isPlainObject');\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nvar _symbolObservable = require('symbol-observable');\n\nvar _symbolObservable2 = _interopRequireDefault(_symbolObservable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar ActionTypes = exports.ActionTypes = {\n INIT: '@@redux/INIT'\n};\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} enhancer The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error('Expected the enhancer to be a function.');\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error('Expected the reducer to be a function.');\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n function getState() {\n return currentState;\n }\n\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Expected listener to be a function.');\n }\n\n var isSubscribed = true;\n\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n isSubscribed = false;\n\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n };\n }\n\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n function dispatch(action) {\n if (!(0, _isPlainObject2['default'])(action)) {\n throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' + 'Have you misspelled a constant?');\n }\n\n if (isDispatching) {\n throw new Error('Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n\n return action;\n }\n\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error('Expected the nextReducer to be a function.');\n }\n\n currentReducer = nextReducer;\n dispatch({ type: ActionTypes.INIT });\n }\n\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/zenparsing/es-observable\n */\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object') {\n throw new TypeError('Expected the observer to be an object.');\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return { unsubscribe: unsubscribe };\n }\n }, _ref[_symbolObservable2['default']] = function () {\n return this;\n }, _ref;\n }\n\n // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n dispatch({ type: ActionTypes.INIT });\n\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[_symbolObservable2['default']] = observable, _ref2;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/lib/createStore.js\n// module id = 162\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports['default'] = warning;\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n /* eslint-disable no-empty */\n } catch (e) {}\n /* eslint-enable no-empty */\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/lib/utils/warning.js\n// module id = 163\n// module chunks = 0","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tmodule.children = [];\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n}\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 164\n// module chunks = 0","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue+','+value : value\n }\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n }\n\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (typeof input === 'string') {\n this.url = input\n } else {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n }\n\n this.credentials = options.credentials || this.credentials || 'omit'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split('\\r\\n').forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n }\n\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n }\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n }\n\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/whatwg-fetch/fetch.js\n// module id = 165\n// module chunks = 0","import React, { Component, PropTypes } from 'react';\nimport { Layout, Drawer, Header, Navigation, Content,\n Footer, FooterSection, FooterDropDownSection, FooterLinkList,\n Grid, Cell, Icon,\n} from 'react-mdl';\nimport { Link } from 'react-router';\nimport style from './styles.scss';\nimport ErrorContainer from './error/error-container';\n\nimport UserContainer from './user/user-container';\nimport ShowUserContainer from './user/show-user-container';\n\nconst base = {\n name: 'Unleash',\n link: '/',\n};\n\nfunction replace (input, params) {\n if (!params) {\n return input;\n }\n Object.keys(params).forEach(key => {\n input = input.replace(`:${key}`, params[key]);\n });\n return input;\n}\n\nexport default class App extends Component {\n static propTypes () {\n return {\n location: PropTypes.object.isRequired,\n params: PropTypes.object.isRequired,\n routes: PropTypes.array.isRequired,\n };\n }\n\n static contextTypes = {\n router: React.PropTypes.object,\n }\n\n componentWillReceiveProps (nextProps) {\n if (this.props.location.pathname !== nextProps.location.pathname) {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n window.requestAnimationFrame(() => {\n document.querySelector('.mdl-layout__content').scrollTop = 0;\n });\n\n const layout = document.querySelector('.mdl-js-layout');\n const drawer = document.querySelector('.mdl-layout__drawer');\n // hack, might get a built in alternative later\n if (drawer.classList.contains('is-visible')) {\n layout.MaterialLayout.toggleDrawer();\n }\n }, 10);\n }\n }\n\n getSections () {\n if (window.innerWidth < 768) {\n return [base];\n }\n const { routes, params } = this.props;\n const unique = {};\n let result = [base].concat(routes.splice(1).map((routeEntry) => ({\n name: replace(routeEntry.pageTitle, params),\n link: replace(routeEntry.link || routeEntry.path, params),\n }))).filter(entry => {\n if (!unique[entry.link]) {\n unique[entry.link] = true;\n return true;\n }\n return false;\n });\n\n // mutate document.title:\n document.title = result\n .map(e => e.name)\n .reverse()\n .join(' - ');\n\n return result;\n }\n\n getTitleWithLinks () {\n const result = this.getSections();\n return (\n <span>\n {result.map((entry, index) => (\n <span key={entry.link + index}><Link style={{ color: '#f1f1f1', textDecoration: 'none' }} to={entry.link}>\n {entry.name}\n </Link> {(index + 1) < result.length ? ' / ' : null}</span>\n ))}\n </span>\n );\n }\n\n render () {\n const createListItem = (path, caption, icon) =>\n <a\n href={this.context.router.createHref(path)}\n className={this.context.router.isActive(path) ? style.active : ''}>\n {icon && <Icon name={icon} />} {caption}\n </a>;\n\n return (\n <div style={{}}>\n <UserContainer />\n <Layout fixedHeader>\n <Header title={this.getTitleWithLinks()}>\n <Navigation>\n <a href=\"https://github.com/Unleash\" target=\"_blank\">Github</a>\n <ShowUserContainer />\n </Navigation>\n </Header>\n <Drawer title=\"Unleash Admin\">\n <Navigation>\n {createListItem('/features', 'Feature toggles', 'list')}\n {createListItem('/strategies', 'Strategies', 'extension')}\n {createListItem('/history', 'Event history', 'history')}\n {createListItem('/archive', 'Archived toggles', 'archive')}\n {createListItem('/applications', 'Applications', 'apps')}\n </Navigation>\n </Drawer>\n <Content>\n <Grid shadow={1} style={{ maxWidth: '1200px', margin: '0 auto' }}>\n <Cell col={12}>\n {this.props.children}\n <ErrorContainer />\n </Cell>\n </Grid>\n <Footer size=\"mega\">\n <FooterSection type=\"middle\">\n <FooterDropDownSection title=\"Menu\">\n <FooterLinkList>\n {createListItem('/features', 'Feature toggles')}\n {createListItem('/strategies', 'Strategies')}\n {createListItem('/history', 'Event history')}\n {createListItem('/archive', 'Archived toggles')}\n </FooterLinkList>\n </FooterDropDownSection>\n <FooterDropDownSection title=\"Metrics\">\n <FooterLinkList>\n {createListItem('/applications', 'Applications')}\n </FooterLinkList>\n </FooterDropDownSection>\n <FooterDropDownSection title=\"Clients\">\n <FooterLinkList>\n <a href=\"https://github.com/Unleash/unleash-node-client/\">Node.js</a>\n <a href=\"https://github.com/Unleash/unleash-java-client/\">Java</a>\n </FooterLinkList>\n </FooterDropDownSection>\n </FooterSection>\n <FooterSection type=\"bottom\" logo=\"Unleash Admin\">\n <FooterLinkList>\n <a href=\"https://github.com/Unleash/unleash/\" target=\"_blank\">\n GitHub\n </a>\n <a href=\"https://finn.no\" target=\"_blank\"><small>A product by</small> FINN.no</a>\n </FooterLinkList>\n </FooterSection>\n </Footer>\n </Content>\n </Layout>\n </div>\n );\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/app.jsx","/* eslint react/no-multi-comp:off */\nimport React, { Component, PureComponent } from 'react';\n\nimport { Link } from 'react-router';\nimport {\n Grid, Cell,\n List, ListItem, ListItemContent,\n Textfield, Icon, ProgressBar,\n Tabs, Tab,\n Switch,\n} from 'react-mdl';\nimport { HeaderTitle, ExternalIconLink, shorten } from '../common';\n\nclass StatefulTextfield extends Component {\n constructor (props) {\n super(props);\n this.state = { value: props.value };\n this.setValue = function setValue (e) {\n this.setState({ value: e.target.value });\n }.bind(this);\n }\n\n render () {\n return (<Textfield\n style={{ width: '100%' }}\n label={this.props.label}\n floatingLabel\n rows={this.props.rows}\n value={this.state.value}\n onChange={this.setValue}\n onBlur={this.props.onBlur} />\n );\n }\n}\n\nclass ClientApplications extends PureComponent {\n constructor (props) {\n super(props);\n this.state = { activeTab: 0 };\n }\n\n componentDidMount () {\n this.props.fetchApplication(this.props.appName);\n }\n\n render () {\n if (!this.props.application) {\n return <ProgressBar indeterminate />;\n }\n const {\n application,\n storeApplicationMetaData,\n } = this.props;\n const {\n appName,\n instances,\n strategies,\n seenToggles,\n url,\n description,\n icon = 'apps',\n color,\n } = application;\n\n const content = this.state.activeTab === 0 ? (\n <Grid>\n <Cell col={6} tablet={4} phone={12}>\n <h6> Toggles</h6>\n <hr />\n <List>\n {seenToggles.map(({ name, description, enabled, notFound }, i) =>\n (notFound ?\n <ListItem twoLine key={i}>\n <ListItemContent icon={'report'} subtitle={'Missing, want to create?'}>\n <Link to={`/features/create?name=${name}`}>\n {name}\n </Link>\n </ListItemContent>\n </ListItem> :\n <ListItem twoLine key={i}>\n <ListItemContent icon={<span><Switch disabled checked={!!enabled} /></span>} subtitle={shorten(description, 60)}>\n <Link to={`/features/view/${name}`}>\n {shorten(name, 50)}\n </Link>\n </ListItemContent>\n </ListItem>)\n )}\n </List>\n </Cell>\n <Cell col={6} tablet={4} phone={12}>\n <h6>Implemented strategies</h6>\n <hr />\n <List>\n {strategies.map(({ name, description, notFound }, i) => (\n notFound ?\n <ListItem twoLine key={`${name}-${i}`}>\n <ListItemContent icon={'report'} subtitle={'Missing, want to create?'}>\n <Link to={`/strategies/create?name=${name}`}>\n {name}\n </Link>\n </ListItemContent>\n </ListItem> :\n <ListItem twoLine key={`${name}-${i}`}>\n <ListItemContent icon={'extension'} subtitle={shorten(description, 60)}>\n <Link to={`/strategies/view/${name}`}>\n {shorten(name, 50)}\n </Link>\n </ListItemContent>\n </ListItem>\n ))}\n </List>\n </Cell>\n <Cell col={12} tablet={12}>\n <h6>{instances.length} Instances registered</h6>\n <hr />\n <List>\n {instances.map(({ instanceId, clientIp, lastSeen }, i) => (\n <ListItem key={i} twoLine>\n <ListItemContent\n icon=\"timeline\"\n subtitle={\n <span>{clientIp} last seen at <small>{new Date(lastSeen).toLocaleString('nb-NO')}</small></span>\n }>\n {instanceId}\n </ListItemContent>\n </ListItem>\n ))}\n </List>\n </Cell>\n </Grid>) : (\n <Grid>\n <Cell col={12}>\n <h5>Edit app meta data</h5>\n </Cell>\n <Cell col={6} tablet={12}>\n <StatefulTextfield\n value={url} label=\"URL\" onBlur={(e) => storeApplicationMetaData(appName, 'url', e.target.value)} /><br />\n <StatefulTextfield\n value={description}\n label=\"Description\" rows={5} onBlur={(e) => storeApplicationMetaData(appName, 'description', e.target.value)} />\n </Cell>\n <Cell col={6} tablet={12}>\n <StatefulTextfield\n value={icon} label=\"Select icon\" onBlur={(e) => storeApplicationMetaData(appName, 'icon', e.target.value)} />\n <StatefulTextfield\n value={color} label=\"Select color\" onBlur={(e) => storeApplicationMetaData(appName, 'color', e.target.value)} />\n </Cell>\n </Grid>);\n\n\n return (\n <div>\n <HeaderTitle title={<span><Icon name={icon} /> {appName}</span>} subtitle={description}\n actions={url && <ExternalIconLink url={url}>Visit site</ExternalIconLink>}\n />\n\n <Tabs activeTab={this.state.activeTab} onChange={(tabId) => this.setState({ activeTab: tabId })} ripple>\n <Tab>Metrics</Tab>\n <Tab>Edit</Tab>\n </Tabs>\n\n {content}\n </div>\n );\n }\n}\n\n\nexport default ClientApplications;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/application/application-edit-component.js","import { connect } from 'react-redux';\nimport ApplicationEdit from './application-edit-component';\nimport { fetchApplication, storeApplicationMetaData } from '../../store/application/actions';\n\nconst mapStateToProps = (state, props) => {\n let application = state.applications.getIn(['apps', props.appName]);\n if (application) {\n application = application.toJS();\n }\n return {\n application,\n };\n};\n\nconst Constainer = connect(mapStateToProps, {\n fetchApplication,\n storeApplicationMetaData,\n})(ApplicationEdit);\n\nexport default Constainer;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/application/application-edit-container.js","import React, { Component } from 'react';\nimport { ProgressBar } from 'react-mdl';\nimport { AppsLinkList, HeaderTitle } from '../common';\n\nclass ClientStrategies extends Component {\n\n componentDidMount () {\n this.props.fetchAll();\n }\n\n render () {\n const {\n applications,\n } = this.props;\n\n if (!applications) {\n return <ProgressBar indeterminate />;\n }\n return (\n <div>\n <HeaderTitle title=\"Applications\" />\n <AppsLinkList apps={applications} />\n </div>\n );\n }\n}\n\n\nexport default ClientStrategies;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/application/application-list-component.js","import { connect } from 'react-redux';\nimport ApplicationList from './application-list-component';\nimport { fetchAll } from '../../store/application/actions';\n\nconst mapStateToProps = (state) => ({ applications: state.applications.get('list').toJS() });\n\nconst Container = connect(mapStateToProps, { fetchAll })(ApplicationList);\n\nexport default Container;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/application/application-list-container.js","import { connect } from 'react-redux';\nimport ListComponent from './archive-list-component';\nimport { fetchArchive, revive } from '../../store/archive-actions';\n\nconst mapStateToProps = (state) => {\n const archive = state.archive.get('list').toArray();\n\n return {\n archive,\n };\n};\n\nconst ArchiveListContainer = connect(mapStateToProps, { fetchArchive, revive })(ListComponent);\n\nexport default ArchiveListContainer;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/archive/archive-container.js","import React, { Component } from 'react';\nimport { Link } from 'react-router';\nimport { DataTable, TableHeader, IconButton, Icon } from 'react-mdl';\nimport { HeaderTitle } from '../common';\n\nclass ArchiveList extends Component {\n componentDidMount () {\n this.props.fetchArchive();\n }\n\n render () {\n const { archive, revive } = this.props;\n archive.forEach(e => {\n e.reviveName = e.name;\n });\n return (\n <div>\n <HeaderTitle title=\"Toggle Archive\" />\n {\n archive.length > 0 ?\n <DataTable\n rows={archive}\n style={{ width: '100%' }}>\n <TableHeader style={{ width: '25px' }} name=\"reviveName\" cellFormatter={(reviveName) => (\n <IconButton colored name=\"undo\" onClick={() => revive(reviveName)} />\n )}>Revive</TableHeader>\n <TableHeader style={{ width: '25px' }} name=\"enabled\" cellFormatter={(v) => (v ? 'Yes' : '-')}>Enabled</TableHeader>\n <TableHeader name=\"name\">Toggle name</TableHeader>\n <TableHeader numeric name=\"createdAt\">Created</TableHeader>\n </DataTable> :\n <div style={{ textAlign: 'center' }}>\n <Icon name=\"report\" style={{ color: '#aaa', fontSize: '40px' }}/><br />\n No archived feature toggles, go see <Link to=\"/features\">active toggles here</Link>\n </div>\n }\n </div>\n );\n }\n}\n\n\nexport default ArchiveList;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/archive/archive-list-component.jsx","import React, { PropTypes } from 'react';\n\nimport { Snackbar, Icon } from 'react-mdl';\n\nclass ErrorComponent extends React.Component {\n static propTypes () {\n return {\n errors: PropTypes.array.isRequired,\n muteError: PropTypes.func.isRequired,\n };\n }\n\n render () {\n const showError = this.props.errors.length > 0;\n const error = showError ? this.props.errors[0] : undefined;\n const muteError = () => this.props.muteError(error);\n return (\n <Snackbar\n action=\"Dismiss\"\n active={showError}\n onActionClick={muteError}\n onTimeout={muteError}\n timeout={10000}\n >\n <Icon name=\"question_answer\" /> {error}\n </Snackbar>\n );\n }\n}\n\nexport default ErrorComponent;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/error/error-component.jsx","import { connect } from 'react-redux';\nimport ErrorComponent from './error-component';\nimport { muteError } from '../../store/error-actions';\n\n\nconst mapDispatchToProps = {\n muteError,\n};\n\nconst mapStateToProps = (state) => ({\n errors: state.error.get('list').toArray(),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ErrorComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/error/error-container.jsx","import React, { PropTypes } from 'react';\nimport { Link } from 'react-router';\nimport { Chip, Switch, Icon, IconButton } from 'react-mdl';\nimport Progress from './progress';\nimport { shorten, calc } from '../common';\n\nimport style from './feature.scss';\n\nconst Feature = ({\n feature,\n onFeatureClick,\n onFeatureRemove,\n settings,\n metricsLastHour = { yes: 0, no: 0, isFallback: true },\n metricsLastMinute = { yes: 0, no: 0, isFallback: true },\n}) => {\n const { name, description, enabled, strategies } = feature;\n\n const { showLastHour = false } = settings;\n const isStale = showLastHour ? metricsLastHour.isFallback : metricsLastMinute.isFallback;\n\n const percent = 1 * (showLastHour ?\n calc(metricsLastHour.yes, metricsLastHour.yes + metricsLastHour.no, 0) :\n calc(metricsLastMinute.yes, metricsLastMinute.yes + metricsLastMinute.no, 0)\n );\n\n const removeToggle = () => {\n if (window.confirm('Are you sure you want to remove this toggle?')) { // eslint-disable-line no-alert\n onFeatureRemove(name);\n }\n };\n\n return (\n <li key={name} className=\"mdl-list__item\">\n <span className=\"mdl-list__item-primary-content\">\n <div style={{ width: '40px', textAlign: 'center' }}>\n {\n isStale ?\n <Icon\n style={{ width: '25px', marginTop: '4px', fontSize: '25px', color: '#ccc' }}\n name=\"report problem\" title=\"No metrics avaiable\" /> :\n <div>\n <Progress strokeWidth={15} percentage={percent} width=\"50\" />\n </div>\n }\n </div>\n\n  \n <span style={{ display: 'inline-block', width: '45px' }} title={`Toggle ${name}`}>\n <Switch title=\"test\" key=\"left-actions\" onChange={() => onFeatureClick(feature)} checked={enabled} />\n </span>\n <Link to={`/features/view/${name}`} className={style.link}>\n {shorten(name, 50)} <small className={style.hideLt960}>{shorten(description, 30) || ''}</small>\n </Link>\n </span>\n\n <span className={style.iconList} >\n {strategies && strategies.map((s, i) => <Chip className={[style.iconListItemChip, style.hideLt960].join(' ')} key={i}>\n <small>{s.name}</small>\n </Chip>)}\n <IconButton name=\"delete\" onClick={removeToggle} className={style.iconListItem} />\n </span>\n\n </li>\n );\n};\n\nFeature.propTypes = {\n feature: PropTypes.object,\n onFeatureClick: PropTypes.func,\n onFeatureRemove: PropTypes.func,\n};\n\nexport default Feature;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/feature-list-item-component.jsx","import { connect } from 'react-redux';\nimport { hashHistory } from 'react-router';\nimport { createFeatureToggles, validateName } from '../../store/feature-actions';\nimport { createMapper, createActions } from '../input-helpers';\nimport FormComponent from './form';\n\nconst ID = 'add-feature-toggle';\nconst mapStateToProps = createMapper({\n id: ID,\n getDefault () {\n let name;\n try {\n [, name] = document.location.hash.match(/name=([a-z0-9-_]+)/i);\n } catch (e) {}\n return { name };\n },\n});\nconst prepare = (methods, dispatch) => {\n methods.onSubmit = (input) => (\n (e) => {\n e.preventDefault();\n createFeatureToggles(input)(dispatch)\n .then(() => methods.clear())\n .then(() => hashHistory.push(`/features/edit/${input.name}`));\n }\n );\n\n methods.onCancel = (evt) => {\n evt.preventDefault();\n methods.clear();\n hashHistory.push('/features');\n };\n\n methods.addStrategy = (v) => {\n methods.pushToList('strategies', v);\n };\n\n methods.updateStrategy = (index, n) => {\n methods.updateInList('strategies', index, n);\n };\n\n methods.removeStrategy = (index) => {\n methods.removeFromList('strategies', index);\n };\n\n methods.validateName = (v) => {\n const featureToggleName = v.target.value;\n validateName(featureToggleName)\n .then(() => methods.setValue('nameError', undefined))\n .catch((err) => methods.setValue('nameError', err.message));\n };\n\n return methods;\n};\nconst actions = createActions({ id: ID, prepare });\n\nexport default connect(mapStateToProps, actions)(FormComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/form-add-container.jsx","import { connect } from 'react-redux';\nimport { hashHistory } from 'react-router';\n\nimport { requestUpdateFeatureToggle } from '../../store/feature-actions';\nimport { createMapper, createActions } from '../input-helpers';\nimport FormComponent from './form';\n\nconst ID = 'edit-feature-toggle';\nfunction getId (props) {\n return [ID, props.featureToggle.name];\n}\n// TODO: need to scope to the active featureToggle\n// best is to emulate the \"input-storage\"?\nconst mapStateToProps = createMapper({\n id: getId,\n getDefault: (state, ownProps) => ownProps.featureToggle,\n prepare: (props) => {\n props.editmode = true;\n return props;\n },\n});\n\nconst prepare = (methods, dispatch) => {\n methods.onSubmit = (input) => (\n (e) => {\n e.preventDefault();\n // TODO: should add error handling\n requestUpdateFeatureToggle(input)(dispatch)\n .then(() => methods.clear())\n .then(() => hashHistory.push(`/features/view/${input.name}`));\n }\n );\n\n methods.onCancel = (evt) => {\n evt.preventDefault();\n methods.clear();\n window.history.back();\n };\n\n methods.addStrategy = (v) => {\n methods.pushToList('strategies', v);\n };\n\n methods.removeStrategy = (index) => {\n methods.removeFromList('strategies', index);\n };\n\n methods.updateStrategy = (index, n) => {\n methods.updateInList('strategies', index, n);\n };\n\n methods.validateName = () => {};\n\n return methods;\n};\n\nconst actions = createActions({\n id: getId,\n prepare,\n});\n\nexport default connect(mapStateToProps, actions)(FormComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/form-edit-container.jsx","import React, { PropTypes } from 'react';\nimport { Menu, MenuItem, IconButton } from 'react-mdl';\n\nclass AddStrategy extends React.Component {\n\n static propTypes () {\n return {\n strategies: PropTypes.array.isRequired,\n addStrategy: PropTypes.func.isRequired,\n fetchStrategies: PropTypes.func.isRequired,\n };\n }\n\n addStrategy = (strategyName) => {\n const selectedStrategy = this.props.strategies.find(s => s.name === strategyName);\n const parameters = {};\n\n selectedStrategy.parameters.forEach(({ name }) => { parameters[name] = ''; });\n\n this.props.addStrategy({\n name: selectedStrategy.name,\n parameters,\n });\n };\n\n stopPropagation (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n render () {\n const menuStyle = {\n maxHeight: '300px',\n overflowY: 'auto',\n backgroundColor: 'rgb(247, 248, 255)',\n };\n return (\n <div style={{ position: 'relative', width: '25px', height: '25px', display: 'inline-block' }} >\n <IconButton name=\"add\" id=\"strategies-add\" raised accent title=\"Add Strategy\" onClick={this.stopPropagation}/>\n <Menu target=\"strategies-add\" valign=\"bottom\" align=\"right\" ripple style={menuStyle}>\n <MenuItem disabled>Add Strategy:</MenuItem>\n {this.props.strategies.map((s) =>\n <MenuItem key={s.name} title={s.description} onClick={() => this.addStrategy(s.name)}>{s.name}</MenuItem>)\n }\n </Menu>\n </div>\n );\n }\n}\n\n\nexport default AddStrategy;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/form/strategies-add.jsx","import React, { PropTypes } from 'react';\nimport ConfigureStrategy from './strategy-configure';\n\nclass StrategiesList extends React.Component {\n\n static propTypes () {\n return {\n strategies: PropTypes.array.isRequired,\n configuredStrategies: PropTypes.array.isRequired,\n updateStrategy: PropTypes.func.isRequired,\n removeStrategy: PropTypes.func.isRequired,\n };\n }\n\n render () {\n const {\n strategies,\n configuredStrategies,\n } = this.props;\n\n if (!configuredStrategies || configuredStrategies.length === 0) {\n return <i style={{ color: 'red' }}>No strategies added</i>;\n }\n\n const blocks = configuredStrategies.map((strategy, i) => (\n <ConfigureStrategy\n key={`${strategy.name}-${i}`}\n strategy={strategy}\n removeStrategy={this.props.removeStrategy.bind(null, i)}\n updateStrategy={this.props.updateStrategy.bind(null, i)}\n strategyDefinition={strategies.find(s => s.name === strategy.name)} />\n ));\n return (\n <div style={{ display: 'flex', flexWrap: 'wrap' }}>\n {blocks}\n </div>\n );\n }\n}\n\nexport default StrategiesList;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/form/strategies-list.jsx","import { connect } from 'react-redux';\nimport StrategiesSection from './strategies-section';\nimport { fetchStrategies } from '../../../store/strategy/actions';\n\n\nexport default connect((state) => ({\n strategies: state.strategies.get('list').toArray(),\n}), { fetchStrategies })(StrategiesSection);\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/form/strategies-section-container.jsx","import React, { PropTypes } from 'react';\nimport { ProgressBar } from 'react-mdl';\nimport StrategiesList from './strategies-list';\nimport AddStrategy from './strategies-add';\nimport { HeaderTitle } from '../../common';\n\nclass StrategiesSection extends React.Component {\n\n static propTypes () {\n return {\n strategies: PropTypes.array.isRequired,\n addStrategy: PropTypes.func.isRequired,\n removeStrategy: PropTypes.func.isRequired,\n updateStrategy: PropTypes.func.isRequired,\n fetchStrategies: PropTypes.func.isRequired,\n };\n }\n\n componentWillMount () {\n this.props.fetchStrategies();\n }\n\n render () {\n if (!this.props.strategies || this.props.strategies.length === 0) {\n return <ProgressBar indeterminate />;\n }\n\n return (\n <div>\n <HeaderTitle title=\"Activation strategies\" actions={<AddStrategy {...this.props} />} />\n <StrategiesList {...this.props} />\n </div>\n );\n }\n}\n\nexport default StrategiesSection;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/form/strategies-section.jsx","import React, { PropTypes } from 'react';\nimport {\n Textfield, Button,\n Card, CardTitle, CardText, CardActions, CardMenu,\n IconButton, Icon,\n} from 'react-mdl';\nimport { Link } from 'react-router';\nimport StrategyInputPercentage from './strategy-input-percentage';\nimport StrategyInputList from './strategy-input-list';\n\nconst style = {\n flex: '1',\n minWidth: '300px',\n maxWidth: '100%',\n margin: '5px 20px 15px 0px',\n background: '#f2f9fc',\n};\n\nconst helpText = {\n color: 'rgba(0,0,0, 0.54)',\n fontSize: '12px',\n lineHeight: '14px',\n};\nclass StrategyConfigure extends React.Component {\n\n static propTypes () {\n return {\n strategy: PropTypes.object.isRequired,\n strategyDefinition: PropTypes.object.isRequired,\n updateStrategy: PropTypes.func.isRequired,\n removeStrategy: PropTypes.func.isRequired,\n };\n }\n\n // shouldComponentUpdate (props, nextProps) {\n // console.log({ props, nextProps });\n // }\n\n handleConfigChange = (key, e) => {\n this.setConfig(key, e.target.value);\n };\n\n setConfig = (key, value) => {\n const parameters = this.props.strategy.parameters || {};\n parameters[key] = value;\n\n const updatedStrategy = Object.assign({}, this.props.strategy, { parameters });\n\n this.props.updateStrategy(updatedStrategy);\n }\n\n handleRemove = (evt) => {\n evt.preventDefault();\n this.props.removeStrategy();\n }\n\n renderInputFields ({ parameters }) {\n if (parameters && parameters.length > 0) {\n return parameters.map(({ name, type, description, required }) => {\n let value = this.props.strategy.parameters[name];\n if (type === 'percentage') {\n if (value == null || (typeof value === 'string' && value === '')) {\n value = 50; // default value\n }\n return (\n <div key={name}>\n <StrategyInputPercentage\n name={name}\n onChange={this.handleConfigChange.bind(this, name)}\n value={1 * value} />\n {description && <p style={helpText}>{description}</p>}\n </div>\n );\n } else if (type === 'list') {\n let list = [];\n if (typeof value === 'string') {\n list = value\n .trim()\n .split(',')\n .filter(Boolean);\n }\n return (\n <div key={name}>\n <StrategyInputList name={name} list={list} setConfig={this.setConfig} />\n {description && <p style={helpText}>{description}</p>}\n </div>\n );\n } else if (type === 'number') {\n return (\n <div key={name}>\n <Textfield\n pattern=\"-?[0-9]*(\\.[0-9]+)?\"\n error={`${name} is not a number!`}\n floatingLabel\n required={required}\n style={{ width: '100%' }}\n name={name}\n label={name}\n onChange={this.handleConfigChange.bind(this, name)}\n value={value}\n />\n {description && <p style={helpText}>{description}</p>}\n </div>\n );\n } else {\n return (\n <div key={name}>\n <Textfield\n floatingLabel\n rows={1}\n style={{ width: '100%' }}\n required={required}\n name={name}\n label={name}\n onChange={this.handleConfigChange.bind(this, name)}\n value={value}\n />\n {description && <p style={helpText}>{description}</p>}\n </div>\n );\n }\n });\n }\n return null;\n }\n\n render () {\n if (!this.props.strategyDefinition) {\n const { name } = this.props.strategy;\n return (\n <Card shadow={0} style={style}>\n <CardTitle>\"{name}\" deleted?</CardTitle>\n <CardText>\n The strategy \"{name}\" does not exist on this server.\n <Link to={`/strategies/create?name=${name}`}>Want to create it now?</Link>\n </CardText>\n <CardActions>\n <Button onClick={this.handleRemove} label=\"remove strategy\" accent raised>Remove</Button>\n </CardActions>\n\n </Card>\n );\n }\n\n const inputFields = this.renderInputFields(this.props.strategyDefinition);\n\n const { name } = this.props.strategy;\n\n return (\n <Card shadow={0} style={style}>\n <CardTitle style={{ color: '#fff', height: '65px', background: '#607d8b' }}>\n <Icon name=\"extension\" /> { name }\n </CardTitle>\n <CardText>\n {this.props.strategyDefinition.description}\n </CardText>\n {\n inputFields && <CardActions border style={{ padding: '20px' }}>\n {inputFields}\n </CardActions>\n }\n\n <CardMenu style={{ color: '#fff' }}>\n <Link\n title=\"View strategy\"\n to={`/strategies/view/${name}`}\n style={{ color: '#fff', display: 'inline-block', verticalAlign: 'bottom', marginRight: '5px' }}>\n <Icon name=\"link\" />\n </Link>\n <IconButton title=\"Remove strategy from toggle\" name=\"delete\" onClick={this.handleRemove} />\n </CardMenu>\n </Card>\n );\n }\n}\n\nexport default StrategyConfigure;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/form/strategy-configure.jsx","import React, { Component, PropTypes } from 'react';\nimport {\n Textfield,\n IconButton,\n Chip,\n} from 'react-mdl';\n\nexport default class InputList extends Component {\n\n static propTypes = {\n name: PropTypes.string.isRequired,\n list: PropTypes.array.isRequired,\n setConfig: PropTypes.func.isRequired,\n }\n\n onBlur = (e) => {\n this.setValue(e);\n window.removeEventListener('keydown', this.onKeyHandler, false);\n }\n\n onFocus = (e) => {\n e.preventDefault();\n e.stopPropagation();\n window.addEventListener('keydown', this.onKeyHandler, false);\n }\n\n onKeyHandler = (e) => {\n if (e.key === 'Enter') {\n this.setValue();\n e.preventDefault();\n e.stopPropagation();\n }\n }\n\n setValue = (e) => {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n const { name, list, setConfig } = this.props;\n const inputValue = document.querySelector(`[name=\"${name}_input\"]`);\n if (inputValue && inputValue.value) {\n list.push(inputValue.value);\n inputValue.value = '';\n setConfig(name, list.join(','));\n }\n }\n\n onClose (index) {\n const { name, list, setConfig } = this.props;\n list[index] = null;\n setConfig(name, list.length === 1 ? '' : list.filter(Boolean).join(','));\n }\n\n render () {\n const { name, list } = this.props;\n return (<div>\n <p>{name}</p>\n {list.map((entryValue, index) => (\n <Chip\n key={index + entryValue}\n style={{ marginRight: '3px' }}\n onClose={() => this.onClose(index)}>{entryValue}</Chip>\n ))}\n\n <div style={{ display: 'flex' }}>\n <Textfield\n name={`${name}_input`}\n style={{ width: '100%', flex: 1 }}\n floatingLabel\n label=\"Add list entry\"\n onFocus={this.onFocus}\n onBlur={this.onBlur} />\n <IconButton name=\"add\" raised style={{ flex: 1, flexGrow: 0, margin: '20px 0 0 10px' }} onClick={this.setValue} />\n </div>\n\n </div>);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/form/strategy-input-list.jsx","import React from 'react';\nimport { Slider } from 'react-mdl';\n\nconst labelStyle = {\n margin: '20px 0',\n textAlign: 'center',\n color: '#3f51b5',\n fontSize: '12px',\n};\n\nexport default ({ name, value, onChange }) => (\n <div style={{ marginBottom: '20px' }}>\n <div style={labelStyle}>{name}: {value}%</div>\n <Slider min={0} max={100} defaultValue={value} value={value} onChange={onChange} label={name} />\n </div>\n);\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/form/strategy-input-percentage.jsx","import React, { PropTypes } from 'react';\nimport Feature from './feature-list-item-component';\nimport { Link } from 'react-router';\nimport { Icon, Chip, ChipContact, IconButton, FABButton, Textfield, Menu, MenuItem } from 'react-mdl';\n\nimport styles from './feature.scss';\n\nexport default class FeatureListComponent extends React.PureComponent {\n\n static propTypes () {\n return {\n onFeatureClick: PropTypes.func.isRequired,\n onFeatureRemove: PropTypes.func.isRequired,\n features: PropTypes.array.isRequired,\n featureMetrics: PropTypes.object.isRequired,\n fetchFeatureToggles: PropTypes.func.isRequired,\n fetchFeatureMetrics: PropTypes.func.isRequired,\n };\n }\n\n static contextTypes = {\n router: React.PropTypes.object,\n }\n\n componentDidMount () {\n this.props.fetchFeatureToggles();\n this.props.fetchFeatureMetrics();\n this.timer = setInterval(() => {\n this.props.fetchFeatureMetrics();\n }, 5000);\n }\n\n componentWillUnmount () {\n clearInterval(this.timer);\n }\n\n toggleMetrics () {\n this.props.updateSetting('showLastHour', !this.props.settings.showLastHour);\n }\n\n setFilter (v) {\n this.props.updateSetting('filter', typeof v === 'string' ? v.trim() : '');\n }\n\n setSort (v) {\n this.props.updateSetting('sort', typeof v === 'string' ? v.trim() : '');\n }\n\n render () {\n const { features, onFeatureClick, onFeatureRemove, featureMetrics, settings } = this.props;\n\n return (\n <div>\n <div className={styles.topList}>\n <Chip onClick={() => this.toggleMetrics()} className={styles.topListItem0}>\n { settings.showLastHour &&\n <ChipContact className=\"mdl-color--teal mdl-color-text--white\">\n <Icon name=\"hourglass_full\" style={{ fontSize: '16px' }} />\n </ChipContact> }\n { '1 hour' }\n </Chip>\n  \n <Chip onClick={() => this.toggleMetrics()} className={styles.topListItem0}>\n { !settings.showLastHour &&\n <ChipContact className=\"mdl-color--teal mdl-color-text--white\">\n <Icon name=\"hourglass_empty\" style={{ fontSize: '16px' }} />\n </ChipContact> }\n { '1 minute' }\n </Chip>\n\n <div className={styles.topListItem2} style={{ margin: '-10px 10px 0 10px' }}>\n <Textfield\n floatingLabel\n value={settings.filter}\n onChange={(e) => { this.setFilter(e.target.value); }}\n label=\"Filter toggles\"\n style={{ width: '100%' }}\n />\n </div>\n\n <div style={{ position: 'relative' }} className={styles.topListItem0}>\n <IconButton name=\"sort\" id=\"demo-menu-top-right\" colored title=\"Sort\" />\n <Menu target=\"demo-menu-top-right\" valign=\"bottom\" align=\"right\" ripple onClick={\n (e) => this.setSort(e.target.getAttribute('data-target'))}>\n <MenuItem disabled>Filter by:</MenuItem>\n <MenuItem disabled={!settings.sort || settings.sort === 'nosort'} data-target=\"nosort\">Default</MenuItem>\n <MenuItem disabled={settings.sort === 'name'} data-target=\"name\">Name</MenuItem>\n <MenuItem disabled={settings.sort === 'enabled'} data-target=\"enabled\">Enabled</MenuItem>\n <MenuItem disabled={settings.sort === 'appName'} data-target=\"appName\">Application name</MenuItem>\n <MenuItem disabled={settings.sort === 'created'} data-target=\"created\">Created</MenuItem>\n <MenuItem disabled={settings.sort === 'strategies'} data-target=\"strategies\">Strategies</MenuItem>\n <MenuItem disabled={settings.sort === 'metrics'} data-target=\"metrics\">Metrics</MenuItem>\n </Menu>\n </div>\n <Link to=\"/features/create\" className={styles.topListItem0}>\n <IconButton ripple raised name=\"add\" component=\"span\" style={{ color: 'black' }}/>\n </Link>\n </div>\n\n <ul className=\"demo-list-item mdl-list\">\n {features.map((feature, i) =>\n <Feature key={i}\n settings={settings}\n metricsLastHour={featureMetrics.lastHour[feature.name]}\n metricsLastMinute={featureMetrics.lastMinute[feature.name]}\n feature={feature}\n onFeatureClick={onFeatureClick}\n onFeatureRemove={onFeatureRemove}/>\n )}\n </ul>\n <hr />\n <Link to=\"/features/create\" className={styles.topListItem0}>\n <FABButton ripple component=\"span\" mini>\n <Icon name=\"add\" />\n </FABButton>\n </Link>\n </div>\n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/list-component.jsx","import { connect } from 'react-redux';\nimport { toggleFeature, fetchFeatureToggles, removeFeatureToggle } from '../../store/feature-actions';\nimport { fetchFeatureMetrics } from '../../store/feature-metrics-actions';\nimport { updateSettingForGroup } from '../../store/settings/actions';\n\n\nimport FeatureListComponent from './list-component';\n\nconst mapStateToProps = (state) => {\n const featureMetrics = state.featureMetrics.toJS();\n const settings = state.settings.toJS().feature || {};\n let features = state.features.toJS();\n if (settings.filter) {\n features = features.filter(feature =>\n (\n feature.name.indexOf(settings.filter) > -1 ||\n feature.description.indexOf(settings.filter) > -1 ||\n feature.strategies.some(s => s && s.name && s.name.indexOf(settings.filter) > -1)\n )\n );\n }\n\n if (settings.sort) {\n if (settings.sort === 'enabled') {\n features = features.sort((a, b) => (\n // eslint-disable-next-line\n a.enabled === b.enabled ? 0 : a.enabled ? -1 : 1\n ));\n } else if (settings.sort === 'appName') {\n // AppName\n // features = features.sort((a, b) => {\n // if (a.appName < b.appName) { return -1; }\n // if (a.appName > b.appName) { return 1; }\n // return 0;\n // });\n } else if (settings.sort === 'created') {\n features = features.sort((a, b) => (\n new Date(a.createdAt) > new Date(b.createdAt) ? -1 : 1\n ));\n } else if (settings.sort === 'name') {\n features = features.sort((a, b) => {\n if (a.name < b.name) { return -1; }\n if (a.name > b.name) { return 1; }\n return 0;\n });\n } else if (settings.sort === 'strategies') {\n features = features.sort((a, b) => (\n a.strategies.length > b.strategies.length ? -1 : 1\n ));\n } else if (settings.sort === 'metrics') {\n const target = settings.showLastHour ? featureMetrics.lastHour : featureMetrics.lastMinute;\n\n features = features.sort((a, b) => {\n if (!target[a.name]) { return 1; }\n if (!target[b.name]) { return -1; }\n if (target[a.name].yes > target[b.name].yes) {\n return -1;\n }\n return 1;\n });\n }\n }\n\n return {\n features,\n featureMetrics,\n settings,\n };\n};\n\nconst mapDispatchToProps = {\n onFeatureClick: toggleFeature,\n onFeatureRemove: removeFeatureToggle,\n fetchFeatureToggles,\n fetchFeatureMetrics,\n updateSetting: updateSettingForGroup('feature'),\n};\n\nconst FeatureListContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(FeatureListComponent);\n\nexport default FeatureListContainer;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/list-container.jsx","import React, { PropTypes } from 'react';\nimport { Grid, Cell, Icon } from 'react-mdl';\nimport Progress from './progress';\nimport { AppsLinkList, SwitchWithLabel, calc } from '../common';\n\n\nexport default class MetricComponent extends React.Component {\n static propTypes () {\n return {\n metrics: PropTypes.object.isRequired,\n featureToggle: PropTypes.object.isRequired,\n toggleFeature: PropTypes.func.isRequired,\n fetchSeenApps: PropTypes.func.isRequired,\n fetchFeatureMetrics: PropTypes.func.isRequired,\n };\n }\n\n componentWillMount () {\n this.props.fetchSeenApps();\n this.props.fetchFeatureMetrics();\n this.timer = setInterval(() => {\n this.props.fetchFeatureMetrics();\n }, 5000);\n }\n\n componentWillUnmount () {\n clearInterval(this.timer);\n }\n\n render () {\n const { metrics = {}, featureToggle, toggleFeature } = this.props;\n const {\n lastHour = { yes: 0, no: 0, isFallback: true },\n lastMinute = { yes: 0, no: 0, isFallback: true },\n seenApps = [],\n } = metrics;\n\n const lastHourPercent = 1 * calc(lastHour.yes, lastHour.yes + lastHour.no, 0);\n const lastMinutePercent = 1 * calc(lastMinute.yes, lastMinute.yes + lastMinute.no, 0);\n\n return (<div>\n <SwitchWithLabel\n checked={featureToggle.enabled}\n onChange={() => toggleFeature(featureToggle)}>Toggle {featureToggle.name}</SwitchWithLabel>\n <hr />\n <Grid style={{ textAlign: 'center' }}>\n <Cell tablet={4} col={3} phone={12}>\n {\n lastMinute.isFallback ?\n <Icon style={{ width: '100px', height: '100px', fontSize: '100px', color: '#ccc' }}\n name=\"report problem\" title=\"No metrics avaiable\" /> :\n <div>\n <Progress animatePercentageText strokeWidth={10} percentage={lastMinutePercent} width=\"50\" />\n </div>\n }\n <p><strong>Last minute</strong><br /> Yes {lastMinute.yes}, No: {lastMinute.no}</p>\n </Cell>\n <Cell col={3} tablet={4} phone={12}>\n {\n lastHour.isFallback ?\n <Icon style={{ width: '100px', height: '100px', fontSize: '100px', color: '#ccc' }}\n name=\"report problem\" title=\"No metrics avaiable\" /> :\n <div>\n <Progress strokeWidth={10} percentage={lastHourPercent} width=\"50\" />\n </div>\n }\n <p><strong>Last hour</strong><br /> Yes {lastHour.yes}, No: {lastHour.no}</p>\n </Cell>\n <Cell col={6} tablet={12}>\n {seenApps.length > 0 ?\n (<div><strong>Seen in applications:</strong></div>) :\n <div>\n <Icon style={{ width: '100px', height: '100px', fontSize: '100px', color: '#ccc' }}\n name=\"report problem\" title=\"Not used in a app in the last hour\" />\n <div><small><strong>Not used in a app in the last hour.</strong>\n This might be due to your client implementation is not reporting usage.</small></div>\n </div>\n }\n <AppsLinkList apps={seenApps} />\n </Cell>\n </Grid>\n </div>);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/metric-component.jsx","\nimport { connect } from 'react-redux';\n\nimport { fetchFeatureMetrics, fetchSeenApps } from '../../store/feature-metrics-actions';\nimport { toggleFeature } from '../../store/feature-actions';\n\nimport MatricComponent from './metric-component';\n\nfunction getMetricsForToggle (state, toggleName) {\n if (!toggleName) {\n return;\n }\n const result = {};\n\n if (state.featureMetrics.hasIn(['seenApps', toggleName])) {\n result.seenApps = state.featureMetrics.getIn(['seenApps', toggleName]);\n }\n if (state.featureMetrics.hasIn(['lastHour', toggleName])) {\n result.lastHour = state.featureMetrics.getIn(['lastHour', toggleName]);\n result.lastMinute = state.featureMetrics.getIn(['lastMinute', toggleName]);\n }\n return result;\n}\n\nexport default connect((state, props) => ({\n metrics: getMetricsForToggle(state, props.featureToggle.name),\n}), {\n fetchFeatureMetrics,\n toggleFeature,\n fetchSeenApps,\n})(MatricComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/metric-container.jsx","import React, { PropTypes } from 'react';\nimport { Tabs, Tab, ProgressBar } from 'react-mdl';\nimport { hashHistory, Link } from 'react-router';\n\nimport HistoryComponent from '../history/history-list-toggle-container';\nimport MetricComponent from './metric-container';\nimport EditFeatureToggle from './form-edit-container.jsx';\n\nconst TABS = {\n view: 0,\n edit: 1,\n history: 2,\n};\n\nexport default class ViewFeatureToggleComponent extends React.Component {\n\n constructor (props) {\n super(props);\n }\n\n static propTypes () {\n return {\n activeTab: PropTypes.string.isRequired,\n featureToggleName: PropTypes.string.isRequired,\n features: PropTypes.array.isRequired,\n fetchFeatureToggles: PropTypes.array.isRequired,\n featureToggle: PropTypes.object.isRequired,\n };\n }\n\n componentWillMount () {\n if (this.props.features.length === 0) {\n this.props.fetchFeatureToggles();\n }\n }\n\n getTabContent (activeTab) {\n const {\n featureToggle,\n featureToggleName,\n } = this.props;\n\n if (TABS[activeTab] === TABS.history) {\n return <HistoryComponent toggleName={featureToggleName} />;\n } else if (TABS[activeTab] === TABS.edit) {\n return <EditFeatureToggle featureToggle={featureToggle} />;\n } else {\n return <MetricComponent featureToggle={featureToggle} />;\n }\n }\n\n goToTab (tabName, featureToggleName) {\n hashHistory.push(`/features/${tabName}/${featureToggleName}`);\n }\n\n render () {\n const {\n featureToggle,\n features,\n activeTab,\n featureToggleName,\n } = this.props;\n\n if (!featureToggle) {\n if (features.length === 0 ) {\n return <ProgressBar indeterminate />;\n }\n return (\n <span>\n Could not find the toggle <Link to={{ pathname: '/features/create', query: { name: featureToggleName } }}>\n {featureToggleName}</Link>\n </span>\n );\n }\n\n const activeTabId = TABS[this.props.activeTab] ? TABS[this.props.activeTab] : TABS.view;\n const tabContent = this.getTabContent(activeTab);\n\n return (\n <div>\n <h4>{featureToggle.name} <small>{featureToggle.enabled ? 'is enabled' : 'is disabled'}</small>\n <small style={{ float: 'right', lineHeight: '38px' }}>\n Created {(new Date(featureToggle.createdAt)).toLocaleString('nb-NO')}\n </small>\n </h4>\n <div>{featureToggle.description}</div>\n <Tabs activeTab={activeTabId} ripple style={{ marginBottom: '10px' }}>\n <Tab onClick={() => this.goToTab('view', featureToggleName)}>Metrics</Tab>\n <Tab onClick={() => this.goToTab('edit', featureToggleName)}>Edit</Tab>\n <Tab onClick={() => this.goToTab('history', featureToggleName)}>History</Tab>\n </Tabs>\n\n {tabContent}\n </div>\n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/view-component.jsx","\nimport { connect } from 'react-redux';\n\nimport { fetchFeatureToggles } from '../../store/feature-actions';\n\nimport ViewToggleComponent from './view-component';\n\nexport default connect((state, props) => ({\n features: state.features.toJS(),\n featureToggle: state.features.toJS().find(toggle => toggle.name === props.featureToggleName),\n activeTab: props.activeTab,\n}), {\n fetchFeatureToggles,\n})(ViewToggleComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/feature/view-container.jsx","import React, { PureComponent } from 'react';\nimport HistoryList from './history-list-container';\n\nclass History extends PureComponent {\n\n componentDidMount () {\n this.props.fetchHistory();\n }\n\n toggleShowDiff () {\n this.setState({ showData: !this.state.showData });\n }\n\n render () {\n const { history } = this.props;\n if (history.length < 0) {\n return;\n }\n\n return (\n <HistoryList history={history} title=\"Last 100 changes\" />\n );\n }\n}\nexport default History;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/history/history-component.jsx","import { connect } from 'react-redux';\nimport HistoryComponent from './history-component';\nimport { fetchHistory } from '../../store/history-actions';\n\nconst mapStateToProps = (state) => {\n const history = state.history.get('list').toArray();\n return {\n history,\n };\n};\n\nconst HistoryListContainer = connect(mapStateToProps, { fetchHistory })(HistoryComponent);\n\nexport default HistoryListContainer;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/history/history-container.js","import React, { PropTypes, PureComponent } from 'react';\n\nimport style from './history.scss';\n\nconst DIFF_PREFIXES = {\n A: ' ',\n E: ' ',\n D: '-',\n N: '+',\n};\n\nconst KLASSES = {\n A: style.blue, // array edited\n E: style.blue, // edited\n D: style.negative, // deleted\n N: style.positive, // added\n};\n\nfunction buildItemDiff (diff, key) {\n let change;\n if (diff.lhs !== undefined) {\n change = (\n <div>\n <div className={KLASSES.D}>- {key}: {JSON.stringify(diff.lhs)}</div>\n </div>\n );\n } else if (diff.rhs !== undefined) {\n change = (\n <div>\n <div className={KLASSES.N}>+ {key}: {JSON.stringify(diff.rhs)}</div>\n </div>\n );\n }\n\n return change;\n}\n\nfunction buildDiff (diff, idx) {\n let change;\n const key = diff.path.join('.');\n\n if (diff.item) {\n change = buildItemDiff(diff.item, key);\n } else if (diff.lhs !== undefined && diff.rhs !== undefined) {\n change = (\n <div>\n <div className={KLASSES.D}>- {key}: {JSON.stringify(diff.lhs)}</div>\n <div className={KLASSES.N}>+ {key}: {JSON.stringify(diff.rhs)}</div>\n </div>\n );\n } else {\n const spadenClass = KLASSES[diff.kind];\n const prefix = DIFF_PREFIXES[diff.kind];\n\n change = (<div className={spadenClass}>{prefix} {key}: {JSON.stringify(diff.rhs || diff.item)}</div>);\n }\n\n return (<div key={idx}>{change}</div>);\n}\n\nclass HistoryItem extends PureComponent {\n\n static propTypes () {\n return {\n entry: PropTypes.object,\n };\n }\n\n render () {\n const entry = this.props.entry;\n let changes;\n\n if (entry.diffs) {\n changes = entry.diffs.map(buildDiff);\n } else {\n // Just show the data if there is no diff yet.\n changes = <div className={KLASSES.N}>{JSON.stringify(entry.data, null, 2)}</div>;\n }\n\n return (<pre style={{ maxWidth: '500px', overflowX: 'auto', overflowY: 'hidden', width: 'auto' }}>\n <code className=\"smalltext man\">{changes.length === 0 ? '(no changes)' : changes}</code>\n </pre>);\n }\n}\n\nexport default HistoryItem;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/history/history-item-diff.jsx","import React, { PropTypes, PureComponent } from 'react';\n\nimport style from './history.scss';\n\nclass HistoryItem extends PureComponent {\n\n static propTypes () {\n return {\n entry: PropTypes.object,\n };\n }\n\n render () {\n const localEventData = JSON.parse(JSON.stringify(this.props.entry));\n delete localEventData.description;\n delete localEventData.name;\n delete localEventData.diffs;\n\n const prettyPrinted = JSON.stringify(localEventData, null, 2);\n\n return (\n <div className={style['history-item']}>\n <div>\n <code className=\"JSON smalltext man\">{prettyPrinted}</code>\n </div>\n </div>\n );\n }\n}\n\nexport default HistoryItem;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/history/history-item-json.jsx","import React, { Component } from 'react';\nimport HistoryItemDiff from './history-item-diff';\nimport HistoryItemJson from './history-item-json';\nimport { Table, TableHeader } from 'react-mdl';\nimport { HeaderTitle, SwitchWithLabel } from '../common';\n\nimport style from './history.scss';\n\nclass HistoryList extends Component {\n\n toggleShowDiff () {\n this.props.updateSetting('showData', !this.props.settings.showData);\n }\n\n render () {\n const showData = this.props.settings.showData;\n const { history } = this.props;\n if (!history || history.length < 0) {\n return null;\n }\n\n let entries;\n\n if (showData) {\n entries = history.map((entry) => <HistoryItemJson key={`log${entry.id}`} entry={entry} />);\n } else {\n entries = (<Table\n sortable\n rows={\n history.map((entry) => Object.assign({\n diff: (<HistoryItemDiff entry={entry} />),\n }, entry))\n }\n style={{ width: '100%' }}\n >\n <TableHeader name=\"type\">Type</TableHeader>\n <TableHeader name=\"createdBy\">User</TableHeader>\n <TableHeader name=\"diff\">Diff</TableHeader>\n <TableHeader numeric name=\"createdAt\" cellFormatter={(v) => (new Date(v)).toLocaleString('nb-NO')}>Time</TableHeader>\n </Table>);\n }\n\n return (\n <div className={style.history}>\n <HeaderTitle title={this.props.title} actions={\n <SwitchWithLabel checked={showData} onChange={this.toggleShowDiff.bind(this)}>Show full events</SwitchWithLabel>\n }/>\n {entries}\n </div>\n );\n }\n}\nexport default HistoryList;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/history/history-list-component.jsx","import React, { Component, PropTypes } from 'react';\nimport ListComponent from './history-list-container';\nimport { Link } from 'react-router';\n\nclass HistoryListToggle extends Component {\n\n static propTypes () {\n return {\n toggleName: PropTypes.string.isRequired,\n };\n }\n\n componentDidMount () {\n this.props.fetchHistoryForToggle(this.props.toggleName);\n }\n\n render () {\n if (!this.props.history || this.props.history.length === 0) {\n return <span>fetching..</span>;\n }\n const { history, toggleName } = this.props;\n return (\n <ListComponent\n history={history}\n title={\n <span>Showing history for toggle: <Link to={`/features/edit/${toggleName}`}>\n <strong>{toggleName}</strong>\n </Link>\n </span>}/>\n );\n }\n}\n\nexport default HistoryListToggle;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/history/history-list-toggle-component.jsx","import { connect } from 'react-redux';\n\nimport { createMapper, createActions } from '../input-helpers';\nimport { createStrategy } from '../../store/strategy/actions';\n\nimport AddStrategy from './add-strategy';\n\nconst ID = 'add-strategy';\n\nconst prepare = (methods, dispatch) => {\n methods.onSubmit = (input) => (\n (e) => {\n e.preventDefault();\n // clean\n const parameters = (input.parameters || [])\n .filter((name) => !!name)\n .map(({\n name,\n type = 'string',\n description = '',\n required = false,\n }) => ({\n name,\n type,\n description,\n required,\n }));\n\n createStrategy({\n name: input.name,\n description: input.description,\n parameters,\n })(dispatch)\n .then(() => methods.clear())\n // somewhat quickfix / hacky to go back..\n .then(() => window.history.back());\n }\n );\n\n methods.onCancel = (e) => {\n e.preventDefault();\n methods.clear();\n // somewhat quickfix / hacky to go back..\n window.history.back();\n };\n\n\n return methods;\n};\n\nconst actions = createActions({\n id: ID,\n prepare,\n});\n\nexport default connect(createMapper({\n id: ID,\n getDefault () {\n let name;\n try {\n [, name] = document.location.hash.match(/name=([a-z0-9-_]+)/i);\n } catch (e) {}\n return { name };\n },\n}), actions)(AddStrategy);\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/strategies/add-container.js","import { connect } from 'react-redux';\nimport { hashHistory } from 'react-router';\nimport { createMapper, createActions } from '../input-helpers';\nimport { updateStrategy } from '../../store/strategy/actions';\n\nimport AddStrategy from './add-strategy';\n\nconst ID = 'edit-strategy';\n\nfunction getId (props) {\n return [ID, props.strategy.name];\n}\n\n// TODO: need to scope to the active strategy\n// best is to emulate the \"input-storage\"?\nconst mapStateToProps = createMapper({\n id: getId,\n getDefault: (state, ownProps) => ownProps.strategy,\n prepare: (props) => {\n props.editmode = true;\n return props;\n },\n});\n\nconst prepare = (methods, dispatch) => {\n methods.onSubmit = (input) => (\n (e) => {\n e.preventDefault();\n // clean\n const parameters = (input.parameters || [])\n .filter((name) => !!name)\n .map(({\n name,\n type = 'string',\n description = '',\n required = false,\n }) => ({\n name,\n type,\n description,\n required,\n }));\n\n updateStrategy({\n name: input.name,\n description: input.description,\n parameters,\n })(dispatch)\n .then(() => methods.clear())\n .then(() => hashHistory.push(`/strategies/view/${input.name}`));\n }\n );\n\n methods.onCancel = (e) => {\n e.preventDefault();\n methods.clear();\n // somewhat quickfix / hacky to go back..\n window.history.back();\n };\n\n\n return methods;\n};\n\nconst actions = createActions({\n id: getId,\n prepare,\n});\n\nexport default connect(mapStateToProps, actions)(AddStrategy);\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/strategies/edit-container.js","import React, { Component } from 'react';\nimport { Link } from 'react-router';\n\nimport { List, ListItem, ListItemContent, IconButton } from 'react-mdl';\nimport { HeaderTitle } from '../common';\n\nclass StrategiesListComponent extends Component {\n\n static contextTypes = {\n router: React.PropTypes.object,\n }\n\n componentDidMount () {\n this.props.fetchStrategies();\n }\n\n render () {\n const { strategies, removeStrategy } = this.props;\n\n return (\n <div>\n <HeaderTitle title=\"Strategies\"\n actions={\n <IconButton raised\n name=\"add\"\n onClick={() => this.context.router.push('/strategies/create')}\n title=\"Add new strategy\" />} />\n <List>\n {strategies.length > 0 ? strategies.map((strategy, i) => (\n <ListItem key={i} twoLine>\n <ListItemContent icon=\"extension\" subtitle={strategy.description}>\n <Link to={`/strategies/view/${strategy.name}`}>\n <strong>{strategy.name}</strong>\n </Link>\n </ListItemContent>\n <IconButton name=\"delete\" onClick={() => removeStrategy(strategy)} />\n </ListItem>\n )) : <ListItem>No entries</ListItem>}\n </List>\n </div>\n );\n }\n}\n\n\nexport default StrategiesListComponent;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/strategies/list-component.jsx","import { connect } from 'react-redux';\nimport StrategiesListComponent from './list-component.jsx';\nimport { fetchStrategies, removeStrategy } from '../../store/strategy/actions';\n\nconst mapStateToProps = (state) => {\n const list = state.strategies.get('list').toArray();\n\n return {\n strategies: list,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n removeStrategy: (strategy) => {\n if (window.confirm('Are you sure you want to remove this strategy?')) { // eslint-disable-line no-alert\n removeStrategy(strategy)(dispatch);\n }\n },\n fetchStrategies: () => fetchStrategies()(dispatch),\n});\n\nconst StrategiesListContainer = connect(mapStateToProps, mapDispatchToProps)(StrategiesListComponent);\n\nexport default StrategiesListContainer;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/strategies/list-container.jsx","import React, { PropTypes, PureComponent } from 'react';\nimport { Grid, Cell, List, ListItem, ListItemContent } from 'react-mdl';\nimport { AppsLinkList, TogglesLinkList } from '../common';\n\nclass ShowStrategyComponent extends PureComponent {\n static propTypes () {\n return {\n toggles: PropTypes.array,\n applications: PropTypes.array,\n strategy: PropTypes.object.isRequired,\n };\n }\n\n renderParameters (params) {\n if (params) {\n return params.map(({ name, type, description, required }, i) => (\n <ListItem twoLine key={`${name}-${i}`} title={required ? 'Required' : ''}>\n <ListItemContent avatar={required ? 'add' : ' '} subtitle={description}>\n {name} <small>({type})</small>\n </ListItemContent>\n </ListItem>\n ));\n } else {\n return <ListItem>(no params)</ListItem>;\n }\n }\n\n render () {\n const {\n strategy,\n applications,\n toggles,\n } = this.props;\n\n const {\n parameters = [],\n } = strategy;\n\n return (\n <div>\n\n <Grid>\n <Cell col={12} >\n <h6>Parameters</h6>\n <hr />\n <List>\n {this.renderParameters(parameters)}\n </List>\n </Cell>\n\n <Cell col={6} tablet={12}>\n <h6>Applications using this strategy</h6>\n <hr />\n <AppsLinkList apps={applications} />\n </Cell>\n\n <Cell col={6} tablet={12}>\n <h6>Toggles using this strategy</h6>\n <hr />\n <TogglesLinkList toggles={toggles} />\n </Cell>\n </Grid>\n </div>\n );\n }\n}\n\n\nexport default ShowStrategyComponent;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/strategies/show-strategy-component.js","import React, { PropTypes, Component } from 'react';\nimport { hashHistory } from 'react-router';\nimport { Tabs, Tab, ProgressBar } from 'react-mdl';\nimport ShowStrategy from './show-strategy-component';\nimport EditStrategy from './edit-container';\nimport { HeaderTitle } from '../common';\n\nconst TABS = {\n view: 0,\n edit: 1,\n};\n\nexport default class StrategyDetails extends Component {\n static propTypes () {\n return {\n strategyName: PropTypes.string.isRequired,\n toggles: PropTypes.array,\n applications: PropTypes.array,\n activeTab: PropTypes.string.isRequired,\n strategy: PropTypes.object.isRequired,\n fetchStrategies: PropTypes.func.isRequired,\n fetchApplications: PropTypes.func.isRequired,\n fetchFeatureToggles: PropTypes.func.isRequired,\n };\n }\n\n componentDidMount () {\n if (!this.props.strategy) {\n this.props.fetchStrategies();\n };\n if (!this.props.applications || this.props.applications.length === 0) {\n this.props.fetchApplications();\n }\n if (!this.props.toggles || this.props.toggles.length === 0) {\n this.props.fetchFeatureToggles();\n }\n }\n\n getTabContent (activeTabId) {\n if (activeTabId === TABS.edit) {\n return <EditStrategy strategy={this.props.strategy} />;\n } else {\n return (<ShowStrategy\n strategy={this.props.strategy}\n toggles={this.props.toggles}\n applications={this.props.applications} />);\n }\n }\n\n goToTab (tabName) {\n hashHistory.push(`/strategies/${tabName}/${this.props.strategyName}`);\n }\n\n render () {\n const activeTabId = TABS[this.props.activeTab] ? TABS[this.props.activeTab] : TABS.view;\n const strategy = this.props.strategy;\n if (!strategy) {\n return <ProgressBar indeterminate />;\n }\n\n const tabContent = this.getTabContent(activeTabId);\n\n return (\n <div>\n <HeaderTitle title={strategy.name} subtitle={strategy.description} />\n <Tabs activeTab={activeTabId} ripple>\n <Tab onClick={() => this.goToTab('view')}>Details</Tab>\n <Tab onClick={() => this.goToTab('edit')}>Edit</Tab>\n </Tabs>\n <section>\n <div className=\"content\">\n {tabContent}\n </div>\n </section>\n </div>\n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/strategies/strategy-details-component.jsx","import { connect } from 'react-redux';\nimport ShowStrategy from './strategy-details-component';\nimport { fetchStrategies } from '../../store/strategy/actions';\nimport { fetchAll } from '../../store/application/actions';\nimport { fetchFeatureToggles } from '../../store/feature-actions';\n\nconst mapStateToProps = (state, props) => {\n let strategy = state.strategies\n .get('list')\n .find(n => n.name === props.strategyName);\n const applications = state.applications\n .get('list')\n .filter(app => app.strategies.includes(props.strategyName));\n const toggles = state.features\n .filter(toggle =>\n toggle.get('strategies').findIndex(s => s.name === props.strategyName) > -1);\n\n return {\n strategy,\n strategyName: props.strategyName,\n applications: applications && applications.toJS(),\n toggles: toggles && toggles.toJS(),\n activeTab: props.activeTab,\n };\n};\n\nconst Constainer = connect(mapStateToProps, {\n fetchStrategies,\n fetchApplications: fetchAll,\n fetchFeatureToggles,\n})(ShowStrategy);\n\nexport default Constainer;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/strategies/strategy-details-container.js","import React, { PropTypes } from 'react';\n\nexport default class ShowUserComponent extends React.Component {\n static propTypes () {\n return {\n user: PropTypes.object.isRequired,\n openEdit: PropTypes.func.isRequired,\n };\n }\n\n openEdit = (evt) => {\n evt.preventDefault();\n this.props.openEdit();\n }\n\n render () {\n return (\n <a className=\"mdl-navigation__link\" href=\"#edit-user\" onClick={this.openEdit} style={{}}>\n Username: \n <strong>{this.props.user.userName || 'Unknown'}</strong>\n </a>\n );\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/user/show-user-component.jsx","import { connect } from 'react-redux';\nimport ShowUserComponent from './show-user-component';\nimport { openEdit } from '../../store/user/actions';\n\n\nconst mapDispatchToProps = {\n openEdit,\n};\n\nconst mapStateToProps = (state) => ({\n user: state.user.toJS(),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ShowUserComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/user/show-user-container.jsx","import React, { PropTypes } from 'react';\nimport { Textfield, Button } from 'react-mdl';\nimport Modal from 'react-modal';\n\nconst customStyles = {\n overlay: {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.75)',\n zIndex: 99999,\n },\n content: {\n top: '50%',\n left: '50%',\n right: 'auto',\n bottom: 'auto',\n marginRight: '-50%',\n transform: 'translate(-50%, -50%)',\n backgroundColor: '#FFFFFF',\n },\n};\n\nclass EditUserComponent extends React.Component {\n static propTypes () {\n return {\n user: PropTypes.object.isRequired,\n updateUserName: PropTypes.func.isRequired,\n save: PropTypes.func.isRequired,\n };\n }\n\n handleSubmit = (evt) => {\n evt.preventDefault();\n this.props.save();\n }\n\n render () {\n return (\n <div>\n <Modal\n isOpen={this.props.user.showDialog}\n contentLabel=\"test\"\n style={customStyles} >\n <h2>Action required</h2>\n <div>\n <p>\n You hav to specify a username to use Unleash. This will allow us to track changes.\n </p>\n <form onSubmit={this.handleSubmit}>\n <Textfield\n label=\"Username\"\n name=\"username\"\n required\n value={this.props.user.userName}\n onChange={(e) => this.props.updateUserName(e.target.value)}\n />\n <br />\n <Button raised accent onClick={this.props.save}>Save</Button>\n </form>\n </div>\n </Modal>\n </div>\n );\n }\n}\n\nexport default EditUserComponent;\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/user/user-component.jsx","import { connect } from 'react-redux';\nimport UserComponent from './user-component';\nimport { updateUserName, save } from '../../store/user/actions';\n\n\nconst mapDispatchToProps = {\n updateUserName,\n save,\n};\n\nconst mapStateToProps = (state) => ({\n user: state.user.toJS(),\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UserComponent);\n\n\n\n// WEBPACK FOOTER //\n// ./src/component/user/user-container.jsx","import { throwIfNotSuccess, headers } from './helper';\n\nconst URI = '/api/archive';\n\nfunction fetchAll () {\n return fetch(`${URI}/features`)\n .then(throwIfNotSuccess)\n .then(response => response.json());\n}\n\nfunction revive (featureName) {\n return fetch(`${URI}/revive/${featureName}`, {\n method: 'POST',\n headers,\n credentials: 'include',\n }).then(throwIfNotSuccess);\n}\n\n\nmodule.exports = {\n fetchAll,\n revive,\n};\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/data/archive-api.js","import { throwIfNotSuccess, headers } from './helper';\n\nconst URI = '/api/client/instances';\n\nfunction fetchAll () {\n return fetch(URI, { headers })\n .then(throwIfNotSuccess)\n .then(response => response.json());\n}\n\nmodule.exports = {\n fetchAll,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/data/client-instance-api.js","import { throwIfNotSuccess, headers } from './helper';\n\nconst URI = '/api/features';\nconst URI_VALIDATE = '/api/features-validate';\n\nfunction validateToggle (featureToggle) {\n return new Promise((resolve, reject) => {\n if (!featureToggle.strategies || featureToggle.strategies.length === 0) {\n reject(new Error('You must add at least one activation strategy'));\n } else {\n resolve(featureToggle);\n }\n });\n}\n\nfunction fetchAll () {\n return fetch(URI)\n .then(throwIfNotSuccess)\n .then(response => response.json());\n}\n\nfunction create (featureToggle) {\n return validateToggle(featureToggle)\n .then(() => fetch(URI, {\n method: 'POST',\n headers,\n credentials: 'include',\n body: JSON.stringify(featureToggle),\n }))\n .then(throwIfNotSuccess);\n}\n\nfunction validate (featureToggle) {\n return fetch(URI_VALIDATE, {\n method: 'POST',\n headers,\n credentials: 'include',\n body: JSON.stringify(featureToggle),\n }).then(throwIfNotSuccess);\n}\n\nfunction update (featureToggle) {\n return validateToggle(featureToggle)\n .then(() => fetch(`${URI}/${featureToggle.name}`, {\n method: 'PUT',\n headers,\n credentials: 'include',\n body: JSON.stringify(featureToggle),\n }))\n .then(throwIfNotSuccess);\n}\n\nfunction remove (featureToggleName) {\n return fetch(`${URI}/${featureToggleName}`, {\n method: 'DELETE',\n credentials: 'include',\n }).then(throwIfNotSuccess);\n}\n\nmodule.exports = {\n fetchAll,\n create,\n validate,\n update,\n remove,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/data/feature-api.js","const { throwIfNotSuccess } = require('./helper');\n\nconst URI = '/api/client/metrics/feature-toggles';\n\nfunction fetchFeatureMetrics () {\n return fetch(URI)\n .then(throwIfNotSuccess)\n .then(response => response.json());\n}\n\nconst seenURI = '/api/client/seen-apps';\n\nfunction fetchSeenApps () {\n return fetch(seenURI)\n .then(throwIfNotSuccess)\n .then(response => response.json());\n}\n\nmodule.exports = {\n fetchFeatureMetrics,\n fetchSeenApps,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/data/feature-metrics-api.js","import { throwIfNotSuccess } from './helper';\n\nconst URI = '/api/events';\n\nfunction fetchAll () {\n return fetch(URI)\n .then(throwIfNotSuccess)\n .then(response => response.json());\n}\n\nfunction fetchHistoryForToggle (toggleName) {\n return fetch(`${URI}/${toggleName}`)\n .then(throwIfNotSuccess)\n .then(response => response.json());\n}\n\nmodule.exports = {\n fetchAll,\n fetchHistoryForToggle,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/data/history-api.js","import { throwIfNotSuccess, headers } from './helper';\n\nconst URI = '/api/strategies';\n\nfunction fetchAll () {\n return fetch(URI)\n .then(throwIfNotSuccess)\n .then(response => response.json());\n}\n\nfunction create (strategy) {\n return fetch(URI, {\n method: 'POST',\n headers,\n body: JSON.stringify(strategy),\n credentials: 'include',\n }).then(throwIfNotSuccess);\n}\n\nfunction update (strategy) {\n return fetch(`${URI}/${strategy.name}`, {\n method: 'put',\n headers,\n body: JSON.stringify(strategy),\n credentials: 'include',\n }).then(throwIfNotSuccess);\n}\n\nfunction remove (strategy) {\n return fetch(`${URI}/${strategy.name}`, {\n method: 'DELETE',\n headers,\n credentials: 'include',\n }).then(throwIfNotSuccess);\n}\n\nmodule.exports = {\n fetchAll,\n create,\n update,\n remove,\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/data/strategy-api.js","import 'whatwg-fetch';\nimport 'react-mdl/extra/material.css';\nimport 'react-mdl/extra/material.js';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Router, Route, IndexRedirect, hashHistory } from 'react-router';\nimport { Provider } from 'react-redux';\nimport thunkMiddleware from 'redux-thunk';\nimport { createStore, applyMiddleware } from 'redux';\n\nimport store from './store';\nimport App from './component/app';\n\nimport Features from './page/features';\nimport CreateFeatureToggle from './page/features/create';\nimport ViewFeatureToggle from './page/features/show';\nimport Strategies from './page/strategies';\nimport StrategyView from './page/strategies/show';\nimport CreateStrategies from './page/strategies/create';\nimport HistoryPage from './page/history';\nimport HistoryTogglePage from './page/history/toggle';\nimport Archive from './page/archive';\nimport Applications from './page/applications';\nimport ApplicationView from './page/applications/view';\n\nconst unleashStore = createStore(\n store,\n applyMiddleware(\n thunkMiddleware\n )\n);\n\n// \"pageTitle\" and \"link\" attributes are for internal usage only\n\nReactDOM.render(\n <Provider store={unleashStore}>\n <Router history={hashHistory}>\n <Route path=\"/\" component={App}>\n <IndexRedirect to=\"/features\" />\n\n <Route pageTitle=\"Features\" link=\"/features\">\n <Route pageTitle=\"Features\" path=\"/features\" component={Features} />\n <Route pageTitle=\"New\" path=\"/features/create\" component={CreateFeatureToggle} />\n <Route pageTitle=\":name\" path=\"/features/:activeTab/:name\" component={ViewFeatureToggle} />\n </Route>\n\n <Route pageTitle=\"Strategies\" link=\"/strategies\">\n <Route pageTitle=\"Strategies\" path=\"/strategies\" component={Strategies} />\n <Route pageTitle=\"New\" path=\"/strategies/create\" component={CreateStrategies} />\n <Route pageTitle=\":strategyName\" path=\"/strategies/:activeTab/:strategyName\" component={StrategyView} />\n </Route>\n\n <Route pageTitle=\"History\" link=\"/history\">\n <Route pageTitle=\"History\" path=\"/history\" component={HistoryPage} />\n <Route pageTitle=\":toggleName\" path=\"/history/:toggleName\" component={HistoryTogglePage} />\n </Route>\n\n <Route pageTitle=\"Archive\" path=\"/archive\" component={Archive} />\n <Route pageTitle=\"Applications\" link=\"/applications\">\n <Route pageTitle=\"Applications\" path=\"/applications\" component={Applications} />\n <Route pageTitle=\":name\" path=\"/applications/:name\" component={ApplicationView} />\n </Route>\n\n </Route>\n </Router>\n </Provider>, document.getElementById('app'));\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.jsx","import React from 'react';\nimport ApplicationListConmponent from '../../component/application/application-list-container';\n\nconst render = () => <ApplicationListConmponent />;\n\nexport default render;\n\n\n\n// WEBPACK FOOTER //\n// ./src/page/applications/index.js","import React, { PropTypes } from 'react';\nimport ApplicationEditComponent from '../../component/application/application-edit-container';\n\nconst render = ({ params }) => <ApplicationEditComponent appName={params.name} />;\n\nrender.propTypes = {\n params: PropTypes.object.isRequired,\n};\n\nexport default render;\n\n\n\n// WEBPACK FOOTER //\n// ./src/page/applications/view.js","import React from 'react';\nimport Archive from '../../component/archive/archive-container';\n\nconst render = () => <Archive />;\n\nexport default render;\n\n\n\n// WEBPACK FOOTER //\n// ./src/page/archive/index.js","import React from 'react';\nimport AddFeatureToggleForm from '../../component/feature/form-add-container';\n\n\nconst render = () => (<AddFeatureToggleForm title=\"Create feature toggle\" />);\n\nexport default render;\n\n\n\n// WEBPACK FOOTER //\n// ./src/page/features/create.js","import React from 'react';\nimport FeatureListContainer from '../../component/feature/list-container';\n\nconst render = () => (<FeatureListContainer />);\n\nexport default render;\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/page/features/index.js","import React, { PureComponent, PropTypes } from 'react';\nimport ViewFeatureToggle from '../../component/feature/view-container';\n\nexport default class Features extends PureComponent {\n static propTypes () {\n return {\n params: PropTypes.object.isRequired,\n };\n }\n\n render () {\n const { params } = this.props;\n return (\n <ViewFeatureToggle featureToggleName={params.name} activeTab={params.activeTab} />\n );\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/page/features/show.js","import React from 'react';\nimport HistoryComponent from '../../component/history/history-container';\n\nconst render = () => <HistoryComponent />;\n\nexport default render;\n\n\n\n// WEBPACK FOOTER //\n// ./src/page/history/index.js","import React, { PropTypes } from 'react';\nimport HistoryListToggle from '../../component/history/history-list-toggle-container';\n\nconst render = ({ params }) => <HistoryListToggle toggleName={params.toggleName} />;\n\nrender.propTypes = {\n params: PropTypes.object.isRequired,\n};\n\nexport default render;\n\n\n\n// WEBPACK FOOTER //\n// ./src/page/history/toggle.js","import React from 'react';\nimport AddStrategies from '../../component/strategies/add-container';\n\nexport default () => (<AddStrategies />);\n\n\n\n// WEBPACK FOOTER //\n// ./src/page/strategies/create.js","import React from 'react';\nimport Strategies from '../../component/strategies/list-container';\n\nexport default () => (<Strategies />);\n\n\n\n// WEBPACK FOOTER //\n// ./src/page/strategies/index.js","import React, { PropTypes } from 'react';\nimport ShowStrategy from '../../component/strategies/strategy-details-container';\n\nconst render = ({ params }) => <ShowStrategy strategyName={params.strategyName} activeTab={params.activeTab} />;\n\nrender.propTypes = {\n params: PropTypes.object.isRequired,\n};\n\nexport default render;\n\n\n\n// WEBPACK FOOTER //\n// ./src/page/strategies/show.js","import { fromJS, List, Map } from 'immutable';\nimport { RECEIVE_ALL_APPLICATIONS, RECEIVE_APPLICATION } from './actions';\n\nfunction getInitState () {\n return fromJS({ list: [], apps: {} });\n}\n\nconst store = (state = getInitState(), action) => {\n switch (action.type) {\n case RECEIVE_APPLICATION:\n return state.setIn(['apps', action.value.appName], new Map(action.value));\n case RECEIVE_ALL_APPLICATIONS:\n return state.set('list', new List(action.value.applications));\n default:\n return state;\n }\n};\n\nexport default store;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/application/index.js","import { List, Map as $Map } from 'immutable';\nimport { RECEIVE_ARCHIVE, REVIVE_TOGGLE } from './archive-actions';\n\nfunction getInitState () {\n return new $Map({ list: new List() });\n}\n\nconst archiveStore = (state = getInitState(), action) => {\n switch (action.type) {\n case REVIVE_TOGGLE:\n return state.update('list', (list) => list.remove(list.indexOf(action.value)));\n case RECEIVE_ARCHIVE:\n return state.set('list', new List(action.value));\n default:\n return state;\n }\n};\n\nexport default archiveStore;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/archive-store.js","import api from '../data/client-instance-api';\n\nexport const RECEIVE_CLIENT_INSTANCES = 'RECEIVE_CLIENT_INSTANCES';\nexport const ERROR_RECEIVE_CLIENT_INSTANCES = 'ERROR_RECEIVE_CLIENT_INSTANCES';\n\nconst receiveClientInstances = (json) => ({\n type: RECEIVE_CLIENT_INSTANCES,\n value: json,\n});\n\nconst errorReceiveClientInstances = (statusCode) => ({\n type: RECEIVE_CLIENT_INSTANCES,\n statusCode,\n});\n\nexport function fetchClientInstances () {\n return dispatch => api.fetchAll()\n .then(json => dispatch(receiveClientInstances(json)))\n .catch(error => dispatch(errorReceiveClientInstances(error)));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/client-instance-actions.js","import { fromJS } from 'immutable';\nimport { RECEIVE_CLIENT_INSTANCES } from './client-instance-actions';\n\nfunction getInitState () {\n return fromJS([]);\n}\n\nconst store = (state = getInitState(), action) => {\n switch (action.type) {\n case RECEIVE_CLIENT_INSTANCES:\n return fromJS(action.value);\n default:\n return state;\n }\n};\n\nexport default store;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/client-instance-store.js","import { List, Map as $Map } from 'immutable';\nimport { MUTE_ERROR } from './error-actions';\nimport {\n ERROR_FETCH_FEATURE_TOGGLES,\n ERROR_CREATING_FEATURE_TOGGLE,\n ERROR_REMOVE_FEATURE_TOGGLE,\n ERROR_UPDATE_FEATURE_TOGGLE,\n} from './feature-actions';\n\nimport {\n ERROR_UPDATING_STRATEGY,\n ERROR_CREATING_STRATEGY,\n ERROR_RECEIVE_STRATEGIES,\n\n} from './strategy/actions';\n\nconst debug = require('debug')('unleash:error-store');\n\nfunction getInitState () {\n return new $Map({\n list: new List(),\n });\n}\n\nfunction addErrorIfNotAlreadyInList (state, error) {\n debug('Got error', error);\n if (state.get('list').indexOf(error) < 0) {\n return state.update('list', (list) => list.push(error));\n }\n return state;\n}\n\nconst strategies = (state = getInitState(), action) => {\n switch (action.type) {\n case ERROR_CREATING_FEATURE_TOGGLE:\n case ERROR_REMOVE_FEATURE_TOGGLE:\n case ERROR_FETCH_FEATURE_TOGGLES:\n case ERROR_UPDATE_FEATURE_TOGGLE:\n case ERROR_UPDATING_STRATEGY:\n case ERROR_CREATING_STRATEGY:\n case ERROR_RECEIVE_STRATEGIES:\n return addErrorIfNotAlreadyInList(state, action.error.message);\n case MUTE_ERROR:\n return state.update('list', (list) => list.remove(list.indexOf(action.error)));\n default:\n return state;\n }\n};\n\nexport default strategies;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/error-store.js","import { Map as $Map, fromJS } from 'immutable';\n\nimport {\n RECEIVE_FEATURE_METRICS,\n RECEIVE_SEEN_APPS,\n} from './feature-metrics-actions';\n\n\nconst metrics = (state = fromJS({ lastHour: {}, lastMinute: {}, seenApps: {} }), action) => {\n switch (action.type) {\n case RECEIVE_SEEN_APPS:\n return state.set('seenApps', new $Map(action.value));\n case RECEIVE_FEATURE_METRICS:\n return state.withMutations((ctx) => {\n ctx.set('lastHour', new $Map(action.value.lastHour));\n ctx.set('lastMinute', new $Map(action.value.lastMinute));\n return ctx;\n });\n default:\n return state;\n }\n};\n\nexport default metrics;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/feature-metrics-store.js","import { List, Map as $Map } from 'immutable';\nconst debug = require('debug')('unleash:feature-store');\n\n\nimport {\n ADD_FEATURE_TOGGLE,\n RECEIVE_FEATURE_TOGGLES,\n UPDATE_FEATURE_TOGGLE,\n REMOVE_FEATURE_TOGGLE,\n} from './feature-actions';\n\n\nconst features = (state = new List([]), action) => {\n switch (action.type) {\n case ADD_FEATURE_TOGGLE:\n debug(ADD_FEATURE_TOGGLE, action);\n return state.push(new $Map(action.featureToggle));\n case REMOVE_FEATURE_TOGGLE:\n debug(REMOVE_FEATURE_TOGGLE, action);\n return state.filter(toggle => toggle.get('name') !== action.featureToggleName);\n case UPDATE_FEATURE_TOGGLE:\n debug(UPDATE_FEATURE_TOGGLE, action);\n return state.map(toggle => {\n if (toggle.get('name') === action.featureToggle.name) {\n return new $Map(action.featureToggle);\n } else {\n return toggle;\n }\n });\n case RECEIVE_FEATURE_TOGGLES:\n debug(RECEIVE_FEATURE_TOGGLES, action);\n return new List(action.featureToggles.map($Map));\n default:\n return state;\n }\n};\n\nexport default features;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/feature-store.js","import { List, Map as $Map } from 'immutable';\nimport { RECEIVE_HISTORY, RECEIVE_HISTORY_FOR_TOGGLE } from './history-actions';\n\nfunction getInitState () {\n return new $Map({ list: new List(), toggles: new $Map() });\n}\n\nconst historyStore = (state = getInitState(), action) => {\n switch (action.type) {\n case RECEIVE_HISTORY_FOR_TOGGLE:\n return state.setIn(['toggles', action.value.toggleName], new List(action.value.events));\n case RECEIVE_HISTORY:\n return state.set('list', new List(action.value));\n default:\n return state;\n }\n};\n\nexport default historyStore;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/history-store.js","import { combineReducers } from 'redux';\nimport features from './feature-store';\nimport featureMetrics from './feature-metrics-store';\nimport strategies from './strategy';\nimport input from './input-store';\nimport history from './history-store'; // eslint-disable-line\nimport archive from './archive-store';\nimport error from './error-store';\nimport clientInstances from './client-instance-store';\nimport settings from './settings';\nimport user from './user';\nimport applications from './application';\n\nconst unleashStore = combineReducers({\n features,\n featureMetrics,\n strategies,\n input,\n history,\n archive,\n error,\n clientInstances,\n settings,\n user,\n applications,\n});\n\nexport default unleashStore;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/index.js","import { Map as $Map, List, fromJS } from 'immutable';\nimport actions from './input-actions';\n\nfunction getInitState () {\n return new $Map();\n}\n\nfunction init (state, { id, value }) {\n state = assertId(state, id);\n return state.setIn(id, fromJS(value));\n}\n\nfunction assertId (state, id) {\n if (!state.hasIn(id)) {\n return state.setIn(id, new $Map({ inputId: id }));\n }\n return state;\n}\n\nfunction assertList (state, id, key) {\n if (!state.getIn(id).has(key)) {\n return state.setIn(id.concat([key]), new List());\n }\n return state;\n}\n\nfunction setKeyValue (state, { id, key, value }) {\n state = assertId(state, id);\n return state.setIn(id.concat([key]), value);\n}\n\nfunction increment (state, { id, key }) {\n state = assertId(state, id);\n return state.updateIn(id.concat([key]), (value = 0) => value + 1);\n}\n\nfunction clear (state, { id }) {\n if (state.hasIn(id)) {\n return state.removeIn(id);\n }\n return state;\n}\n\nfunction addToList (state, { id, key, value }) {\n state = assertId(state, id);\n state = assertList(state, id, key);\n\n return state.updateIn(id.concat([key]), (list) => list.push(value));\n}\n\nfunction updateInList (state, { id, key, index, newValue, merge }) {\n state = assertId(state, id);\n state = assertList(state, id, key);\n\n return state.updateIn(id.concat([key]), (list) => {\n if (merge && list.has(index)) {\n newValue = list.get(index).merge(new $Map(newValue));\n } else if (typeof newValue !== 'string' ) {\n newValue = fromJS(newValue);\n }\n return list.set(index, newValue);\n });\n}\n\nfunction removeFromList (state, { id, key, index }) {\n state = assertId(state, id);\n state = assertList(state, id, key);\n\n return state.updateIn(id.concat([key]), (list) => list.remove(index));\n}\n\nconst inputState = (state = getInitState(), action) => {\n if (!action.id) {\n return state;\n }\n\n switch (action.type) {\n case actions.INIT:\n return init(state, action);\n case actions.SET_VALUE:\n if (actions.key != null && actions.value != null) {\n throw new Error('Missing required key / value');\n }\n return setKeyValue(state, action);\n case actions.INCREMENT_VALUE:\n return increment(state, action);\n case actions.LIST_PUSH:\n return addToList(state, action);\n case actions.LIST_POP:\n return removeFromList(state, action);\n case actions.LIST_UP:\n return updateInList(state, action);\n case actions.CLEAR:\n return clear(state, action);\n default:\n // console.log('TYPE', action.type, action);\n return state;\n }\n};\n\nexport default inputState;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/input-store.js","import { fromJS, Map as $Map } from 'immutable';\nimport { UPDATE_SETTING } from './actions';\n\n// TODO: provde a mock if localstorage does not exists?\nconst localStorage = window.localStorage || {};\nconst SETTINGS = 'settings';\n\nfunction getInitState () {\n try {\n const state = JSON.parse(localStorage.getItem(SETTINGS));\n return state ? fromJS(state) : new $Map();\n } catch (e) {\n return new $Map();\n }\n}\n\nfunction updateSetting (state, action) {\n const newState = state.updateIn([action.group, action.field], () => action.value);\n\n localStorage.setItem(SETTINGS, JSON.stringify(newState.toJSON()));\n return newState;\n}\n\nconst settingStore = (state = getInitState(), action) => {\n switch (action.type) {\n case UPDATE_SETTING:\n return updateSetting(state, action);\n default:\n return state;\n }\n};\n\nexport default settingStore;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/settings/index.js","import { List, Map as $Map } from 'immutable';\nimport { RECEIVE_STRATEGIES, REMOVE_STRATEGY, ADD_STRATEGY, UPDATE_STRATEGY } from './actions';\n\nfunction getInitState () {\n return new $Map({ list: new List() });\n}\n\nfunction removeStrategy (state, action) {\n const indexToRemove = state.get('list').indexOf(action.strategy);\n if (indexToRemove !== -1) {\n return state.update('list', (list) => list.remove(indexToRemove));\n }\n return state;\n}\n\nfunction updateStrategy (state, action) {\n return state.update('list', (list) => list.map(strategy => {\n if (strategy.name === action.strategy.name) {\n return action.strategy;\n } else {\n return strategy;\n }\n }));\n}\n\nconst strategies = (state = getInitState(), action) => {\n switch (action.type) {\n case RECEIVE_STRATEGIES:\n return state.set('list', new List(action.value));\n case REMOVE_STRATEGY:\n return removeStrategy(state, action);\n case ADD_STRATEGY:\n return state.update('list', (list) => list.push(action.strategy));\n case UPDATE_STRATEGY:\n return updateStrategy(state, action);\n default:\n return state;\n }\n};\n\nexport default strategies;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/strategy/index.js","import { Map as $Map } from 'immutable';\nimport { USER_UPDATE_USERNAME, USER_SAVE, USER_EDIT } from './actions';\n\nconst COOKIE_NAME = 'username';\n\n// Ref: http://stackoverflow.com/questions/10730362/get-cookie-by-name\nfunction readCookie () {\n const nameEQ = `${COOKIE_NAME}=`;\n const ca = document.cookie.split(';');\n for (let i = 0;i < ca.length;i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') { // eslint-disable-line eqeqeq\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return c.substring(nameEQ.length, c.length);\n }\n }\n}\n\nfunction writeCookie (userName) {\n document.cookie = `${COOKIE_NAME}=${userName}; expires=Thu, 18 Dec 2099 12:00:00 UTC`;\n}\n\n\nfunction getInitState () {\n const userName = readCookie(COOKIE_NAME);\n const showDialog = !userName;\n return new $Map({ userName, showDialog });\n}\n\nfunction updateUserName (state, action) {\n return state.set('userName', action.value);\n}\n\nfunction save (state) {\n const userName = state.get('userName');\n if (userName) {\n writeCookie(userName);\n return state.set('showDialog', false);\n } else {\n return state;\n }\n}\n\nconst settingStore = (state = getInitState(), action) => {\n switch (action.type) {\n case USER_UPDATE_USERNAME:\n return updateUserName(state, action);\n case USER_SAVE:\n return save(state);\n case USER_EDIT:\n return state.set('showDialog', true);\n default:\n return state;\n }\n};\n\nexport default settingStore;\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/user/index.js","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug.default = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n var split = (namespaces || '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/debug/src/debug.js\n// module id = 239\n// module chunks = 0","module.exports = function(opts) {\n return new ElementClass(opts)\n}\n\nfunction indexOf(arr, prop) {\n if (arr.indexOf) return arr.indexOf(prop)\n for (var i = 0, len = arr.length; i < len; i++)\n if (arr[i] === prop) return i\n return -1\n}\n\nfunction ElementClass(opts) {\n if (!(this instanceof ElementClass)) return new ElementClass(opts)\n var self = this\n if (!opts) opts = {}\n\n // similar doing instanceof HTMLElement but works in IE8\n if (opts.nodeType) opts = {el: opts}\n\n this.opts = opts\n this.el = opts.el || document.body\n if (typeof this.el !== 'object') this.el = document.querySelector(this.el)\n}\n\nElementClass.prototype.add = function(className) {\n var el = this.el\n if (!el) return\n if (el.className === \"\") return el.className = className\n var classes = el.className.split(' ')\n if (indexOf(classes, className) > -1) return classes\n classes.push(className)\n el.className = classes.join(' ')\n return classes\n}\n\nElementClass.prototype.remove = function(className) {\n var el = this.el\n if (!el) return\n if (el.className === \"\") return\n var classes = el.className.split(' ')\n var idx = indexOf(classes, className)\n if (idx > -1) classes.splice(idx, 1)\n el.className = classes.join(' ')\n return classes\n}\n\nElementClass.prototype.has = function(className) {\n var el = this.el\n if (!el) return\n var classes = el.className.split(' ')\n return indexOf(classes, className) > -1\n}\n\nElementClass.prototype.toggle = function(className) {\n var el = this.el\n if (!el) return\n if (this.has(className)) this.remove(className)\n else this.add(className)\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/element-class/index.js\n// module id = 240\n// module chunks = 0","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/exenv/index.js\n// module id = 241\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"truncate\":\"common__truncate___1HO4G\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/common/common.scss\n// module id = 243\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"path\":\"progress-styles__path___EWzvx\",\"trail\":\"progress-styles__trail___33CET\",\"text\":\"progress-styles__text___2Ny4s\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/feature/progress-styles.scss\n// module id = 244\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"container\":\"styles__container___3RbZD\",\"navigation\":\"styles__navigation___NYjO2\",\"active\":\"styles__active___2VGIV\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/component/styles.scss\n// module id = 245\n// module chunks = 0","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/camelize.js\n// module id = 246\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar camelize = require('./camelize');\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/camelizeStyleName.js\n// module id = 247\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\nvar isTextNode = require('./isTextNode');\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/containsNode.js\n// module id = 248\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar invariant = require('./invariant');\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0;\n\n !(typeof length === 'number') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0;\n\n !(length === 0 || length - 1 in obj) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0;\n\n !(typeof obj.callee !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/createArrayFromMixed.js\n// module id = 249\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar createArrayFromMixed = require('./createArrayFromMixed');\nvar getMarkupWrap = require('./getMarkupWrap');\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n * <script> element that is rendered. If no `handleScript` function is supplied,\n * an exception is thrown if any <script> elements are rendered.\n *\n * @param {string} markup A string of valid HTML markup.\n * @param {?function} handleScript Invoked once for each rendered <script>.\n * @return {array<DOMElement|DOMTextNode>} An array of rendered nodes.\n */\nfunction createNodesFromMarkup(markup, handleScript) {\n var node = dummyNode;\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup dummy not initialized') : invariant(false) : void 0;\n var nodeName = getNodeName(markup);\n\n var wrap = nodeName && getMarkupWrap(nodeName);\n if (wrap) {\n node.innerHTML = wrap[1] + markup + wrap[2];\n\n var wrapDepth = wrap[0];\n while (wrapDepth--) {\n node = node.lastChild;\n }\n } else {\n node.innerHTML = markup;\n }\n\n var scripts = node.getElementsByTagName('script');\n if (scripts.length) {\n !handleScript ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createNodesFromMarkup(...): Unexpected <script> element rendered.') : invariant(false) : void 0;\n createArrayFromMixed(scripts).forEach(handleScript);\n }\n\n var nodes = Array.from(node.childNodes);\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n return nodes;\n}\n\nmodule.exports = createNodesFromMarkup;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/createNodesFromMarkup.js\n// module id = 250\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/*eslint-disable fb-www/unsafe-html */\n\nvar ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar invariant = require('./invariant');\n\n/**\n * Dummy container used to detect which wraps are necessary.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Some browsers cannot use `innerHTML` to render certain elements standalone,\n * so we wrap them, render the wrapped nodes, then extract the desired node.\n *\n * In IE8, certain elements cannot render alone, so wrap all elements ('*').\n */\n\nvar shouldWrap = {};\n\nvar selectWrap = [1, '<select multiple=\"true\">', '</select>'];\nvar tableWrap = [1, '<table>', '</table>'];\nvar trWrap = [3, '<table><tbody><tr>', '</tr></tbody></table>'];\n\nvar svgWrap = [1, '<svg xmlns=\"http://www.w3.org/2000/svg\">', '</svg>'];\n\nvar markupWrap = {\n '*': [1, '?<div>', '</div>'],\n\n 'area': [1, '<map>', '</map>'],\n 'col': [2, '<table><tbody></tbody><colgroup>', '</colgroup></table>'],\n 'legend': [1, '<fieldset>', '</fieldset>'],\n 'param': [1, '<object>', '</object>'],\n 'tr': [2, '<table><tbody>', '</tbody></table>'],\n\n 'optgroup': selectWrap,\n 'option': selectWrap,\n\n 'caption': tableWrap,\n 'colgroup': tableWrap,\n 'tbody': tableWrap,\n 'tfoot': tableWrap,\n 'thead': tableWrap,\n\n 'td': trWrap,\n 'th': trWrap\n};\n\n// Initialize the SVG elements since we know they'll always need to be wrapped\n// consistently. If they are created inside a <div> they will be initialized in\n// the wrong namespace (and will not display).\nvar svgElements = ['circle', 'clipPath', 'defs', 'ellipse', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'text', 'tspan'];\nsvgElements.forEach(function (nodeName) {\n markupWrap[nodeName] = svgWrap;\n shouldWrap[nodeName] = true;\n});\n\n/**\n * Gets the markup wrap configuration for the supplied `nodeName`.\n *\n * NOTE: This lazily detects which wraps are necessary for the current browser.\n *\n * @param {string} nodeName Lowercase `nodeName`.\n * @return {?array} Markup wrap configuration, if applicable.\n */\nfunction getMarkupWrap(nodeName) {\n !!!dummyNode ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Markup wrapping node not initialized') : invariant(false) : void 0;\n if (!markupWrap.hasOwnProperty(nodeName)) {\n nodeName = '*';\n }\n if (!shouldWrap.hasOwnProperty(nodeName)) {\n if (nodeName === '*') {\n dummyNode.innerHTML = '<link />';\n } else {\n dummyNode.innerHTML = '<' + nodeName + '></' + nodeName + '>';\n }\n shouldWrap[nodeName] = !dummyNode.firstChild;\n }\n return shouldWrap[nodeName] ? markupWrap[nodeName] : null;\n}\n\nmodule.exports = getMarkupWrap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/getMarkupWrap.js\n// module id = 251\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\n/**\n * Gets the scroll position of the supplied element or window.\n *\n * The return values are unbounded, unlike `getScrollPosition`. This means they\n * may be negative or exceed the element boundaries (which is possible using\n * inertial scrolling).\n *\n * @param {DOMWindow|DOMElement} scrollable\n * @return {object} Map with `x` and `y` keys.\n */\n\nfunction getUnboundedScrollPosition(scrollable) {\n if (scrollable === window) {\n return {\n x: window.pageXOffset || document.documentElement.scrollLeft,\n y: window.pageYOffset || document.documentElement.scrollTop\n };\n }\n return {\n x: scrollable.scrollLeft,\n y: scrollable.scrollTop\n };\n}\n\nmodule.exports = getUnboundedScrollPosition;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/getUnboundedScrollPosition.js\n// module id = 252\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar _uppercasePattern = /([A-Z])/g;\n\n/**\n * Hyphenates a camelcased string, for example:\n *\n * > hyphenate('backgroundColor')\n * < \"background-color\"\n *\n * For CSS style names, use `hyphenateStyleName` instead which works properly\n * with all vendor prefixes, including `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenate(string) {\n return string.replace(_uppercasePattern, '-$1').toLowerCase();\n}\n\nmodule.exports = hyphenate;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/hyphenate.js\n// module id = 253\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n'use strict';\n\nvar hyphenate = require('./hyphenate');\n\nvar msPattern = /^ms-/;\n\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n * > hyphenateStyleName('backgroundColor')\n * < \"background-color\"\n * > hyphenateStyleName('MozTransition')\n * < \"-moz-transition\"\n * > hyphenateStyleName('msTransition')\n * < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction hyphenateStyleName(string) {\n return hyphenate(string).replace(msPattern, '-ms-');\n}\n\nmodule.exports = hyphenateStyleName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/hyphenateStyleName.js\n// module id = 254\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM node.\n */\nfunction isNode(object) {\n return !!(object && (typeof Node === 'function' ? object instanceof Node : typeof object === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string'));\n}\n\nmodule.exports = isNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/isNode.js\n// module id = 255\n// module chunks = 0","'use strict';\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @typechecks\n */\n\nvar isNode = require('./isNode');\n\n/**\n * @param {*} object The object to check.\n * @return {boolean} Whether or not the object is a DOM text node.\n */\nfunction isTextNode(object) {\n return isNode(object) && object.nodeType == 3;\n}\n\nmodule.exports = isTextNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/isTextNode.js\n// module id = 256\n// module chunks = 0","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n * @typechecks static-only\n */\n\n'use strict';\n\n/**\n * Memoizes the return value of a function that accepts one string argument.\n */\n\nfunction memoizeStringOnly(callback) {\n var cache = {};\n return function (string) {\n if (!cache.hasOwnProperty(string)) {\n cache[string] = callback.call(this, string);\n }\n return cache[string];\n };\n}\n\nmodule.exports = memoizeStringOnly;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/fbjs/lib/memoizeStringOnly.js\n// module id = 257\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\nvar loopAsync = exports.loopAsync = function loopAsync(turns, work, callback) {\n var currentTurn = 0,\n isDone = false;\n var isSync = false,\n hasNext = false,\n doneArgs = void 0;\n\n var done = function done() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n isDone = true;\n\n if (isSync) {\n // Iterate instead of recursing if possible.\n doneArgs = args;\n return;\n }\n\n callback.apply(undefined, args);\n };\n\n var next = function next() {\n if (isDone) return;\n\n hasNext = true;\n\n if (isSync) return; // Iterate instead of recursing if possible.\n\n isSync = true;\n\n while (!isDone && currentTurn < turns && hasNext) {\n hasNext = false;\n work(currentTurn++, next, done);\n }\n\n isSync = false;\n\n if (isDone) {\n // This means the loop finished synchronously.\n callback.apply(undefined, doneArgs);\n return;\n }\n\n if (currentTurn >= turns && hasNext) {\n isDone = true;\n callback();\n }\n };\n\n next();\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/AsyncUtils.js\n// module id = 258\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.replaceLocation = exports.pushLocation = exports.startListener = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined;\n\nvar _BrowserProtocol = require('./BrowserProtocol');\n\nObject.defineProperty(exports, 'getUserConfirmation', {\n enumerable: true,\n get: function get() {\n return _BrowserProtocol.getUserConfirmation;\n }\n});\nObject.defineProperty(exports, 'go', {\n enumerable: true,\n get: function get() {\n return _BrowserProtocol.go;\n }\n});\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _DOMStateStorage = require('./DOMStateStorage');\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar HashChangeEvent = 'hashchange';\n\nvar getHashPath = function getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n};\n\nvar pushHashPath = function pushHashPath(path) {\n return window.location.hash = path;\n};\n\nvar replaceHashPath = function replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n};\n\nvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation(pathCoder, queryKey) {\n var path = pathCoder.decodePath(getHashPath());\n var key = (0, _PathUtils.getQueryStringValueFromPath)(path, queryKey);\n\n var state = void 0;\n if (key) {\n path = (0, _PathUtils.stripQueryStringValueFromPath)(path, queryKey);\n state = (0, _DOMStateStorage.readState)(key);\n }\n\n var init = (0, _PathUtils.parsePath)(path);\n init.state = state;\n\n return (0, _LocationUtils.createLocation)(init, undefined, key);\n};\n\nvar prevLocation = void 0;\n\nvar startListener = exports.startListener = function startListener(listener, pathCoder, queryKey) {\n var handleHashChange = function handleHashChange() {\n var path = getHashPath();\n var encodedPath = pathCoder.encodePath(path);\n\n if (path !== encodedPath) {\n // Always be sure we have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var currentLocation = getCurrentLocation(pathCoder, queryKey);\n\n if (prevLocation && currentLocation.key && prevLocation.key === currentLocation.key) return; // Ignore extraneous hashchange events\n\n prevLocation = currentLocation;\n\n listener(currentLocation);\n }\n };\n\n // Ensure the hash is encoded properly.\n var path = getHashPath();\n var encodedPath = pathCoder.encodePath(path);\n\n if (path !== encodedPath) replaceHashPath(encodedPath);\n\n (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleHashChange);\n\n return function () {\n return (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleHashChange);\n };\n};\n\nvar updateLocation = function updateLocation(location, pathCoder, queryKey, updateHash) {\n var state = location.state;\n var key = location.key;\n\n\n var path = pathCoder.encodePath((0, _PathUtils.createPath)(location));\n\n if (state !== undefined) {\n path = (0, _PathUtils.addQueryStringValueToPath)(path, queryKey, key);\n (0, _DOMStateStorage.saveState)(key, state);\n }\n\n prevLocation = location;\n\n updateHash(path);\n};\n\nvar pushLocation = exports.pushLocation = function pushLocation(location, pathCoder, queryKey) {\n return updateLocation(location, pathCoder, queryKey, function (path) {\n if (getHashPath() !== path) {\n pushHashPath(path);\n } else {\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'You cannot PUSH the same path using hash history') : void 0;\n }\n });\n};\n\nvar replaceLocation = exports.replaceLocation = function replaceLocation(location, pathCoder, queryKey) {\n return updateLocation(location, pathCoder, queryKey, function (path) {\n if (getHashPath() !== path) replaceHashPath(path);\n });\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/HashProtocol.js\n// module id = 259\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.replaceLocation = exports.pushLocation = exports.getCurrentLocation = exports.go = exports.getUserConfirmation = undefined;\n\nvar _BrowserProtocol = require('./BrowserProtocol');\n\nObject.defineProperty(exports, 'getUserConfirmation', {\n enumerable: true,\n get: function get() {\n return _BrowserProtocol.getUserConfirmation;\n }\n});\nObject.defineProperty(exports, 'go', {\n enumerable: true,\n get: function get() {\n return _BrowserProtocol.go;\n }\n});\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar getCurrentLocation = exports.getCurrentLocation = function getCurrentLocation() {\n return (0, _LocationUtils.createLocation)(window.location);\n};\n\nvar pushLocation = exports.pushLocation = function pushLocation(location) {\n window.location.href = (0, _PathUtils.createPath)(location);\n return false; // Don't update location\n};\n\nvar replaceLocation = exports.replaceLocation = function replaceLocation(location) {\n window.location.replace((0, _PathUtils.createPath)(location));\n return false; // Don't update location\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/RefreshProtocol.js\n// module id = 260\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _BrowserProtocol = require('./BrowserProtocol');\n\nvar BrowserProtocol = _interopRequireWildcard(_BrowserProtocol);\n\nvar _RefreshProtocol = require('./RefreshProtocol');\n\nvar RefreshProtocol = _interopRequireWildcard(_RefreshProtocol);\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Creates and returns a history object that uses HTML5's history API\n * (pushState, replaceState, and the popstate event) to manage history.\n * This is the recommended method of managing history in browsers because\n * it provides the cleanest URLs.\n *\n * Note: In browsers that do not support the HTML5 history API full\n * page reloads will be used to preserve clean URLs. You can force this\n * behavior using { forceRefresh: true } in options.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Browser history needs a DOM') : (0, _invariant2.default)(false) : void 0;\n\n var useRefresh = options.forceRefresh || !(0, _DOMUtils.supportsHistory)();\n var Protocol = useRefresh ? RefreshProtocol : BrowserProtocol;\n\n var getUserConfirmation = Protocol.getUserConfirmation;\n var getCurrentLocation = Protocol.getCurrentLocation;\n var pushLocation = Protocol.pushLocation;\n var replaceLocation = Protocol.replaceLocation;\n var go = Protocol.go;\n\n\n var history = (0, _createHistory2.default)(_extends({\n getUserConfirmation: getUserConfirmation }, options, {\n getCurrentLocation: getCurrentLocation,\n pushLocation: pushLocation,\n replaceLocation: replaceLocation,\n go: go\n }));\n\n var listenerCount = 0,\n stopListener = void 0;\n\n var startListener = function startListener(listener, before) {\n if (++listenerCount === 1) stopListener = BrowserProtocol.startListener(history.transitionTo);\n\n var unlisten = before ? history.listenBefore(listener) : history.listen(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopListener();\n };\n };\n\n var listenBefore = function listenBefore(listener) {\n return startListener(listener, true);\n };\n\n var listen = function listen(listener) {\n return startListener(listener, false);\n };\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen\n });\n};\n\nexports.default = createBrowserHistory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/createBrowserHistory.js\n// module id = 261\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _ExecutionEnvironment = require('./ExecutionEnvironment');\n\nvar _DOMUtils = require('./DOMUtils');\n\nvar _HashProtocol = require('./HashProtocol');\n\nvar HashProtocol = _interopRequireWildcard(_HashProtocol);\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DefaultQueryKey = '_k';\n\nvar addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!' + path;\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substring(1) : path;\n }\n },\n noslash: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '/' ? path.substring(1) : path;\n },\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nvar createHashHistory = function createHashHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n !_ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Hash history needs a DOM') : (0, _invariant2.default)(false) : void 0;\n\n var queryKey = options.queryKey;\n var hashType = options.hashType;\n\n\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(queryKey !== false, 'Using { queryKey: false } no longer works. Instead, just don\\'t ' + 'use location state if you don\\'t want a key in your URL query string') : void 0;\n\n if (typeof queryKey !== 'string') queryKey = DefaultQueryKey;\n\n if (hashType == null) hashType = 'slash';\n\n if (!(hashType in HashPathCoders)) {\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'Invalid hash type: %s', hashType) : void 0;\n\n hashType = 'slash';\n }\n\n var pathCoder = HashPathCoders[hashType];\n\n var getUserConfirmation = HashProtocol.getUserConfirmation;\n\n\n var getCurrentLocation = function getCurrentLocation() {\n return HashProtocol.getCurrentLocation(pathCoder, queryKey);\n };\n\n var pushLocation = function pushLocation(location) {\n return HashProtocol.pushLocation(location, pathCoder, queryKey);\n };\n\n var replaceLocation = function replaceLocation(location) {\n return HashProtocol.replaceLocation(location, pathCoder, queryKey);\n };\n\n var history = (0, _createHistory2.default)(_extends({\n getUserConfirmation: getUserConfirmation }, options, {\n getCurrentLocation: getCurrentLocation,\n pushLocation: pushLocation,\n replaceLocation: replaceLocation,\n go: HashProtocol.go\n }));\n\n var listenerCount = 0,\n stopListener = void 0;\n\n var startListener = function startListener(listener, before) {\n if (++listenerCount === 1) stopListener = HashProtocol.startListener(history.transitionTo, pathCoder, queryKey);\n\n var unlisten = before ? history.listenBefore(listener) : history.listen(listener);\n\n return function () {\n unlisten();\n\n if (--listenerCount === 0) stopListener();\n };\n };\n\n var listenBefore = function listenBefore(listener) {\n return startListener(listener, true);\n };\n\n var listen = function listen(listener) {\n return startListener(listener, false);\n };\n\n var goIsSupportedWithoutReload = (0, _DOMUtils.supportsGoWithoutReloadUsingHash)();\n\n var go = function go(n) {\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(goIsSupportedWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n\n history.go(n);\n };\n\n var createHref = function createHref(path) {\n return '#' + pathCoder.encodePath(history.createHref(path));\n };\n\n return _extends({}, history, {\n listenBefore: listenBefore,\n listen: listen,\n go: go,\n createHref: createHref\n });\n};\n\nexports.default = createHashHistory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/createHashHistory.js\n// module id = 262\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _createHistory = require('./createHistory');\n\nvar _createHistory2 = _interopRequireDefault(_createHistory);\n\nvar _Actions = require('./Actions');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createStateStorage = function createStateStorage(entries) {\n return entries.filter(function (entry) {\n return entry.state;\n }).reduce(function (memo, entry) {\n memo[entry.key] = entry.state;\n return memo;\n }, {});\n};\n\nvar createMemoryHistory = function createMemoryHistory() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n if (Array.isArray(options)) {\n options = { entries: options };\n } else if (typeof options === 'string') {\n options = { entries: [options] };\n }\n\n var getCurrentLocation = function getCurrentLocation() {\n var entry = entries[current];\n var path = (0, _PathUtils.createPath)(entry);\n\n var key = void 0,\n state = void 0;\n if (entry.key) {\n key = entry.key;\n state = readState(key);\n }\n\n var init = (0, _PathUtils.parsePath)(path);\n\n return (0, _LocationUtils.createLocation)(_extends({}, init, { state: state }), undefined, key);\n };\n\n var canGo = function canGo(n) {\n var index = current + n;\n return index >= 0 && index < entries.length;\n };\n\n var go = function go(n) {\n if (!n) return;\n\n if (!canGo(n)) {\n process.env.NODE_ENV !== 'production' ? (0, _warning2.default)(false, 'Cannot go(%s) there is not enough history', n) : void 0;\n\n return;\n }\n\n current += n;\n var currentLocation = getCurrentLocation();\n\n // Change action to POP\n history.transitionTo(_extends({}, currentLocation, { action: _Actions.POP }));\n };\n\n var pushLocation = function pushLocation(location) {\n current += 1;\n\n if (current < entries.length) entries.splice(current);\n\n entries.push(location);\n\n saveState(location.key, location.state);\n };\n\n var replaceLocation = function replaceLocation(location) {\n entries[current] = location;\n saveState(location.key, location.state);\n };\n\n var history = (0, _createHistory2.default)(_extends({}, options, {\n getCurrentLocation: getCurrentLocation,\n pushLocation: pushLocation,\n replaceLocation: replaceLocation,\n go: go\n }));\n\n var _options = options;\n var entries = _options.entries;\n var current = _options.current;\n\n\n if (typeof entries === 'string') {\n entries = [entries];\n } else if (!Array.isArray(entries)) {\n entries = ['/'];\n }\n\n entries = entries.map(function (entry) {\n return (0, _LocationUtils.createLocation)(entry);\n });\n\n if (current == null) {\n current = entries.length - 1;\n } else {\n !(current >= 0 && current < entries.length) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'Current index must be >= 0 and < %s, was %s', entries.length, current) : (0, _invariant2.default)(false) : void 0;\n }\n\n var storage = createStateStorage(entries);\n\n var saveState = function saveState(key, state) {\n return storage[key] = state;\n };\n\n var readState = function readState(key) {\n return storage[key];\n };\n\n return _extends({}, history, {\n canGo: canGo\n });\n};\n\nexports.default = createMemoryHistory;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/history/lib/createMemoryHistory.js\n// module id = 263\n// module chunks = 0","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are **not** supported.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = isEqual;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash.isequal/index.js\n// module id = 264\n// module chunks = 0","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n value = Object(value);\n return (symToStringTag && symToStringTag in value)\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_baseGetTag.js\n// module id = 265\n// module chunks = 0","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_freeGlobal.js\n// module id = 266\n// module chunks = 0","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getPrototype.js\n// module id = 267\n// module chunks = 0","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_getRawTag.js\n// module id = 268\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_objectToString.js\n// module id = 269\n// module chunks = 0","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_overArg.js\n// module id = 270\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/_root.js\n// module id = 271\n// module chunks = 0","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/isObjectLike.js\n// module id = 272\n// module chunks = 0","/**\n * Helpers.\n */\n\nvar s = 1000\nvar m = s * 60\nvar h = m * 60\nvar d = h * 24\nvar y = d * 365.25\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} options\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {}\n var type = typeof val\n if (type === 'string' && val.length > 0) {\n return parse(val)\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ?\n\t\t\tfmtLong(val) :\n\t\t\tfmtShort(val)\n }\n throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val))\n}\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str)\n if (str.length > 10000) {\n return\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str)\n if (!match) {\n return\n }\n var n = parseFloat(match[1])\n var type = (match[2] || 'ms').toLowerCase()\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y\n case 'days':\n case 'day':\n case 'd':\n return n * d\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n\n default:\n return undefined\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd'\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h'\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm'\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's'\n }\n return ms + 'ms'\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms'\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name\n }\n return Math.ceil(ms / n) + ' ' + name + 's'\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ms/index.js\n// module id = 273\n// module chunks = 0","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nexports.extract = function (str) {\n\treturn str.split('?')[1] || '';\n};\n\nexports.parse = function (str) {\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^(\\?|#|&)/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\tkey = decodeURIComponent(key);\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeURIComponent(val);\n\n\t\tif (ret[key] === undefined) {\n\t\t\tret[key] = val;\n\t\t} else if (Array.isArray(ret[key])) {\n\t\t\tret[key].push(val);\n\t\t} else {\n\t\t\tret[key] = [ret[key], val];\n\t\t}\n\t});\n\n\treturn ret;\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (val2 === null) {\n\t\t\t\t\tresult.push(encode(key, opts));\n\t\t\t\t} else {\n\t\t\t\t\tresult.push(encode(key, opts) + '=' + encode(val2, opts));\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/query-string/index.js\n// module id = 274\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = {\n Properties: {\n // Global States and Properties\n 'aria-current': 0, // state\n 'aria-details': 0,\n 'aria-disabled': 0, // state\n 'aria-hidden': 0, // state\n 'aria-invalid': 0, // state\n 'aria-keyshortcuts': 0,\n 'aria-label': 0,\n 'aria-roledescription': 0,\n // Widget Attributes\n 'aria-autocomplete': 0,\n 'aria-checked': 0,\n 'aria-expanded': 0,\n 'aria-haspopup': 0,\n 'aria-level': 0,\n 'aria-modal': 0,\n 'aria-multiline': 0,\n 'aria-multiselectable': 0,\n 'aria-orientation': 0,\n 'aria-placeholder': 0,\n 'aria-pressed': 0,\n 'aria-readonly': 0,\n 'aria-required': 0,\n 'aria-selected': 0,\n 'aria-sort': 0,\n 'aria-valuemax': 0,\n 'aria-valuemin': 0,\n 'aria-valuenow': 0,\n 'aria-valuetext': 0,\n // Live Region Attributes\n 'aria-atomic': 0,\n 'aria-busy': 0,\n 'aria-live': 0,\n 'aria-relevant': 0,\n // Drag-and-Drop Attributes\n 'aria-dropeffect': 0,\n 'aria-grabbed': 0,\n // Relationship Attributes\n 'aria-activedescendant': 0,\n 'aria-colcount': 0,\n 'aria-colindex': 0,\n 'aria-colspan': 0,\n 'aria-controls': 0,\n 'aria-describedby': 0,\n 'aria-errormessage': 0,\n 'aria-flowto': 0,\n 'aria-labelledby': 0,\n 'aria-owns': 0,\n 'aria-posinset': 0,\n 'aria-rowcount': 0,\n 'aria-rowindex': 0,\n 'aria-rowspan': 0,\n 'aria-setsize': 0\n },\n DOMAttributeNames: {},\n DOMPropertyNames: {}\n};\n\nmodule.exports = ARIADOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ARIADOMPropertyConfig.js\n// module id = 275\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar focusNode = require('fbjs/lib/focusNode');\n\nvar AutoFocusUtils = {\n focusDOMComponent: function () {\n focusNode(ReactDOMComponentTree.getNodeFromInstance(this));\n }\n};\n\nmodule.exports = AutoFocusUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/AutoFocusUtils.js\n// module id = 276\n// module chunks = 0","/**\n * Copyright 2013-present Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar FallbackCompositionState = require('./FallbackCompositionState');\nvar SyntheticCompositionEvent = require('./SyntheticCompositionEvent');\nvar SyntheticInputEvent = require('./SyntheticInputEvent');\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\nvar START_KEYCODE = 229;\n\nvar canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window;\n\nvar documentMode = null;\nif (ExecutionEnvironment.canUseDOM && 'documentMode' in document) {\n documentMode = document.documentMode;\n}\n\n// Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\nvar canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto();\n\n// In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\nvar useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\n\n/**\n * Opera <= 12 includes TextEvent in window, but does not fire\n * text input events. Rely on keypress instead.\n */\nfunction isPresto() {\n var opera = window.opera;\n return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12;\n}\n\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\n// Events and their corresponding property names.\nvar eventTypes = {\n beforeInput: {\n phasedRegistrationNames: {\n bubbled: 'onBeforeInput',\n captured: 'onBeforeInputCapture'\n },\n dependencies: ['topCompositionEnd', 'topKeyPress', 'topTextInput', 'topPaste']\n },\n compositionEnd: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionEnd',\n captured: 'onCompositionEndCapture'\n },\n dependencies: ['topBlur', 'topCompositionEnd', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionStart: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionStart',\n captured: 'onCompositionStartCapture'\n },\n dependencies: ['topBlur', 'topCompositionStart', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n },\n compositionUpdate: {\n phasedRegistrationNames: {\n bubbled: 'onCompositionUpdate',\n captured: 'onCompositionUpdateCapture'\n },\n dependencies: ['topBlur', 'topCompositionUpdate', 'topKeyDown', 'topKeyPress', 'topKeyUp', 'topMouseDown']\n }\n};\n\n// Track whether we've ever handled a keypress on the space key.\nvar hasSpaceKeypress = false;\n\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\nfunction isKeypressCommand(nativeEvent) {\n return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) &&\n // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n\n/**\n * Translate native top level events into event types.\n *\n * @param {string} topLevelType\n * @return {object}\n */\nfunction getCompositionEventType(topLevelType) {\n switch (topLevelType) {\n case 'topCompositionStart':\n return eventTypes.compositionStart;\n case 'topCompositionEnd':\n return eventTypes.compositionEnd;\n case 'topCompositionUpdate':\n return eventTypes.compositionUpdate;\n }\n}\n\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionStart(topLevelType, nativeEvent) {\n return topLevelType === 'topKeyDown' && nativeEvent.keyCode === START_KEYCODE;\n}\n\n/**\n * Does our fallback mode think that this event is the end of composition?\n *\n * @param {string} topLevelType\n * @param {object} nativeEvent\n * @return {boolean}\n */\nfunction isFallbackCompositionEnd(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topKeyUp':\n // Command keys insert or clear IME input.\n return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n case 'topKeyDown':\n // Expect IME keyCode on each keydown. If we get any other\n // code we must have exited earlier.\n return nativeEvent.keyCode !== START_KEYCODE;\n case 'topKeyPress':\n case 'topMouseDown':\n case 'topBlur':\n // Events are not possible without cancelling IME.\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\nfunction getDataFromCustomEvent(nativeEvent) {\n var detail = nativeEvent.detail;\n if (typeof detail === 'object' && 'data' in detail) {\n return detail.data;\n }\n return null;\n}\n\n// Track the current IME composition fallback object, if any.\nvar currentComposition = null;\n\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\nfunction extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var eventType;\n var fallbackData;\n\n if (canUseCompositionEvent) {\n eventType = getCompositionEventType(topLevelType);\n } else if (!currentComposition) {\n if (isFallbackCompositionStart(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionStart;\n }\n } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n eventType = eventTypes.compositionEnd;\n }\n\n if (!eventType) {\n return null;\n }\n\n if (useFallbackCompositionData) {\n // The current composition is stored statically and must not be\n // overwritten while composition continues.\n if (!currentComposition && eventType === eventTypes.compositionStart) {\n currentComposition = FallbackCompositionState.getPooled(nativeEventTarget);\n } else if (eventType === eventTypes.compositionEnd) {\n if (currentComposition) {\n fallbackData = currentComposition.getData();\n }\n }\n }\n\n var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);\n\n if (fallbackData) {\n // Inject data generated from fallback path into the synthetic event.\n // This matches the property of native CompositionEventInterface.\n event.data = fallbackData;\n } else {\n var customData = getDataFromCustomEvent(nativeEvent);\n if (customData !== null) {\n event.data = customData;\n }\n }\n\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The string corresponding to this `beforeInput` event.\n */\nfunction getNativeBeforeInputChars(topLevelType, nativeEvent) {\n switch (topLevelType) {\n case 'topCompositionEnd':\n return getDataFromCustomEvent(nativeEvent);\n case 'topKeyPress':\n /**\n * If native `textInput` events are available, our goal is to make\n * use of them. However, there is a special case: the spacebar key.\n * In Webkit, preventing default on a spacebar `textInput` event\n * cancels character insertion, but it *also* causes the browser\n * to fall back to its default spacebar behavior of scrolling the\n * page.\n *\n * Tracking at:\n * https://code.google.com/p/chromium/issues/detail?id=355103\n *\n * To avoid this issue, use the keypress event as if no `textInput`\n * event is available.\n */\n var which = nativeEvent.which;\n if (which !== SPACEBAR_CODE) {\n return null;\n }\n\n hasSpaceKeypress = true;\n return SPACEBAR_CHAR;\n\n case 'topTextInput':\n // Record the characters to be added to the DOM.\n var chars = nativeEvent.data;\n\n // If it's a spacebar character, assume that we have already handled\n // it at the keypress level and bail immediately. Android Chrome\n // doesn't give us keycodes, so we need to blacklist it.\n if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n return null;\n }\n\n return chars;\n\n default:\n // For other native event types, do nothing.\n return null;\n }\n}\n\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {object} nativeEvent Native browser event.\n * @return {?string} The fallback string for this `beforeInput` event.\n */\nfunction getFallbackBeforeInputChars(topLevelType, nativeEvent) {\n // If we are currently composing (IME) and using a fallback to do so,\n // try to extract the composed characters from the fallback object.\n // If composition event is available, we extract a string only at\n // compositionevent, otherwise extract it at fallback events.\n if (currentComposition) {\n if (topLevelType === 'topCompositionEnd' || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {\n var chars = currentComposition.getData();\n FallbackCompositionState.release(currentComposition);\n currentComposition = null;\n return chars;\n }\n return null;\n }\n\n switch (topLevelType) {\n case 'topPaste':\n // If a paste event occurs after a keypress, throw out the input\n // chars. Paste events should not lead to BeforeInput events.\n return null;\n case 'topKeyPress':\n /**\n * As of v27, Firefox may fire keypress events even when no character\n * will be inserted. A few possibilities:\n *\n * - `which` is `0`. Arrow keys, Esc key, etc.\n *\n * - `which` is the pressed key code, but no char is available.\n * Ex: 'AltGr + d` in Polish. There is no modified character for\n * this key combination and no character is inserted into the\n * document, but FF fires the keypress for char code `100` anyway.\n * No `input` event will occur.\n *\n * - `which` is the pressed key code, but a command combination is\n * being used. Ex: `Cmd+C`. No character is inserted, and no\n * `input` event will occur.\n */\n if (nativeEvent.which && !isKeypressCommand(nativeEvent)) {\n return String.fromCharCode(nativeEvent.which);\n }\n return null;\n case 'topCompositionEnd':\n return useFallbackCompositionData ? null : nativeEvent.data;\n default:\n return null;\n }\n}\n\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\nfunction extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var chars;\n\n if (canUseTextInputEvent) {\n chars = getNativeBeforeInputChars(topLevelType, nativeEvent);\n } else {\n chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);\n }\n\n // If no characters are being inserted, no BeforeInput event should\n // be fired.\n if (!chars) {\n return null;\n }\n\n var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);\n\n event.data = chars;\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n}\n\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\nvar BeforeInputEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n return [extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget), extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget)];\n }\n};\n\nmodule.exports = BeforeInputEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/BeforeInputEventPlugin.js\n// module id = 277\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar camelizeStyleName = require('fbjs/lib/camelizeStyleName');\nvar dangerousStyleValue = require('./dangerousStyleValue');\nvar hyphenateStyleName = require('fbjs/lib/hyphenateStyleName');\nvar memoizeStringOnly = require('fbjs/lib/memoizeStringOnly');\nvar warning = require('fbjs/lib/warning');\n\nvar processStyleName = memoizeStringOnly(function (styleName) {\n return hyphenateStyleName(styleName);\n});\n\nvar hasShorthandPropertyBug = false;\nvar styleFloatAccessor = 'cssFloat';\nif (ExecutionEnvironment.canUseDOM) {\n var tempStyle = document.createElement('div').style;\n try {\n // IE8 throws \"Invalid argument.\" if resetting shorthand style properties.\n tempStyle.font = '';\n } catch (e) {\n hasShorthandPropertyBug = true;\n }\n // IE8 only supports accessing cssFloat (standard) as styleFloat\n if (document.documentElement.style.cssFloat === undefined) {\n styleFloatAccessor = 'styleFloat';\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n // 'msTransform' is correct, but the other prefixes should be capitalized\n var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n\n // style values shouldn't contain a semicolon\n var badStyleValueWithSemicolonPattern = /;\\s*$/;\n\n var warnedStyleNames = {};\n var warnedStyleValues = {};\n var warnedForNaNValue = false;\n\n var warnHyphenatedStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName(name), checkRenderMessage(owner)) : void 0;\n };\n\n var warnBadVendoredStyleName = function (name, owner) {\n if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n return;\n }\n\n warnedStyleNames[name] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), checkRenderMessage(owner)) : void 0;\n };\n\n var warnStyleValueWithSemicolon = function (name, value, owner) {\n if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n return;\n }\n\n warnedStyleValues[value] = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Style property values shouldn\\'t contain a semicolon.%s ' + 'Try \"%s: %s\" instead.', checkRenderMessage(owner), name, value.replace(badStyleValueWithSemicolonPattern, '')) : void 0;\n };\n\n var warnStyleValueIsNaN = function (name, value, owner) {\n if (warnedForNaNValue) {\n return;\n }\n\n warnedForNaNValue = true;\n process.env.NODE_ENV !== 'production' ? warning(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, checkRenderMessage(owner)) : void 0;\n };\n\n var checkRenderMessage = function (owner) {\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' Check the render method of `' + name + '`.';\n }\n }\n return '';\n };\n\n /**\n * @param {string} name\n * @param {*} value\n * @param {ReactDOMComponent} component\n */\n var warnValidStyle = function (name, value, component) {\n var owner;\n if (component) {\n owner = component._currentElement._owner;\n }\n if (name.indexOf('-') > -1) {\n warnHyphenatedStyleName(name, owner);\n } else if (badVendoredStyleNamePattern.test(name)) {\n warnBadVendoredStyleName(name, owner);\n } else if (badStyleValueWithSemicolonPattern.test(value)) {\n warnStyleValueWithSemicolon(name, value, owner);\n }\n\n if (typeof value === 'number' && isNaN(value)) {\n warnStyleValueIsNaN(name, value, owner);\n }\n };\n}\n\n/**\n * Operations for dealing with CSS properties.\n */\nvar CSSPropertyOperations = {\n\n /**\n * Serializes a mapping of style properties for use as inline styles:\n *\n * > createMarkupForStyles({width: '200px', height: 0})\n * \"width:200px;height:0;\"\n *\n * Undefined values are ignored so that declarative programming is easier.\n * The result should be HTML-escaped before insertion into the DOM.\n *\n * @param {object} styles\n * @param {ReactDOMComponent} component\n * @return {?string}\n */\n createMarkupForStyles: function (styles, component) {\n var serialized = '';\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n var styleValue = styles[styleName];\n if (process.env.NODE_ENV !== 'production') {\n warnValidStyle(styleName, styleValue, component);\n }\n if (styleValue != null) {\n serialized += processStyleName(styleName) + ':';\n serialized += dangerousStyleValue(styleName, styleValue, component) + ';';\n }\n }\n return serialized || null;\n },\n\n /**\n * Sets the value for multiple styles on a node. If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n * @param {ReactDOMComponent} component\n */\n setValueForStyles: function (node, styles, component) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onHostOperation({\n instanceID: component._debugID,\n type: 'update styles',\n payload: styles\n });\n }\n\n var style = node.style;\n for (var styleName in styles) {\n if (!styles.hasOwnProperty(styleName)) {\n continue;\n }\n if (process.env.NODE_ENV !== 'production') {\n warnValidStyle(styleName, styles[styleName], component);\n }\n var styleValue = dangerousStyleValue(styleName, styles[styleName], component);\n if (styleName === 'float' || styleName === 'cssFloat') {\n styleName = styleFloatAccessor;\n }\n if (styleValue) {\n style[styleName] = styleValue;\n } else {\n var expansion = hasShorthandPropertyBug && CSSProperty.shorthandPropertyExpansions[styleName];\n if (expansion) {\n // Shorthand property that IE8 won't like unsetting, so unset each\n // component to placate it\n for (var individualStyleName in expansion) {\n style[individualStyleName] = '';\n }\n } else {\n style[styleName] = '';\n }\n }\n }\n }\n\n};\n\nmodule.exports = CSSPropertyOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/CSSPropertyOperations.js\n// module id = 278\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getEventTarget = require('./getEventTarget');\nvar isEventSupported = require('./isEventSupported');\nvar isTextInputElement = require('./isTextInputElement');\n\nvar eventTypes = {\n change: {\n phasedRegistrationNames: {\n bubbled: 'onChange',\n captured: 'onChangeCapture'\n },\n dependencies: ['topBlur', 'topChange', 'topClick', 'topFocus', 'topInput', 'topKeyDown', 'topKeyUp', 'topSelectionChange']\n }\n};\n\n/**\n * For IE shims\n */\nvar activeElement = null;\nvar activeElementInst = null;\nvar activeElementValue = null;\nvar activeElementValueProp = null;\n\n/**\n * SECTION: handle `change` event\n */\nfunction shouldUseChangeEvent(elem) {\n var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nvar doesChangeEventBubble = false;\nif (ExecutionEnvironment.canUseDOM) {\n // See `handleChange` comment below\n doesChangeEventBubble = isEventSupported('change') && (!document.documentMode || document.documentMode > 8);\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n var event = SyntheticEvent.getPooled(eventTypes.change, activeElementInst, nativeEvent, getEventTarget(nativeEvent));\n EventPropagators.accumulateTwoPhaseDispatches(event);\n\n // If change and propertychange bubbled, we'd just bind to it like all the\n // other events and have it go through ReactBrowserEventEmitter. Since it\n // doesn't, we manually listen for the events and so we have to enqueue and\n // process the abstract event manually.\n //\n // Batching is necessary here in order to ensure that all event handlers run\n // before the next rerender (including event handlers attached to ancestor\n // elements instead of directly on the input). Without this, controlled\n // components don't work properly in conjunction with event bubbling because\n // the component is rerendered and the value reverted before all the event\n // handlers can run. See https://github.com/facebook/react/issues/708.\n ReactUpdates.batchedUpdates(runEventInBatch, event);\n}\n\nfunction runEventInBatch(event) {\n EventPluginHub.enqueueEvents(event);\n EventPluginHub.processEventQueue(false);\n}\n\nfunction startWatchingForChangeEventIE8(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElement.attachEvent('onchange', manualDispatchChangeEvent);\n}\n\nfunction stopWatchingForChangeEventIE8() {\n if (!activeElement) {\n return;\n }\n activeElement.detachEvent('onchange', manualDispatchChangeEvent);\n activeElement = null;\n activeElementInst = null;\n}\n\nfunction getTargetInstForChangeEvent(topLevelType, targetInst) {\n if (topLevelType === 'topChange') {\n return targetInst;\n }\n}\nfunction handleEventsForChangeEventIE8(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForChangeEventIE8();\n startWatchingForChangeEventIE8(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForChangeEventIE8();\n }\n}\n\n/**\n * SECTION: handle `input` event\n */\nvar isInputEventSupported = false;\nif (ExecutionEnvironment.canUseDOM) {\n // IE9 claims to support the input event but fails to trigger it when\n // deleting text, so we ignore its input events.\n // IE10+ fire input events to often, such when a placeholder\n // changes or when an input with a placeholder is focused.\n isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 11);\n}\n\n/**\n * (For IE <=11) Replacement getter/setter for the `value` property that gets\n * set on the active element.\n */\nvar newValueProp = {\n get: function () {\n return activeElementValueProp.get.call(this);\n },\n set: function (val) {\n // Cast to a string so we can do equality checks.\n activeElementValue = '' + val;\n activeElementValueProp.set.call(this, val);\n }\n};\n\n/**\n * (For IE <=11) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\nfunction startWatchingForValueChange(target, targetInst) {\n activeElement = target;\n activeElementInst = targetInst;\n activeElementValue = target.value;\n activeElementValueProp = Object.getOwnPropertyDescriptor(target.constructor.prototype, 'value');\n\n // Not guarded in a canDefineProperty check: IE8 supports defineProperty only\n // on DOM elements\n Object.defineProperty(activeElement, 'value', newValueProp);\n if (activeElement.attachEvent) {\n activeElement.attachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.addEventListener('propertychange', handlePropertyChange, false);\n }\n}\n\n/**\n * (For IE <=11) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\nfunction stopWatchingForValueChange() {\n if (!activeElement) {\n return;\n }\n\n // delete restores the original property definition\n delete activeElement.value;\n\n if (activeElement.detachEvent) {\n activeElement.detachEvent('onpropertychange', handlePropertyChange);\n } else {\n activeElement.removeEventListener('propertychange', handlePropertyChange, false);\n }\n\n activeElement = null;\n activeElementInst = null;\n activeElementValue = null;\n activeElementValueProp = null;\n}\n\n/**\n * (For IE <=11) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\nfunction handlePropertyChange(nativeEvent) {\n if (nativeEvent.propertyName !== 'value') {\n return;\n }\n var value = nativeEvent.srcElement.value;\n if (value === activeElementValue) {\n return;\n }\n activeElementValue = value;\n\n manualDispatchChangeEvent(nativeEvent);\n}\n\n/**\n * If a `change` event should be fired, returns the target's ID.\n */\nfunction getTargetInstForInputEvent(topLevelType, targetInst) {\n if (topLevelType === 'topInput') {\n // In modern browsers (i.e., not IE8 or IE9), the input event is exactly\n // what we want so fall through here and trigger an abstract event\n return targetInst;\n }\n}\n\nfunction handleEventsForInputEventIE(topLevelType, target, targetInst) {\n if (topLevelType === 'topFocus') {\n // In IE8, we can capture almost all .value changes by adding a\n // propertychange handler and looking for events with propertyName\n // equal to 'value'\n // In IE9-11, propertychange fires for most input events but is buggy and\n // doesn't fire when text is deleted, but conveniently, selectionchange\n // appears to fire in all of the remaining cases so we catch those and\n // forward the event if the value has changed\n // In either case, we don't want to call the event handler if the value\n // is changed from JS so we redefine a setter for `.value` that updates\n // our activeElementValue variable, allowing us to ignore those changes\n //\n // stopWatching() should be a noop here but we call it just in case we\n // missed a blur event somehow.\n stopWatchingForValueChange();\n startWatchingForValueChange(target, targetInst);\n } else if (topLevelType === 'topBlur') {\n stopWatchingForValueChange();\n }\n}\n\n// For IE8 and IE9.\nfunction getTargetInstForInputEventIE(topLevelType, targetInst) {\n if (topLevelType === 'topSelectionChange' || topLevelType === 'topKeyUp' || topLevelType === 'topKeyDown') {\n // On the selectionchange event, the target is just document which isn't\n // helpful for us so just check activeElement instead.\n //\n // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n // propertychange on the first input event after setting `value` from a\n // script and fires only keydown, keypress, keyup. Catching keyup usually\n // gets it and catching keydown lets us fire an event for the first\n // keystroke if user does a key repeat (it'll be a little delayed: right\n // before the second keystroke). Other input methods (e.g., paste) seem to\n // fire selectionchange normally.\n if (activeElement && activeElement.value !== activeElementValue) {\n activeElementValue = activeElement.value;\n return activeElementInst;\n }\n }\n}\n\n/**\n * SECTION: handle `click` event\n */\nfunction shouldUseClickEvent(elem) {\n // Use the `click` event to detect changes to checkbox and radio inputs.\n // This approach works across all browsers, whereas `change` does not fire\n // until `blur` in IE8.\n return elem.nodeName && elem.nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(topLevelType, targetInst) {\n if (topLevelType === 'topClick') {\n return targetInst;\n }\n}\n\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\nvar ChangeEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n var getTargetInstFunc, handleEventFunc;\n if (shouldUseChangeEvent(targetNode)) {\n if (doesChangeEventBubble) {\n getTargetInstFunc = getTargetInstForChangeEvent;\n } else {\n handleEventFunc = handleEventsForChangeEventIE8;\n }\n } else if (isTextInputElement(targetNode)) {\n if (isInputEventSupported) {\n getTargetInstFunc = getTargetInstForInputEvent;\n } else {\n getTargetInstFunc = getTargetInstForInputEventIE;\n handleEventFunc = handleEventsForInputEventIE;\n }\n } else if (shouldUseClickEvent(targetNode)) {\n getTargetInstFunc = getTargetInstForClickEvent;\n }\n\n if (getTargetInstFunc) {\n var inst = getTargetInstFunc(topLevelType, targetInst);\n if (inst) {\n var event = SyntheticEvent.getPooled(eventTypes.change, inst, nativeEvent, nativeEventTarget);\n event.type = 'change';\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n }\n }\n\n if (handleEventFunc) {\n handleEventFunc(topLevelType, targetNode, targetInst);\n }\n }\n\n};\n\nmodule.exports = ChangeEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ChangeEventPlugin.js\n// module id = 279\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar createNodesFromMarkup = require('fbjs/lib/createNodesFromMarkup');\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\n\nvar Danger = {\n\n /**\n * Replaces a node with a string of markup at its current position within its\n * parent. The markup must render into a single root node.\n *\n * @param {DOMElement} oldChild Child node to replace.\n * @param {string} markup Markup to render in place of the child node.\n * @internal\n */\n dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {\n !ExecutionEnvironment.canUseDOM ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;\n !markup ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;\n !(oldChild.nodeName !== 'HTML') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the <html> node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;\n\n if (typeof markup === 'string') {\n var newChild = createNodesFromMarkup(markup, emptyFunction)[0];\n oldChild.parentNode.replaceChild(newChild, oldChild);\n } else {\n DOMLazyTree.replaceChildWithTree(oldChild, markup);\n }\n }\n\n};\n\nmodule.exports = Danger;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/Danger.js\n// module id = 280\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Module that is injectable into `EventPluginHub`, that specifies a\n * deterministic ordering of `EventPlugin`s. A convenient way to reason about\n * plugins, without having to package every one of them. This is better than\n * having plugins be ordered in the same order that they are injected because\n * that ordering would be influenced by the packaging order.\n * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that\n * preventing default on events is convenient in `SimpleEventPlugin` handlers.\n */\n\nvar DefaultEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'TapEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];\n\nmodule.exports = DefaultEventPluginOrder;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/DefaultEventPluginOrder.js\n// module id = 281\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\nvar eventTypes = {\n mouseEnter: {\n registrationName: 'onMouseEnter',\n dependencies: ['topMouseOut', 'topMouseOver']\n },\n mouseLeave: {\n registrationName: 'onMouseLeave',\n dependencies: ['topMouseOut', 'topMouseOver']\n }\n};\n\nvar EnterLeaveEventPlugin = {\n\n eventTypes: eventTypes,\n\n /**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (topLevelType === 'topMouseOver' && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {\n return null;\n }\n if (topLevelType !== 'topMouseOut' && topLevelType !== 'topMouseOver') {\n // Must not be a mouse in or mouse out - ignoring.\n return null;\n }\n\n var win;\n if (nativeEventTarget.window === nativeEventTarget) {\n // `nativeEventTarget` is probably a window object.\n win = nativeEventTarget;\n } else {\n // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n var doc = nativeEventTarget.ownerDocument;\n if (doc) {\n win = doc.defaultView || doc.parentWindow;\n } else {\n win = window;\n }\n }\n\n var from;\n var to;\n if (topLevelType === 'topMouseOut') {\n from = targetInst;\n var related = nativeEvent.relatedTarget || nativeEvent.toElement;\n to = related ? ReactDOMComponentTree.getClosestInstanceFromNode(related) : null;\n } else {\n // Moving to a node from outside the window.\n from = null;\n to = targetInst;\n }\n\n if (from === to) {\n // Nothing pertains to our managed components.\n return null;\n }\n\n var fromNode = from == null ? win : ReactDOMComponentTree.getNodeFromInstance(from);\n var toNode = to == null ? win : ReactDOMComponentTree.getNodeFromInstance(to);\n\n var leave = SyntheticMouseEvent.getPooled(eventTypes.mouseLeave, from, nativeEvent, nativeEventTarget);\n leave.type = 'mouseleave';\n leave.target = fromNode;\n leave.relatedTarget = toNode;\n\n var enter = SyntheticMouseEvent.getPooled(eventTypes.mouseEnter, to, nativeEvent, nativeEventTarget);\n enter.type = 'mouseenter';\n enter.target = toNode;\n enter.relatedTarget = fromNode;\n\n EventPropagators.accumulateEnterLeaveDispatches(leave, enter, from, to);\n\n return [leave, enter];\n }\n\n};\n\nmodule.exports = EnterLeaveEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/EnterLeaveEventPlugin.js\n// module id = 282\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\n\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * This helper class stores information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n * @param {DOMEventTarget} root\n */\nfunction FallbackCompositionState(root) {\n this._root = root;\n this._startText = this.getText();\n this._fallbackText = null;\n}\n\n_assign(FallbackCompositionState.prototype, {\n destructor: function () {\n this._root = null;\n this._startText = null;\n this._fallbackText = null;\n },\n\n /**\n * Get current text of input.\n *\n * @return {string}\n */\n getText: function () {\n if ('value' in this._root) {\n return this._root.value;\n }\n return this._root[getTextContentAccessor()];\n },\n\n /**\n * Determine the differing substring between the initially stored\n * text content and the current content.\n *\n * @return {string}\n */\n getData: function () {\n if (this._fallbackText) {\n return this._fallbackText;\n }\n\n var start;\n var startValue = this._startText;\n var startLength = startValue.length;\n var end;\n var endValue = this.getText();\n var endLength = endValue.length;\n\n for (start = 0; start < startLength; start++) {\n if (startValue[start] !== endValue[start]) {\n break;\n }\n }\n\n var minEnd = startLength - start;\n for (end = 1; end <= minEnd; end++) {\n if (startValue[startLength - end] !== endValue[endLength - end]) {\n break;\n }\n }\n\n var sliceTail = end > 1 ? 1 - end : undefined;\n this._fallbackText = endValue.slice(start, sliceTail);\n return this._fallbackText;\n }\n});\n\nPooledClass.addPoolingTo(FallbackCompositionState);\n\nmodule.exports = FallbackCompositionState;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/FallbackCompositionState.js\n// module id = 283\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\n\nvar MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;\nvar HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;\nvar HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;\nvar HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;\nvar HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;\n\nvar HTMLDOMPropertyConfig = {\n isCustomAttribute: RegExp.prototype.test.bind(new RegExp('^(data|aria)-[' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$')),\n Properties: {\n /**\n * Standard Properties\n */\n accept: 0,\n acceptCharset: 0,\n accessKey: 0,\n action: 0,\n allowFullScreen: HAS_BOOLEAN_VALUE,\n allowTransparency: 0,\n alt: 0,\n // specifies target context for links with `preload` type\n as: 0,\n async: HAS_BOOLEAN_VALUE,\n autoComplete: 0,\n // autoFocus is polyfilled/normalized by AutoFocusUtils\n // autoFocus: HAS_BOOLEAN_VALUE,\n autoPlay: HAS_BOOLEAN_VALUE,\n capture: HAS_BOOLEAN_VALUE,\n cellPadding: 0,\n cellSpacing: 0,\n charSet: 0,\n challenge: 0,\n checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n cite: 0,\n classID: 0,\n className: 0,\n cols: HAS_POSITIVE_NUMERIC_VALUE,\n colSpan: 0,\n content: 0,\n contentEditable: 0,\n contextMenu: 0,\n controls: HAS_BOOLEAN_VALUE,\n coords: 0,\n crossOrigin: 0,\n data: 0, // For `<object />` acts as `src`.\n dateTime: 0,\n 'default': HAS_BOOLEAN_VALUE,\n defer: HAS_BOOLEAN_VALUE,\n dir: 0,\n disabled: HAS_BOOLEAN_VALUE,\n download: HAS_OVERLOADED_BOOLEAN_VALUE,\n draggable: 0,\n encType: 0,\n form: 0,\n formAction: 0,\n formEncType: 0,\n formMethod: 0,\n formNoValidate: HAS_BOOLEAN_VALUE,\n formTarget: 0,\n frameBorder: 0,\n headers: 0,\n height: 0,\n hidden: HAS_BOOLEAN_VALUE,\n high: 0,\n href: 0,\n hrefLang: 0,\n htmlFor: 0,\n httpEquiv: 0,\n icon: 0,\n id: 0,\n inputMode: 0,\n integrity: 0,\n is: 0,\n keyParams: 0,\n keyType: 0,\n kind: 0,\n label: 0,\n lang: 0,\n list: 0,\n loop: HAS_BOOLEAN_VALUE,\n low: 0,\n manifest: 0,\n marginHeight: 0,\n marginWidth: 0,\n max: 0,\n maxLength: 0,\n media: 0,\n mediaGroup: 0,\n method: 0,\n min: 0,\n minLength: 0,\n // Caution; `option.selected` is not updated if `select.multiple` is\n // disabled with `removeAttribute`.\n multiple: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n muted: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n name: 0,\n nonce: 0,\n noValidate: HAS_BOOLEAN_VALUE,\n open: HAS_BOOLEAN_VALUE,\n optimum: 0,\n pattern: 0,\n placeholder: 0,\n playsInline: HAS_BOOLEAN_VALUE,\n poster: 0,\n preload: 0,\n profile: 0,\n radioGroup: 0,\n readOnly: HAS_BOOLEAN_VALUE,\n referrerPolicy: 0,\n rel: 0,\n required: HAS_BOOLEAN_VALUE,\n reversed: HAS_BOOLEAN_VALUE,\n role: 0,\n rows: HAS_POSITIVE_NUMERIC_VALUE,\n rowSpan: HAS_NUMERIC_VALUE,\n sandbox: 0,\n scope: 0,\n scoped: HAS_BOOLEAN_VALUE,\n scrolling: 0,\n seamless: HAS_BOOLEAN_VALUE,\n selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,\n shape: 0,\n size: HAS_POSITIVE_NUMERIC_VALUE,\n sizes: 0,\n span: HAS_POSITIVE_NUMERIC_VALUE,\n spellCheck: 0,\n src: 0,\n srcDoc: 0,\n srcLang: 0,\n srcSet: 0,\n start: HAS_NUMERIC_VALUE,\n step: 0,\n style: 0,\n summary: 0,\n tabIndex: 0,\n target: 0,\n title: 0,\n // Setting .type throws on non-<input> tags\n type: 0,\n useMap: 0,\n value: 0,\n width: 0,\n wmode: 0,\n wrap: 0,\n\n /**\n * RDFa Properties\n */\n about: 0,\n datatype: 0,\n inlist: 0,\n prefix: 0,\n // property is also supported for OpenGraph in meta tags.\n property: 0,\n resource: 0,\n 'typeof': 0,\n vocab: 0,\n\n /**\n * Non-standard Properties\n */\n // autoCapitalize and autoCorrect are supported in Mobile Safari for\n // keyboard hints.\n autoCapitalize: 0,\n autoCorrect: 0,\n // autoSave allows WebKit/Blink to persist values of input fields on page reloads\n autoSave: 0,\n // color is for Safari mask-icon link\n color: 0,\n // itemProp, itemScope, itemType are for\n // Microdata support. See http://schema.org/docs/gs.html\n itemProp: 0,\n itemScope: HAS_BOOLEAN_VALUE,\n itemType: 0,\n // itemID and itemRef are for Microdata support as well but\n // only specified in the WHATWG spec document. See\n // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api\n itemID: 0,\n itemRef: 0,\n // results show looking glass icon and recent searches on input\n // search fields in WebKit/Blink\n results: 0,\n // IE-only attribute that specifies security restrictions on an iframe\n // as an alternative to the sandbox attribute on IE<10\n security: 0,\n // IE-only attribute that controls focus behavior\n unselectable: 0\n },\n DOMAttributeNames: {\n acceptCharset: 'accept-charset',\n className: 'class',\n htmlFor: 'for',\n httpEquiv: 'http-equiv'\n },\n DOMPropertyNames: {}\n};\n\nmodule.exports = HTMLDOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/HTMLDOMPropertyConfig.js\n// module id = 284\n// module chunks = 0","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactReconciler = require('./ReactReconciler');\n\nvar instantiateReactComponent = require('./instantiateReactComponent');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\nfunction instantiateChild(childInstances, child, name, selfDebugID) {\n // We found a component instance.\n var keyUnique = childInstances[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (child != null && keyUnique) {\n childInstances[name] = instantiateReactComponent(child, true);\n }\n}\n\n/**\n * ReactChildReconciler provides helpers for initializing or updating a set of\n * children. Its output is suitable for passing it onto ReactMultiChild which\n * does diffed reordering and insertion.\n */\nvar ReactChildReconciler = {\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildNodes Nested child maps.\n * @return {?object} A set of child instances.\n * @internal\n */\n instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // 0 in production and for roots\n ) {\n if (nestedChildNodes == null) {\n return null;\n }\n var childInstances = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {\n return instantiateChild(childInsts, child, name, selfDebugID);\n }, childInstances);\n } else {\n traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);\n }\n return childInstances;\n },\n\n /**\n * Updates the rendered children and returns a new set of children.\n *\n * @param {?object} prevChildren Previously initialized set of children.\n * @param {?object} nextChildren Flat child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n * @return {?object} A new set of child instances.\n * @internal\n */\n updateChildren: function (prevChildren, nextChildren, mountImages, removedNodes, transaction, hostParent, hostContainerInfo, context, selfDebugID // 0 in production and for roots\n ) {\n // We currently don't have a way to track moves here but if we use iterators\n // instead of for..in we can zip the iterators and check if an item has\n // moved.\n // TODO: If nothing has changed, return the prevChildren object so that we\n // can quickly bailout if nothing has changed.\n if (!nextChildren && !prevChildren) {\n return;\n }\n var name;\n var prevChild;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild._currentElement;\n var nextElement = nextChildren[name];\n if (prevChild != null && shouldUpdateReactComponent(prevElement, nextElement)) {\n ReactReconciler.receiveComponent(prevChild, nextElement, transaction, context);\n nextChildren[name] = prevChild;\n } else {\n if (prevChild) {\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n // The child must be instantiated before it's mounted.\n var nextChildInstance = instantiateReactComponent(nextElement, true);\n nextChildren[name] = nextChildInstance;\n // Creating mount image now ensures refs are resolved in right order\n // (see https://github.com/facebook/react/pull/7101 for explanation).\n var nextChildMountImage = ReactReconciler.mountComponent(nextChildInstance, transaction, hostParent, hostContainerInfo, context, selfDebugID);\n mountImages.push(nextChildMountImage);\n }\n }\n // Unmount children that are no longer present.\n for (name in prevChildren) {\n if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {\n prevChild = prevChildren[name];\n removedNodes[name] = ReactReconciler.getHostNode(prevChild);\n ReactReconciler.unmountComponent(prevChild, false);\n }\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted.\n *\n * @param {?object} renderedChildren Previously initialized set of children.\n * @internal\n */\n unmountChildren: function (renderedChildren, safely) {\n for (var name in renderedChildren) {\n if (renderedChildren.hasOwnProperty(name)) {\n var renderedChild = renderedChildren[name];\n ReactReconciler.unmountComponent(renderedChild, safely);\n }\n }\n }\n\n};\n\nmodule.exports = ReactChildReconciler;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactChildReconciler.js\n// module id = 285\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMIDOperations = require('./ReactDOMIDOperations');\n\n/**\n * Abstracts away all functionality of the reconciler that requires knowledge of\n * the browser context. TODO: These callers should be refactored to avoid the\n * need for this injection.\n */\nvar ReactComponentBrowserEnvironment = {\n\n processChildrenUpdates: ReactDOMIDOperations.dangerouslyProcessChildrenUpdates,\n\n replaceNodeWithMarkup: DOMChildrenOperations.dangerouslyReplaceNodeWithMarkup\n\n};\n\nmodule.exports = ReactComponentBrowserEnvironment;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactComponentBrowserEnvironment.js\n// module id = 286\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactErrorUtils = require('./ReactErrorUtils');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactNodeTypes = require('./ReactNodeTypes');\nvar ReactReconciler = require('./ReactReconciler');\n\nif (process.env.NODE_ENV !== 'production') {\n var checkReactTypeSpec = require('./checkReactTypeSpec');\n}\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar shouldUpdateReactComponent = require('./shouldUpdateReactComponent');\nvar warning = require('fbjs/lib/warning');\n\nvar CompositeTypes = {\n ImpureClass: 0,\n PureClass: 1,\n StatelessFunctional: 2\n};\n\nfunction StatelessComponent(Component) {}\nStatelessComponent.prototype.render = function () {\n var Component = ReactInstanceMap.get(this)._currentElement.type;\n var element = Component(this.props, this.context, this.updater);\n warnIfInvalidElement(Component, element);\n return element;\n};\n\nfunction warnIfInvalidElement(Component, element) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(element === null || element === false || React.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;\n }\n}\n\nfunction shouldConstruct(Component) {\n return !!(Component.prototype && Component.prototype.isReactComponent);\n}\n\nfunction isPureComponent(Component) {\n return !!(Component.prototype && Component.prototype.isPureReactComponent);\n}\n\n// Separated into a function to contain deoptimizations caused by try/finally.\nfunction measureLifeCyclePerf(fn, debugID, timerType) {\n if (debugID === 0) {\n // Top-level wrappers (see ReactMount) and empty components (see\n // ReactDOMEmptyComponent) are invisible to hooks and devtools.\n // Both are implementation details that should go away in the future.\n return fn();\n }\n\n ReactInstrumentation.debugTool.onBeginLifeCycleTimer(debugID, timerType);\n try {\n return fn();\n } finally {\n ReactInstrumentation.debugTool.onEndLifeCycleTimer(debugID, timerType);\n }\n}\n\n/**\n * ------------------ The Life-Cycle of a Composite Component ------------------\n *\n * - constructor: Initialization of state. The instance is now retained.\n * - componentWillMount\n * - render\n * - [children's constructors]\n * - [children's componentWillMount and render]\n * - [children's componentDidMount]\n * - componentDidMount\n *\n * Update Phases:\n * - componentWillReceiveProps (only called if parent updated)\n * - shouldComponentUpdate\n * - componentWillUpdate\n * - render\n * - [children's constructors or receive props phases]\n * - componentDidUpdate\n *\n * - componentWillUnmount\n * - [children's componentWillUnmount]\n * - [children destroyed]\n * - (destroyed): The instance is now blank, released by React and ready for GC.\n *\n * -----------------------------------------------------------------------------\n */\n\n/**\n * An incrementing ID assigned to each component when it is mounted. This is\n * used to enforce the order in which `ReactUpdates` updates dirty components.\n *\n * @private\n */\nvar nextMountID = 1;\n\n/**\n * @lends {ReactCompositeComponent.prototype}\n */\nvar ReactCompositeComponent = {\n\n /**\n * Base constructor for all composite component.\n *\n * @param {ReactElement} element\n * @final\n * @internal\n */\n construct: function (element) {\n this._currentElement = element;\n this._rootNodeID = 0;\n this._compositeType = null;\n this._instance = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n\n // See ReactUpdateQueue\n this._updateBatchNumber = null;\n this._pendingElement = null;\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._context = null;\n this._mountOrder = 0;\n this._topLevelWrapper = null;\n\n // See ReactUpdates and ReactUpdateQueue.\n this._pendingCallbacks = null;\n\n // ComponentWillUnmount shall only be called once\n this._calledComponentWillUnmount = false;\n\n if (process.env.NODE_ENV !== 'production') {\n this._warnedAboutRefsInRender = false;\n }\n },\n\n /**\n * Initializes the component, renders markup, and registers event listeners.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?object} hostParent\n * @param {?object} hostContainerInfo\n * @param {?object} context\n * @return {?string} Rendered markup to be inserted into the DOM.\n * @final\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var _this = this;\n\n this._context = context;\n this._mountOrder = nextMountID++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var publicProps = this._currentElement.props;\n var publicContext = this._processContext(context);\n\n var Component = this._currentElement.type;\n\n var updateQueue = transaction.getUpdateQueue();\n\n // Initialize the public class\n var doConstruct = shouldConstruct(Component);\n var inst = this._constructComponent(doConstruct, publicProps, publicContext, updateQueue);\n var renderedElement;\n\n // Support functional components\n if (!doConstruct && (inst == null || inst.render == null)) {\n renderedElement = inst;\n warnIfInvalidElement(Component, renderedElement);\n !(inst === null || inst === false || React.isValidElement(inst)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;\n inst = new StatelessComponent(Component);\n this._compositeType = CompositeTypes.StatelessFunctional;\n } else {\n if (isPureComponent(Component)) {\n this._compositeType = CompositeTypes.PureClass;\n } else {\n this._compositeType = CompositeTypes.ImpureClass;\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This will throw later in _renderValidatedComponent, but add an early\n // warning now to help debugging\n if (inst.render == null) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', Component.displayName || Component.name || 'Component') : void 0;\n }\n\n var propsMutated = inst.props !== publicProps;\n var componentName = Component.displayName || Component.name || 'Component';\n\n process.env.NODE_ENV !== 'production' ? warning(inst.props === undefined || !propsMutated, '%s(...): When calling super() in `%s`, make sure to pass ' + 'up the same props that your component\\'s constructor was passed.', componentName, componentName) : void 0;\n }\n\n // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n inst.props = publicProps;\n inst.context = publicContext;\n inst.refs = emptyObject;\n inst.updater = updateQueue;\n\n this._instance = inst;\n\n // Store a reference from the instance back to the internal representation\n ReactInstanceMap.set(inst, this);\n\n if (process.env.NODE_ENV !== 'production') {\n // Since plain JS classes are defined without any special initialization\n // logic, we can not catch common errors early. Therefore, we have to\n // catch them here, at initialization time, instead.\n process.env.NODE_ENV !== 'production' ? warning(!inst.getInitialState || inst.getInitialState.isReactClassApproved, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.getDefaultProps || inst.getDefaultProps.isReactClassApproved, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.propTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!inst.contextTypes, 'contextTypes was defined as an instance property on %s. Use a ' + 'static property to define contextTypes instead.', this.getName() || 'a component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentShouldUpdate !== 'function', '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentDidUnmount !== 'function', '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', this.getName() || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(typeof inst.componentWillRecieveProps !== 'function', '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', this.getName() || 'A component') : void 0;\n }\n\n var initialState = inst.state;\n if (initialState === undefined) {\n inst.state = initialState = null;\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;\n\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n\n var markup;\n if (inst.unstable_handleError) {\n markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } else {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n\n if (inst.componentDidMount) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(function () {\n return inst.componentDidMount();\n }, _this._debugID, 'componentDidMount');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);\n }\n }\n\n return markup;\n },\n\n _constructComponent: function (doConstruct, publicProps, publicContext, updateQueue) {\n if (process.env.NODE_ENV !== 'production') {\n ReactCurrentOwner.current = this;\n try {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n return this._constructComponentWithoutOwner(doConstruct, publicProps, publicContext, updateQueue);\n }\n },\n\n _constructComponentWithoutOwner: function (doConstruct, publicProps, publicContext, updateQueue) {\n var Component = this._currentElement.type;\n\n if (doConstruct) {\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return new Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'ctor');\n } else {\n return new Component(publicProps, publicContext, updateQueue);\n }\n }\n\n // This can still be an instance in case of factory components\n // but we'll count this as time spent rendering as the more common case.\n if (process.env.NODE_ENV !== 'production') {\n return measureLifeCyclePerf(function () {\n return Component(publicProps, publicContext, updateQueue);\n }, this._debugID, 'render');\n } else {\n return Component(publicProps, publicContext, updateQueue);\n }\n },\n\n performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var markup;\n var checkpoint = transaction.checkpoint();\n try {\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n } catch (e) {\n // Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint\n transaction.rollback(checkpoint);\n this._instance.unstable_handleError(e);\n if (this._pendingStateQueue) {\n this._instance.state = this._processPendingState(this._instance.props, this._instance.context);\n }\n checkpoint = transaction.checkpoint();\n\n this._renderedComponent.unmountComponent(true);\n transaction.rollback(checkpoint);\n\n // Try again - we've informed the component about the error, so they can render an error message this time.\n // If this throws again, the error will bubble up (and can be caught by a higher error boundary).\n markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);\n }\n return markup;\n },\n\n performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {\n var inst = this._instance;\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (inst.componentWillMount) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillMount();\n }, debugID, 'componentWillMount');\n } else {\n inst.componentWillMount();\n }\n // When mounting, calls to `setState` by `componentWillMount` will set\n // `this._pendingStateQueue` without triggering a re-render.\n if (this._pendingStateQueue) {\n inst.state = this._processPendingState(inst.props, inst.context);\n }\n }\n\n // If not a stateless component, we now render\n if (renderedElement === undefined) {\n renderedElement = this._renderValidatedComponent();\n }\n\n var nodeType = ReactNodeTypes.getType(renderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(renderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n return markup;\n },\n\n getHostNode: function () {\n return ReactReconciler.getHostNode(this._renderedComponent);\n },\n\n /**\n * Releases any resources allocated by `mountComponent`.\n *\n * @final\n * @internal\n */\n unmountComponent: function (safely) {\n if (!this._renderedComponent) {\n return;\n }\n\n var inst = this._instance;\n\n if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {\n inst._calledComponentWillUnmount = true;\n\n if (safely) {\n var name = this.getName() + '.componentWillUnmount()';\n ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));\n } else {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUnmount();\n }, this._debugID, 'componentWillUnmount');\n } else {\n inst.componentWillUnmount();\n }\n }\n }\n\n if (this._renderedComponent) {\n ReactReconciler.unmountComponent(this._renderedComponent, safely);\n this._renderedNodeType = null;\n this._renderedComponent = null;\n this._instance = null;\n }\n\n // Reset pending fields\n // Even if this component is scheduled for another update in ReactUpdates,\n // it would still be ignored because these fields are reset.\n this._pendingStateQueue = null;\n this._pendingReplaceState = false;\n this._pendingForceUpdate = false;\n this._pendingCallbacks = null;\n this._pendingElement = null;\n\n // These fields do not really need to be reset since this object is no\n // longer accessible.\n this._context = null;\n this._rootNodeID = 0;\n this._topLevelWrapper = null;\n\n // Delete the reference from the instance to this internal representation\n // which allow the internals to be properly cleaned up even if the user\n // leaks a reference to the public instance.\n ReactInstanceMap.remove(inst);\n\n // Some existing components rely on inst.props even after they've been\n // destroyed (in event handlers).\n // TODO: inst.props = null;\n // TODO: inst.state = null;\n // TODO: inst.context = null;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _maskContext: function (context) {\n var Component = this._currentElement.type;\n var contextTypes = Component.contextTypes;\n if (!contextTypes) {\n return emptyObject;\n }\n var maskedContext = {};\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n return maskedContext;\n },\n\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`, and asserts that they are valid.\n *\n * @param {object} context\n * @return {?object}\n * @private\n */\n _processContext: function (context) {\n var maskedContext = this._maskContext(context);\n if (process.env.NODE_ENV !== 'production') {\n var Component = this._currentElement.type;\n if (Component.contextTypes) {\n this._checkContextTypes(Component.contextTypes, maskedContext, 'context');\n }\n }\n return maskedContext;\n },\n\n /**\n * @param {object} currentContext\n * @return {object}\n * @private\n */\n _processChildContext: function (currentContext) {\n var Component = this._currentElement.type;\n var inst = this._instance;\n var childContext;\n\n if (inst.getChildContext) {\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onBeginProcessingChildContext();\n try {\n childContext = inst.getChildContext();\n } finally {\n ReactInstrumentation.debugTool.onEndProcessingChildContext();\n }\n } else {\n childContext = inst.getChildContext();\n }\n }\n\n if (childContext) {\n !(typeof Component.childContextTypes === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;\n if (process.env.NODE_ENV !== 'production') {\n this._checkContextTypes(Component.childContextTypes, childContext, 'childContext');\n }\n for (var name in childContext) {\n !(name in Component.childContextTypes) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getChildContext(): key \"%s\" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;\n }\n return _assign({}, currentContext, childContext);\n }\n return currentContext;\n },\n\n /**\n * Assert that the context types are valid\n *\n * @param {object} typeSpecs Map of context field to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @private\n */\n _checkContextTypes: function (typeSpecs, values, location) {\n if (process.env.NODE_ENV !== 'production') {\n checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);\n }\n },\n\n receiveComponent: function (nextElement, transaction, nextContext) {\n var prevElement = this._currentElement;\n var prevContext = this._context;\n\n this._pendingElement = null;\n\n this.updateComponent(transaction, prevElement, nextElement, prevContext, nextContext);\n },\n\n /**\n * If any of `_pendingElement`, `_pendingStateQueue`, or `_pendingForceUpdate`\n * is set, update the component.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n performUpdateIfNecessary: function (transaction) {\n if (this._pendingElement != null) {\n ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);\n } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {\n this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);\n } else {\n this._updateBatchNumber = null;\n }\n },\n\n /**\n * Perform an update to a mounted component. The componentWillReceiveProps and\n * shouldComponentUpdate methods are called, then (assuming the update isn't\n * skipped) the remaining update lifecycle methods are called and the DOM\n * representation is updated.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevParentElement\n * @param {ReactElement} nextParentElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {\n var inst = this._instance;\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;\n\n var willReceive = false;\n var nextContext;\n\n // Determine if the context has changed or not\n if (this._context === nextUnmaskedContext) {\n nextContext = inst.context;\n } else {\n nextContext = this._processContext(nextUnmaskedContext);\n willReceive = true;\n }\n\n var prevProps = prevParentElement.props;\n var nextProps = nextParentElement.props;\n\n // Not a simple state update but a props update\n if (prevParentElement !== nextParentElement) {\n willReceive = true;\n }\n\n // An update here will schedule an update but immediately set\n // _pendingStateQueue which will ensure that any state updates gets\n // immediately reconciled instead of waiting for the next batch.\n if (willReceive && inst.componentWillReceiveProps) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillReceiveProps(nextProps, nextContext);\n }, this._debugID, 'componentWillReceiveProps');\n } else {\n inst.componentWillReceiveProps(nextProps, nextContext);\n }\n }\n\n var nextState = this._processPendingState(nextProps, nextContext);\n var shouldUpdate = true;\n\n if (!this._pendingForceUpdate) {\n if (inst.shouldComponentUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n shouldUpdate = measureLifeCyclePerf(function () {\n return inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'shouldComponentUpdate');\n } else {\n shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);\n }\n } else {\n if (this._compositeType === CompositeTypes.PureClass) {\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(inst.state, nextState);\n }\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;\n }\n\n this._updateBatchNumber = null;\n if (shouldUpdate) {\n this._pendingForceUpdate = false;\n // Will set `this.props`, `this.state` and `this.context`.\n this._performComponentUpdate(nextParentElement, nextProps, nextState, nextContext, transaction, nextUnmaskedContext);\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n this._currentElement = nextParentElement;\n this._context = nextUnmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n }\n },\n\n _processPendingState: function (props, context) {\n var inst = this._instance;\n var queue = this._pendingStateQueue;\n var replace = this._pendingReplaceState;\n this._pendingReplaceState = false;\n this._pendingStateQueue = null;\n\n if (!queue) {\n return inst.state;\n }\n\n if (replace && queue.length === 1) {\n return queue[0];\n }\n\n var nextState = _assign({}, replace ? queue[0] : inst.state);\n for (var i = replace ? 1 : 0; i < queue.length; i++) {\n var partial = queue[i];\n _assign(nextState, typeof partial === 'function' ? partial.call(inst, nextState, props, context) : partial);\n }\n\n return nextState;\n },\n\n /**\n * Merges new props and state, notifies delegate methods of update and\n * performs update.\n *\n * @param {ReactElement} nextElement Next element\n * @param {object} nextProps Next public object to set as properties.\n * @param {?object} nextState Next object to set as state.\n * @param {?object} nextContext Next public object to set as context.\n * @param {ReactReconcileTransaction} transaction\n * @param {?object} unmaskedContext\n * @private\n */\n _performComponentUpdate: function (nextElement, nextProps, nextState, nextContext, transaction, unmaskedContext) {\n var _this2 = this;\n\n var inst = this._instance;\n\n var hasComponentDidUpdate = Boolean(inst.componentDidUpdate);\n var prevProps;\n var prevState;\n var prevContext;\n if (hasComponentDidUpdate) {\n prevProps = inst.props;\n prevState = inst.state;\n prevContext = inst.context;\n }\n\n if (inst.componentWillUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n measureLifeCyclePerf(function () {\n return inst.componentWillUpdate(nextProps, nextState, nextContext);\n }, this._debugID, 'componentWillUpdate');\n } else {\n inst.componentWillUpdate(nextProps, nextState, nextContext);\n }\n }\n\n this._currentElement = nextElement;\n this._context = unmaskedContext;\n inst.props = nextProps;\n inst.state = nextState;\n inst.context = nextContext;\n\n this._updateRenderedComponent(transaction, unmaskedContext);\n\n if (hasComponentDidUpdate) {\n if (process.env.NODE_ENV !== 'production') {\n transaction.getReactMountReady().enqueue(function () {\n measureLifeCyclePerf(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), _this2._debugID, 'componentDidUpdate');\n });\n } else {\n transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);\n }\n }\n },\n\n /**\n * Call the component's `render` method and update the DOM accordingly.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n _updateRenderedComponent: function (transaction, context) {\n var prevComponentInstance = this._renderedComponent;\n var prevRenderedElement = prevComponentInstance._currentElement;\n var nextRenderedElement = this._renderValidatedComponent();\n\n var debugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n debugID = this._debugID;\n }\n\n if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {\n ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));\n } else {\n var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);\n ReactReconciler.unmountComponent(prevComponentInstance, false);\n\n var nodeType = ReactNodeTypes.getType(nextRenderedElement);\n this._renderedNodeType = nodeType;\n var child = this._instantiateReactComponent(nextRenderedElement, nodeType !== ReactNodeTypes.EMPTY /* shouldHaveDebugID */\n );\n this._renderedComponent = child;\n\n var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context), debugID);\n\n if (process.env.NODE_ENV !== 'production') {\n if (debugID !== 0) {\n var childDebugIDs = child._debugID !== 0 ? [child._debugID] : [];\n ReactInstrumentation.debugTool.onSetChildren(debugID, childDebugIDs);\n }\n }\n\n this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);\n }\n },\n\n /**\n * Overridden in shallow rendering.\n *\n * @protected\n */\n _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {\n ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);\n },\n\n /**\n * @protected\n */\n _renderValidatedComponentWithoutOwnerOrContext: function () {\n var inst = this._instance;\n var renderedElement;\n\n if (process.env.NODE_ENV !== 'production') {\n renderedElement = measureLifeCyclePerf(function () {\n return inst.render();\n }, this._debugID, 'render');\n } else {\n renderedElement = inst.render();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (renderedElement === undefined && inst.render._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n renderedElement = null;\n }\n }\n\n return renderedElement;\n },\n\n /**\n * @private\n */\n _renderValidatedComponent: function () {\n var renderedElement;\n if (process.env.NODE_ENV !== 'production' || this._compositeType !== CompositeTypes.StatelessFunctional) {\n ReactCurrentOwner.current = this;\n try {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n } finally {\n ReactCurrentOwner.current = null;\n }\n } else {\n renderedElement = this._renderValidatedComponentWithoutOwnerOrContext();\n }\n !(\n // TODO: An `isValidNode` function would probably be more appropriate\n renderedElement === null || renderedElement === false || React.isValidElement(renderedElement)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;\n\n return renderedElement;\n },\n\n /**\n * Lazily allocates the refs object and stores `component` as `ref`.\n *\n * @param {string} ref Reference name.\n * @param {component} component Component to store as `ref`.\n * @final\n * @private\n */\n attachRef: function (ref, component) {\n var inst = this.getPublicInstance();\n !(inst != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;\n var publicComponentInstance = component.getPublicInstance();\n if (process.env.NODE_ENV !== 'production') {\n var componentName = component && component.getName ? component.getName() : 'a component';\n process.env.NODE_ENV !== 'production' ? warning(publicComponentInstance != null || component._compositeType !== CompositeTypes.StatelessFunctional, 'Stateless function components cannot be given refs ' + '(See ref \"%s\" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : void 0;\n }\n var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;\n refs[ref] = publicComponentInstance;\n },\n\n /**\n * Detaches a reference name.\n *\n * @param {string} ref Name to dereference.\n * @final\n * @private\n */\n detachRef: function (ref) {\n var refs = this.getPublicInstance().refs;\n delete refs[ref];\n },\n\n /**\n * Get a text description of the component that can be used to identify it\n * in error messages.\n * @return {string} The name or null.\n * @internal\n */\n getName: function () {\n var type = this._currentElement.type;\n var constructor = this._instance && this._instance.constructor;\n return type.displayName || constructor && constructor.displayName || type.name || constructor && constructor.name || null;\n },\n\n /**\n * Get the publicly accessible representation of this component - i.e. what\n * is exposed by refs and returned by render. Can be null for stateless\n * components.\n *\n * @return {ReactComponent} the public component instance.\n * @internal\n */\n getPublicInstance: function () {\n var inst = this._instance;\n if (this._compositeType === CompositeTypes.StatelessFunctional) {\n return null;\n }\n return inst;\n },\n\n // Stub\n _instantiateReactComponent: null\n\n};\n\nmodule.exports = ReactCompositeComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactCompositeComponent.js\n// module id = 287\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/\n\n'use strict';\n\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDefaultInjection = require('./ReactDefaultInjection');\nvar ReactMount = require('./ReactMount');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactUpdates = require('./ReactUpdates');\nvar ReactVersion = require('./ReactVersion');\n\nvar findDOMNode = require('./findDOMNode');\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar renderSubtreeIntoContainer = require('./renderSubtreeIntoContainer');\nvar warning = require('fbjs/lib/warning');\n\nReactDefaultInjection.inject();\n\nvar ReactDOM = {\n findDOMNode: findDOMNode,\n render: ReactMount.render,\n unmountComponentAtNode: ReactMount.unmountComponentAtNode,\n version: ReactVersion,\n\n /* eslint-disable camelcase */\n unstable_batchedUpdates: ReactUpdates.batchedUpdates,\n unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer\n};\n\n// Inject the runtime into a devtools global hook regardless of browser.\n// Allows for debugging when the hook is injected on the page.\nif (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({\n ComponentTree: {\n getClosestInstanceFromNode: ReactDOMComponentTree.getClosestInstanceFromNode,\n getNodeFromInstance: function (inst) {\n // inst is an internal instance (but could be a composite)\n if (inst._renderedComponent) {\n inst = getHostComponentFromComposite(inst);\n }\n if (inst) {\n return ReactDOMComponentTree.getNodeFromInstance(inst);\n } else {\n return null;\n }\n }\n },\n Mount: ReactMount,\n Reconciler: ReactReconciler\n });\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n if (ExecutionEnvironment.canUseDOM && window.top === window.self) {\n\n // First check if devtools is not installed\n if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n // If we're in Chrome or Firefox, provide a download link if not installed.\n if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n // Firefox does not have the issue with devtools loaded over file://\n var showFileUrlMessage = window.location.protocol.indexOf('http') === -1 && navigator.userAgent.indexOf('Firefox') === -1;\n console.debug('Download the React DevTools ' + (showFileUrlMessage ? 'and use an HTTP server (instead of a file: URL) ' : '') + 'for a better development experience: ' + 'https://fb.me/react-devtools');\n }\n }\n\n var testFunc = function testFn() {};\n process.env.NODE_ENV !== 'production' ? warning((testFunc.name || testFunc.toString()).indexOf('testFn') !== -1, 'It looks like you\\'re using a minified copy of the development build ' + 'of React. When deploying React apps to production, make sure to use ' + 'the production build which skips development warnings and is faster. ' + 'See https://fb.me/react-minification for more details.') : void 0;\n\n // If we're in IE8, check to see if we are in compatibility mode and provide\n // information on preventing compatibility mode\n var ieCompatibilityMode = document.documentMode && document.documentMode < 8;\n\n process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />') : void 0;\n\n var expectedFeatures = [\n // shims\n Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.trim];\n\n for (var i = 0; i < expectedFeatures.length; i++) {\n if (!expectedFeatures[i]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'One or more ES5 shims expected by React are not available: ' + 'https://fb.me/react-warning-polyfills') : void 0;\n break;\n }\n }\n }\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactInstrumentation = require('./ReactInstrumentation');\n var ReactDOMUnknownPropertyHook = require('./ReactDOMUnknownPropertyHook');\n var ReactDOMNullInputValuePropHook = require('./ReactDOMNullInputValuePropHook');\n var ReactDOMInvalidARIAHook = require('./ReactDOMInvalidARIAHook');\n\n ReactInstrumentation.debugTool.addHook(ReactDOMUnknownPropertyHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMNullInputValuePropHook);\n ReactInstrumentation.debugTool.addHook(ReactDOMInvalidARIAHook);\n}\n\nmodule.exports = ReactDOM;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOM.js\n// module id = 288\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n/* global hasOwnProperty:true */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar AutoFocusUtils = require('./AutoFocusUtils');\nvar CSSPropertyOperations = require('./CSSPropertyOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar DOMNamespaces = require('./DOMNamespaces');\nvar DOMProperty = require('./DOMProperty');\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginRegistry = require('./EventPluginRegistry');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactDOMComponentFlags = require('./ReactDOMComponentFlags');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMInput = require('./ReactDOMInput');\nvar ReactDOMOption = require('./ReactDOMOption');\nvar ReactDOMSelect = require('./ReactDOMSelect');\nvar ReactDOMTextarea = require('./ReactDOMTextarea');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactMultiChild = require('./ReactMultiChild');\nvar ReactServerRenderingTransaction = require('./ReactServerRenderingTransaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar isEventSupported = require('./isEventSupported');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\nvar validateDOMNesting = require('./validateDOMNesting');\nvar warning = require('fbjs/lib/warning');\n\nvar Flags = ReactDOMComponentFlags;\nvar deleteListener = EventPluginHub.deleteListener;\nvar getNode = ReactDOMComponentTree.getNodeFromInstance;\nvar listenTo = ReactBrowserEventEmitter.listenTo;\nvar registrationNameModules = EventPluginRegistry.registrationNameModules;\n\n// For quickly matching children type, to test if can be treated as content.\nvar CONTENT_TYPES = { 'string': true, 'number': true };\n\nvar STYLE = 'style';\nvar HTML = '__html';\nvar RESERVED_PROPS = {\n children: null,\n dangerouslySetInnerHTML: null,\n suppressContentEditableWarning: null\n};\n\n// Node type for document fragments (Node.DOCUMENT_FRAGMENT_NODE).\nvar DOC_FRAGMENT_TYPE = 11;\n\nfunction getDeclarationErrorAddendum(internalInstance) {\n if (internalInstance) {\n var owner = internalInstance._currentElement._owner || null;\n if (owner) {\n var name = owner.getName();\n if (name) {\n return ' This DOM node was rendered by `' + name + '`.';\n }\n }\n }\n return '';\n}\n\nfunction friendlyStringify(obj) {\n if (typeof obj === 'object') {\n if (Array.isArray(obj)) {\n return '[' + obj.map(friendlyStringify).join(', ') + ']';\n } else {\n var pairs = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var keyEscaped = /^[a-z$_][\\w$_]*$/i.test(key) ? key : JSON.stringify(key);\n pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));\n }\n }\n return '{' + pairs.join(', ') + '}';\n }\n } else if (typeof obj === 'string') {\n return JSON.stringify(obj);\n } else if (typeof obj === 'function') {\n return '[function object]';\n }\n // Differs from JSON.stringify in that undefined because undefined and that\n // inf and nan don't become null\n return String(obj);\n}\n\nvar styleMutationWarning = {};\n\nfunction checkAndWarnForMutatedStyle(style1, style2, component) {\n if (style1 == null || style2 == null) {\n return;\n }\n if (shallowEqual(style1, style2)) {\n return;\n }\n\n var componentName = component._tag;\n var owner = component._currentElement._owner;\n var ownerName;\n if (owner) {\n ownerName = owner.getName();\n }\n\n var hash = ownerName + '|' + componentName;\n\n if (styleMutationWarning.hasOwnProperty(hash)) {\n return;\n }\n\n styleMutationWarning[hash] = true;\n\n process.env.NODE_ENV !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : void 0;\n}\n\n/**\n * @param {object} component\n * @param {?object} props\n */\nfunction assertValidProps(component, props) {\n if (!props) {\n return;\n }\n // Note the use of `==` which checks for null or undefined.\n if (voidElementTags[component._tag]) {\n !(props.children == null && props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : _prodInvariant('137', component._tag, component._currentElement._owner ? ' Check the render method of ' + component._currentElement._owner.getName() + '.' : '') : void 0;\n }\n if (props.dangerouslySetInnerHTML != null) {\n !(props.children == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : _prodInvariant('60') : void 0;\n !(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : _prodInvariant('61') : void 0;\n }\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.innerHTML == null, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(props.onFocusIn == null && props.onFocusOut == null, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.') : void 0;\n }\n !(props.style == null || typeof props.style === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \\'em\\'}} when using JSX.%s', getDeclarationErrorAddendum(component)) : _prodInvariant('62', getDeclarationErrorAddendum(component)) : void 0;\n}\n\nfunction enqueuePutListener(inst, registrationName, listener, transaction) {\n if (transaction instanceof ReactServerRenderingTransaction) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // IE8 has no API for event capturing and the `onScroll` event doesn't\n // bubble.\n process.env.NODE_ENV !== 'production' ? warning(registrationName !== 'onScroll' || isEventSupported('scroll', true), 'This browser doesn\\'t support the `onScroll` event') : void 0;\n }\n var containerInfo = inst._hostContainerInfo;\n var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;\n var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;\n listenTo(registrationName, doc);\n transaction.getReactMountReady().enqueue(putListener, {\n inst: inst,\n registrationName: registrationName,\n listener: listener\n });\n}\n\nfunction putListener() {\n var listenerToPut = this;\n EventPluginHub.putListener(listenerToPut.inst, listenerToPut.registrationName, listenerToPut.listener);\n}\n\nfunction inputPostMount() {\n var inst = this;\n ReactDOMInput.postMountWrapper(inst);\n}\n\nfunction textareaPostMount() {\n var inst = this;\n ReactDOMTextarea.postMountWrapper(inst);\n}\n\nfunction optionPostMount() {\n var inst = this;\n ReactDOMOption.postMountWrapper(inst);\n}\n\nvar setAndValidateContentChildDev = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev = function (content) {\n var hasExistingContent = this._contentDebugID != null;\n var debugID = this._debugID;\n // This ID represents the inlined child that has no backing instance:\n var contentDebugID = -debugID;\n\n if (content == null) {\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);\n }\n this._contentDebugID = null;\n return;\n }\n\n validateDOMNesting(null, String(content), this, this._ancestorInfo);\n this._contentDebugID = contentDebugID;\n if (hasExistingContent) {\n ReactInstrumentation.debugTool.onBeforeUpdateComponent(contentDebugID, content);\n ReactInstrumentation.debugTool.onUpdateComponent(contentDebugID);\n } else {\n ReactInstrumentation.debugTool.onBeforeMountComponent(contentDebugID, content, debugID);\n ReactInstrumentation.debugTool.onMountComponent(contentDebugID);\n ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);\n }\n };\n}\n\n// There are so many media events, it makes sense to just\n// maintain a list rather than create a `trapBubbledEvent` for each\nvar mediaEvents = {\n topAbort: 'abort',\n topCanPlay: 'canplay',\n topCanPlayThrough: 'canplaythrough',\n topDurationChange: 'durationchange',\n topEmptied: 'emptied',\n topEncrypted: 'encrypted',\n topEnded: 'ended',\n topError: 'error',\n topLoadedData: 'loadeddata',\n topLoadedMetadata: 'loadedmetadata',\n topLoadStart: 'loadstart',\n topPause: 'pause',\n topPlay: 'play',\n topPlaying: 'playing',\n topProgress: 'progress',\n topRateChange: 'ratechange',\n topSeeked: 'seeked',\n topSeeking: 'seeking',\n topStalled: 'stalled',\n topSuspend: 'suspend',\n topTimeUpdate: 'timeupdate',\n topVolumeChange: 'volumechange',\n topWaiting: 'waiting'\n};\n\nfunction trapBubbledEventsLocal() {\n var inst = this;\n // If a component renders to null or if another component fatals and causes\n // the state of the tree to be corrupted, `node` here can be null.\n !inst._rootNodeID ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Must be mounted to trap events') : _prodInvariant('63') : void 0;\n var node = getNode(inst);\n !node ? process.env.NODE_ENV !== 'production' ? invariant(false, 'trapBubbledEvent(...): Requires node to be rendered.') : _prodInvariant('64') : void 0;\n\n switch (inst._tag) {\n case 'iframe':\n case 'object':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'video':\n case 'audio':\n\n inst._wrapperState.listeners = [];\n // Create listener for each media event\n for (var event in mediaEvents) {\n if (mediaEvents.hasOwnProperty(event)) {\n inst._wrapperState.listeners.push(ReactBrowserEventEmitter.trapBubbledEvent(event, mediaEvents[event], node));\n }\n }\n break;\n case 'source':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node)];\n break;\n case 'img':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topError', 'error', node), ReactBrowserEventEmitter.trapBubbledEvent('topLoad', 'load', node)];\n break;\n case 'form':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topReset', 'reset', node), ReactBrowserEventEmitter.trapBubbledEvent('topSubmit', 'submit', node)];\n break;\n case 'input':\n case 'select':\n case 'textarea':\n inst._wrapperState.listeners = [ReactBrowserEventEmitter.trapBubbledEvent('topInvalid', 'invalid', node)];\n break;\n }\n}\n\nfunction postUpdateSelectWrapper() {\n ReactDOMSelect.postUpdateWrapper(this);\n}\n\n// For HTML, certain tags should omit their close tag. We keep a whitelist for\n// those special-case tags.\n\nvar omittedCloseTags = {\n 'area': true,\n 'base': true,\n 'br': true,\n 'col': true,\n 'embed': true,\n 'hr': true,\n 'img': true,\n 'input': true,\n 'keygen': true,\n 'link': true,\n 'meta': true,\n 'param': true,\n 'source': true,\n 'track': true,\n 'wbr': true\n};\n\nvar newlineEatingTags = {\n 'listing': true,\n 'pre': true,\n 'textarea': true\n};\n\n// For HTML, certain tags cannot have children. This has the same purpose as\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = _assign({\n 'menuitem': true\n}, omittedCloseTags);\n\n// We accept any tag to be rendered but since this gets injected into arbitrary\n// HTML, we want to make sure that it's a safe tag.\n// http://www.w3.org/TR/REC-xml/#NT-Name\n\nvar VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/; // Simplified subset\nvar validatedTagCache = {};\nvar hasOwnProperty = {}.hasOwnProperty;\n\nfunction validateDangerousTag(tag) {\n if (!hasOwnProperty.call(validatedTagCache, tag)) {\n !VALID_TAG_REGEX.test(tag) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Invalid tag: %s', tag) : _prodInvariant('65', tag) : void 0;\n validatedTagCache[tag] = true;\n }\n}\n\nfunction isCustomComponent(tagName, props) {\n return tagName.indexOf('-') >= 0 || props.is != null;\n}\n\nvar globalIdCounter = 1;\n\n/**\n * Creates a new React class that is idempotent and capable of containing other\n * React components. It accepts event listeners and DOM properties that are\n * valid according to `DOMProperty`.\n *\n * - Event listeners: `onClick`, `onMouseDown`, etc.\n * - DOM properties: `className`, `name`, `title`, etc.\n *\n * The `style` property functions differently from the DOM API. It accepts an\n * object mapping of style properties to values.\n *\n * @constructor ReactDOMComponent\n * @extends ReactMultiChild\n */\nfunction ReactDOMComponent(element) {\n var tag = element.type;\n validateDangerousTag(tag);\n this._currentElement = element;\n this._tag = tag.toLowerCase();\n this._namespaceURI = null;\n this._renderedChildren = null;\n this._previousStyle = null;\n this._previousStyleCopy = null;\n this._hostNode = null;\n this._hostParent = null;\n this._rootNodeID = 0;\n this._domID = 0;\n this._hostContainerInfo = null;\n this._wrapperState = null;\n this._topLevelWrapper = null;\n this._flags = 0;\n if (process.env.NODE_ENV !== 'production') {\n this._ancestorInfo = null;\n setAndValidateContentChildDev.call(this, null);\n }\n}\n\nReactDOMComponent.displayName = 'ReactDOMComponent';\n\nReactDOMComponent.Mixin = {\n\n /**\n * Generates root tag markup then recurses. This method has side effects and\n * is not idempotent.\n *\n * @internal\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {?ReactDOMComponent} the parent component instance\n * @param {?object} info about the host container\n * @param {object} context\n * @return {string} The computed markup.\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n this._rootNodeID = globalIdCounter++;\n this._domID = hostContainerInfo._idCounter++;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var props = this._currentElement.props;\n\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n this._wrapperState = {\n listeners: null\n };\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'input':\n ReactDOMInput.mountWrapper(this, props, hostParent);\n props = ReactDOMInput.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'option':\n ReactDOMOption.mountWrapper(this, props, hostParent);\n props = ReactDOMOption.getHostProps(this, props);\n break;\n case 'select':\n ReactDOMSelect.mountWrapper(this, props, hostParent);\n props = ReactDOMSelect.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n case 'textarea':\n ReactDOMTextarea.mountWrapper(this, props, hostParent);\n props = ReactDOMTextarea.getHostProps(this, props);\n transaction.getReactMountReady().enqueue(trapBubbledEventsLocal, this);\n break;\n }\n\n assertValidProps(this, props);\n\n // We create tags in the namespace of their parent container, except HTML\n // tags get no namespace.\n var namespaceURI;\n var parentTag;\n if (hostParent != null) {\n namespaceURI = hostParent._namespaceURI;\n parentTag = hostParent._tag;\n } else if (hostContainerInfo._tag) {\n namespaceURI = hostContainerInfo._namespaceURI;\n parentTag = hostContainerInfo._tag;\n }\n if (namespaceURI == null || namespaceURI === DOMNamespaces.svg && parentTag === 'foreignobject') {\n namespaceURI = DOMNamespaces.html;\n }\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'svg') {\n namespaceURI = DOMNamespaces.svg;\n } else if (this._tag === 'math') {\n namespaceURI = DOMNamespaces.mathml;\n }\n }\n this._namespaceURI = namespaceURI;\n\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo._tag) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(this._tag, null, this, parentInfo);\n }\n this._ancestorInfo = validateDOMNesting.updatedAncestorInfo(parentInfo, this._tag, this);\n }\n\n var mountImage;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var el;\n if (namespaceURI === DOMNamespaces.html) {\n if (this._tag === 'script') {\n // Create the script via .innerHTML so its \"parser-inserted\" flag is\n // set to true and it does not execute\n var div = ownerDocument.createElement('div');\n var type = this._currentElement.type;\n div.innerHTML = '<' + type + '></' + type + '>';\n el = div.removeChild(div.firstChild);\n } else if (props.is) {\n el = ownerDocument.createElement(this._currentElement.type, props.is);\n } else {\n // Separate else branch instead of using `props.is || undefined` above becuase of a Firefox bug.\n // See discussion in https://github.com/facebook/react/pull/6896\n // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n el = ownerDocument.createElement(this._currentElement.type);\n }\n } else {\n el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);\n }\n ReactDOMComponentTree.precacheNode(this, el);\n this._flags |= Flags.hasCachedChildNodes;\n if (!this._hostParent) {\n DOMPropertyOperations.setAttributeForRoot(el);\n }\n this._updateDOMProperties(null, props, transaction);\n var lazyTree = DOMLazyTree(el);\n this._createInitialChildren(transaction, props, context, lazyTree);\n mountImage = lazyTree;\n } else {\n var tagOpen = this._createOpenTagMarkupAndPutListeners(transaction, props);\n var tagContent = this._createContentMarkup(transaction, props, context);\n if (!tagContent && omittedCloseTags[this._tag]) {\n mountImage = tagOpen + '/>';\n } else {\n mountImage = tagOpen + '>' + tagContent + '</' + this._currentElement.type + '>';\n }\n }\n\n switch (this._tag) {\n case 'input':\n transaction.getReactMountReady().enqueue(inputPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'textarea':\n transaction.getReactMountReady().enqueue(textareaPostMount, this);\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'select':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'button':\n if (props.autoFocus) {\n transaction.getReactMountReady().enqueue(AutoFocusUtils.focusDOMComponent, this);\n }\n break;\n case 'option':\n transaction.getReactMountReady().enqueue(optionPostMount, this);\n break;\n }\n\n return mountImage;\n },\n\n /**\n * Creates markup for the open tag and all attributes.\n *\n * This method has side effects because events get registered.\n *\n * Iterating over object properties is faster than iterating over arrays.\n * @see http://jsperf.com/obj-vs-arr-iteration\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @return {string} Markup of opening tag.\n */\n _createOpenTagMarkupAndPutListeners: function (transaction, props) {\n var ret = '<' + this._currentElement.type;\n\n for (var propKey in props) {\n if (!props.hasOwnProperty(propKey)) {\n continue;\n }\n var propValue = props[propKey];\n if (propValue == null) {\n continue;\n }\n if (registrationNameModules.hasOwnProperty(propKey)) {\n if (propValue) {\n enqueuePutListener(this, propKey, propValue, transaction);\n }\n } else {\n if (propKey === STYLE) {\n if (propValue) {\n if (process.env.NODE_ENV !== 'production') {\n // See `_updateDOMProperties`. style block\n this._previousStyle = propValue;\n }\n propValue = this._previousStyleCopy = _assign({}, props.style);\n }\n propValue = CSSPropertyOperations.createMarkupForStyles(propValue, this);\n }\n var markup = null;\n if (this._tag != null && isCustomComponent(this._tag, props)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n markup = DOMPropertyOperations.createMarkupForCustomAttribute(propKey, propValue);\n }\n } else {\n markup = DOMPropertyOperations.createMarkupForProperty(propKey, propValue);\n }\n if (markup) {\n ret += ' ' + markup;\n }\n }\n }\n\n // For static pages, no need to put React ID and checksum. Saves lots of\n // bytes.\n if (transaction.renderToStaticMarkup) {\n return ret;\n }\n\n if (!this._hostParent) {\n ret += ' ' + DOMPropertyOperations.createMarkupForRoot();\n }\n ret += ' ' + DOMPropertyOperations.createMarkupForID(this._domID);\n return ret;\n },\n\n /**\n * Creates markup for the content between the tags.\n *\n * @private\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} props\n * @param {object} context\n * @return {string} Content markup.\n */\n _createContentMarkup: function (transaction, props, context) {\n var ret = '';\n\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n ret = innerHTML.__html;\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n ret = escapeTextContentForBrowser(contentToUse);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n ret = mountImages.join('');\n }\n }\n if (newlineEatingTags[this._tag] && ret.charAt(0) === '\\n') {\n // text/html ignores the first character in these tags if it's a newline\n // Prefer to break application/xml over text/html (for now) by adding\n // a newline specifically to get eaten by the parser. (Alternately for\n // textareas, replacing \"^\\n\" with \"\\r\\n\" doesn't get eaten, and the first\n // \\r is normalized out by HTMLTextAreaElement#value.)\n // See: <http://www.w3.org/TR/html-polyglot/#newlines-in-textarea-and-pre>\n // See: <http://www.w3.org/TR/html5/syntax.html#element-restrictions>\n // See: <http://www.w3.org/TR/html5/syntax.html#newlines>\n // See: Parsing of \"textarea\" \"listing\" and \"pre\" elements\n // from <http://www.w3.org/TR/html5/syntax.html#parsing-main-inbody>\n return '\\n' + ret;\n } else {\n return ret;\n }\n },\n\n _createInitialChildren: function (transaction, props, context, lazyTree) {\n // Intentional use of != to avoid catching zero/false.\n var innerHTML = props.dangerouslySetInnerHTML;\n if (innerHTML != null) {\n if (innerHTML.__html != null) {\n DOMLazyTree.queueHTML(lazyTree, innerHTML.__html);\n }\n } else {\n var contentToUse = CONTENT_TYPES[typeof props.children] ? props.children : null;\n var childrenToUse = contentToUse != null ? null : props.children;\n if (contentToUse != null) {\n // TODO: Validate that text is allowed as a child of this node\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, contentToUse);\n }\n DOMLazyTree.queueText(lazyTree, contentToUse);\n } else if (childrenToUse != null) {\n var mountImages = this.mountChildren(childrenToUse, transaction, context);\n for (var i = 0; i < mountImages.length; i++) {\n DOMLazyTree.queueChild(lazyTree, mountImages[i]);\n }\n }\n }\n },\n\n /**\n * Receives a next element and updates the component.\n *\n * @internal\n * @param {ReactElement} nextElement\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @param {object} context\n */\n receiveComponent: function (nextElement, transaction, context) {\n var prevElement = this._currentElement;\n this._currentElement = nextElement;\n this.updateComponent(transaction, prevElement, nextElement, context);\n },\n\n /**\n * Updates a DOM component after it has already been allocated and\n * attached to the DOM. Reconciles the root DOM node, then recurses.\n *\n * @param {ReactReconcileTransaction} transaction\n * @param {ReactElement} prevElement\n * @param {ReactElement} nextElement\n * @internal\n * @overridable\n */\n updateComponent: function (transaction, prevElement, nextElement, context) {\n var lastProps = prevElement.props;\n var nextProps = this._currentElement.props;\n\n switch (this._tag) {\n case 'input':\n lastProps = ReactDOMInput.getHostProps(this, lastProps);\n nextProps = ReactDOMInput.getHostProps(this, nextProps);\n break;\n case 'option':\n lastProps = ReactDOMOption.getHostProps(this, lastProps);\n nextProps = ReactDOMOption.getHostProps(this, nextProps);\n break;\n case 'select':\n lastProps = ReactDOMSelect.getHostProps(this, lastProps);\n nextProps = ReactDOMSelect.getHostProps(this, nextProps);\n break;\n case 'textarea':\n lastProps = ReactDOMTextarea.getHostProps(this, lastProps);\n nextProps = ReactDOMTextarea.getHostProps(this, nextProps);\n break;\n }\n\n assertValidProps(this, nextProps);\n this._updateDOMProperties(lastProps, nextProps, transaction);\n this._updateDOMChildren(lastProps, nextProps, transaction, context);\n\n switch (this._tag) {\n case 'input':\n // Update the wrapper around inputs *after* updating props. This has to\n // happen after `_updateDOMProperties`. Otherwise HTML5 input validations\n // raise warnings and prevent the new value from being assigned.\n ReactDOMInput.updateWrapper(this);\n break;\n case 'textarea':\n ReactDOMTextarea.updateWrapper(this);\n break;\n case 'select':\n // <select> value update needs to occur after <option> children\n // reconciliation\n transaction.getReactMountReady().enqueue(postUpdateSelectWrapper, this);\n break;\n }\n },\n\n /**\n * Reconciles the properties by detecting differences in property values and\n * updating the DOM as necessary. This function is probably the single most\n * critical path for performance optimization.\n *\n * TODO: Benchmark whether checking for changed values in memory actually\n * improves performance (especially statically positioned elements).\n * TODO: Benchmark the effects of putting this at the top since 99% of props\n * do not change for a given reconciliation.\n * TODO: Benchmark areas that can be improved with caching.\n *\n * @private\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {?DOMElement} node\n */\n _updateDOMProperties: function (lastProps, nextProps, transaction) {\n var propKey;\n var styleName;\n var styleUpdates;\n for (propKey in lastProps) {\n if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n continue;\n }\n if (propKey === STYLE) {\n var lastStyle = this._previousStyleCopy;\n for (styleName in lastStyle) {\n if (lastStyle.hasOwnProperty(styleName)) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n this._previousStyleCopy = null;\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (lastProps[propKey]) {\n // Only call deleteListener if there was a listener previously or\n // else willDeleteListener gets called when there wasn't actually a\n // listener (e.g., onClick={null})\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, lastProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.deleteValueForAttribute(getNode(this), propKey);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n DOMPropertyOperations.deleteValueForProperty(getNode(this), propKey);\n }\n }\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var lastProp = propKey === STYLE ? this._previousStyleCopy : lastProps != null ? lastProps[propKey] : undefined;\n if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n continue;\n }\n if (propKey === STYLE) {\n if (nextProp) {\n if (process.env.NODE_ENV !== 'production') {\n checkAndWarnForMutatedStyle(this._previousStyleCopy, this._previousStyle, this);\n this._previousStyle = nextProp;\n }\n nextProp = this._previousStyleCopy = _assign({}, nextProp);\n } else {\n this._previousStyleCopy = null;\n }\n if (lastProp) {\n // Unset styles on `lastProp` but not on `nextProp`.\n for (styleName in lastProp) {\n if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n }\n // Update styles that changed since `lastProp`.\n for (styleName in nextProp) {\n if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Relies on `updateStylesByID` not mutating `styleUpdates`.\n styleUpdates = nextProp;\n }\n } else if (registrationNameModules.hasOwnProperty(propKey)) {\n if (nextProp) {\n enqueuePutListener(this, propKey, nextProp, transaction);\n } else if (lastProp) {\n deleteListener(this, propKey);\n }\n } else if (isCustomComponent(this._tag, nextProps)) {\n if (!RESERVED_PROPS.hasOwnProperty(propKey)) {\n DOMPropertyOperations.setValueForAttribute(getNode(this), propKey, nextProp);\n }\n } else if (DOMProperty.properties[propKey] || DOMProperty.isCustomAttribute(propKey)) {\n var node = getNode(this);\n // If we're updating to null or undefined, we should remove the property\n // from the DOM node instead of inadvertently setting to a string. This\n // brings us in line with the same behavior we have on initial render.\n if (nextProp != null) {\n DOMPropertyOperations.setValueForProperty(node, propKey, nextProp);\n } else {\n DOMPropertyOperations.deleteValueForProperty(node, propKey);\n }\n }\n }\n if (styleUpdates) {\n CSSPropertyOperations.setValueForStyles(getNode(this), styleUpdates, this);\n }\n },\n\n /**\n * Reconciles the children with the various properties that affect the\n * children content.\n *\n * @param {object} lastProps\n * @param {object} nextProps\n * @param {ReactReconcileTransaction} transaction\n * @param {object} context\n */\n _updateDOMChildren: function (lastProps, nextProps, transaction, context) {\n var lastContent = CONTENT_TYPES[typeof lastProps.children] ? lastProps.children : null;\n var nextContent = CONTENT_TYPES[typeof nextProps.children] ? nextProps.children : null;\n\n var lastHtml = lastProps.dangerouslySetInnerHTML && lastProps.dangerouslySetInnerHTML.__html;\n var nextHtml = nextProps.dangerouslySetInnerHTML && nextProps.dangerouslySetInnerHTML.__html;\n\n // Note the use of `!=` which checks for null or undefined.\n var lastChildren = lastContent != null ? null : lastProps.children;\n var nextChildren = nextContent != null ? null : nextProps.children;\n\n // If we're switching from children to content/html or vice versa, remove\n // the old content\n var lastHasContentOrHtml = lastContent != null || lastHtml != null;\n var nextHasContentOrHtml = nextContent != null || nextHtml != null;\n if (lastChildren != null && nextChildren == null) {\n this.updateChildren(null, transaction, context);\n } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {\n this.updateTextContent('');\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n }\n\n if (nextContent != null) {\n if (lastContent !== nextContent) {\n this.updateTextContent('' + nextContent);\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, nextContent);\n }\n }\n } else if (nextHtml != null) {\n if (lastHtml !== nextHtml) {\n this.updateMarkup('' + nextHtml);\n }\n if (process.env.NODE_ENV !== 'production') {\n ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);\n }\n } else if (nextChildren != null) {\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n\n this.updateChildren(nextChildren, transaction, context);\n }\n },\n\n getHostNode: function () {\n return getNode(this);\n },\n\n /**\n * Destroys all event registrations for this instance. Does not remove from\n * the DOM. That must be done by the parent.\n *\n * @internal\n */\n unmountComponent: function (safely) {\n switch (this._tag) {\n case 'audio':\n case 'form':\n case 'iframe':\n case 'img':\n case 'link':\n case 'object':\n case 'source':\n case 'video':\n var listeners = this._wrapperState.listeners;\n if (listeners) {\n for (var i = 0; i < listeners.length; i++) {\n listeners[i].remove();\n }\n }\n break;\n case 'html':\n case 'head':\n case 'body':\n /**\n * Components like <html> <head> and <body> can't be removed or added\n * easily in a cross-browser way, however it's valuable to be able to\n * take advantage of React's reconciliation for styling and <title>\n * management. So we just document it and throw in dangerous cases.\n */\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, '<%s> tried to unmount. Because of cross-browser quirks it is impossible to unmount some top-level components (eg <html>, <head>, and <body>) reliably and efficiently. To fix this, have a single top-level component that never unmounts render these elements.', this._tag) : _prodInvariant('66', this._tag) : void 0;\n break;\n }\n\n this.unmountChildren(safely);\n ReactDOMComponentTree.uncacheNode(this);\n EventPluginHub.deleteAllListeners(this);\n this._rootNodeID = 0;\n this._domID = 0;\n this._wrapperState = null;\n\n if (process.env.NODE_ENV !== 'production') {\n setAndValidateContentChildDev.call(this, null);\n }\n },\n\n getPublicInstance: function () {\n return getNode(this);\n }\n\n};\n\n_assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);\n\nmodule.exports = ReactDOMComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMComponent.js\n// module id = 289\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar validateDOMNesting = require('./validateDOMNesting');\n\nvar DOC_NODE_TYPE = 9;\n\nfunction ReactDOMContainerInfo(topLevelWrapper, node) {\n var info = {\n _topLevelWrapper: topLevelWrapper,\n _idCounter: 1,\n _ownerDocument: node ? node.nodeType === DOC_NODE_TYPE ? node : node.ownerDocument : null,\n _node: node,\n _tag: node ? node.nodeName.toLowerCase() : null,\n _namespaceURI: node ? node.namespaceURI : null\n };\n if (process.env.NODE_ENV !== 'production') {\n info._ancestorInfo = node ? validateDOMNesting.updatedAncestorInfo(null, info._tag, null) : null;\n }\n return info;\n}\n\nmodule.exports = ReactDOMContainerInfo;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMContainerInfo.js\n// module id = 290\n// module chunks = 0","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar ReactDOMEmptyComponent = function (instantiate) {\n // ReactCompositeComponent uses this:\n this._currentElement = null;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n this._hostContainerInfo = null;\n this._domID = 0;\n};\n_assign(ReactDOMEmptyComponent.prototype, {\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n var domID = hostContainerInfo._idCounter++;\n this._domID = domID;\n this._hostParent = hostParent;\n this._hostContainerInfo = hostContainerInfo;\n\n var nodeValue = ' react-empty: ' + this._domID + ' ';\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var node = ownerDocument.createComment(nodeValue);\n ReactDOMComponentTree.precacheNode(this, node);\n return DOMLazyTree(node);\n } else {\n if (transaction.renderToStaticMarkup) {\n // Normally we'd insert a comment node, but since this is a situation\n // where React won't take over (static pages), we can simply return\n // nothing.\n return '';\n }\n return '<!--' + nodeValue + '-->';\n }\n },\n receiveComponent: function () {},\n getHostNode: function () {\n return ReactDOMComponentTree.getNodeFromInstance(this);\n },\n unmountComponent: function () {\n ReactDOMComponentTree.uncacheNode(this);\n }\n});\n\nmodule.exports = ReactDOMEmptyComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMEmptyComponent.js\n// module id = 291\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactDOMFeatureFlags = {\n useCreateElement: true,\n useFiber: false\n};\n\nmodule.exports = ReactDOMFeatureFlags;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMFeatureFlags.js\n// module id = 292\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\n/**\n * Operations used to process updates to DOM nodes.\n */\nvar ReactDOMIDOperations = {\n\n /**\n * Updates a component's children by processing a series of updates.\n *\n * @param {array<object>} updates List of update configurations.\n * @internal\n */\n dangerouslyProcessChildrenUpdates: function (parentInst, updates) {\n var node = ReactDOMComponentTree.getNodeFromInstance(parentInst);\n DOMChildrenOperations.processUpdates(node, updates);\n }\n};\n\nmodule.exports = ReactDOMIDOperations;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMIDOperations.js\n// module id = 293\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMPropertyOperations = require('./DOMPropertyOperations');\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnCheckedLink = false;\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMInput.updateWrapper(this);\n }\n}\n\nfunction isControlled(props) {\n var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n return usesChecked ? props.checked != null : props.value != null;\n}\n\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * @see http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\nvar ReactDOMInput = {\n getHostProps: function (inst, props) {\n var value = LinkedValueUtils.getValue(props);\n var checked = LinkedValueUtils.getChecked(props);\n\n var hostProps = _assign({\n // Make sure we set .type before any other properties (setting .value\n // before .type means .value is lost in IE11 and below)\n type: undefined,\n // Make sure we set .step before .value (setting .value before .step\n // means .value is rounded on mount, based upon step precision)\n step: undefined,\n // Make sure we set .min & .max before .value (to ensure proper order\n // in corner cases such as min or max deriving from value, e.g. Issue #7170)\n min: undefined,\n max: undefined\n }, props, {\n defaultChecked: undefined,\n defaultValue: undefined,\n value: value != null ? value : inst._wrapperState.initialValue,\n checked: checked != null ? checked : inst._wrapperState.initialChecked,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);\n\n var owner = inst._currentElement._owner;\n\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.checkedLink !== undefined && !didWarnCheckedLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`checkedLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnCheckedLink = true;\n }\n if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnCheckedDefaultChecked = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnValueDefaultValue = true;\n }\n }\n\n var defaultValue = props.defaultValue;\n inst._wrapperState = {\n initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n initialValue: props.value != null ? props.value : defaultValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n\n if (process.env.NODE_ENV !== 'production') {\n inst._wrapperState.controlled = isControlled(props);\n }\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n if (process.env.NODE_ENV !== 'production') {\n var controlled = isControlled(props);\n var owner = inst._currentElement._owner;\n\n if (!inst._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnUncontrolledToControlled = true;\n }\n if (inst._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n process.env.NODE_ENV !== 'production' ? warning(false, '%s is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;\n didWarnControlledToUncontrolled = true;\n }\n }\n\n // TODO: Shouldn't this be getChecked(props)?\n var checked = props.checked;\n if (checked != null) {\n DOMPropertyOperations.setValueForProperty(ReactDOMComponentTree.getNodeFromInstance(inst), 'checked', checked || false);\n }\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n } else {\n if (props.value == null && props.defaultValue != null) {\n node.defaultValue = '' + props.defaultValue;\n }\n if (props.checked == null && props.defaultChecked != null) {\n node.defaultChecked = !!props.defaultChecked;\n }\n }\n },\n\n postMountWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Detach value from defaultValue. We won't do anything if we're working on\n // submit or reset inputs as those values & defaultValues are linked. They\n // are not resetable nodes so this operation doesn't matter and actually\n // removes browser-default values (eg \"Submit Query\") when no value is\n // provided.\n\n switch (props.type) {\n case 'submit':\n case 'reset':\n break;\n case 'color':\n case 'date':\n case 'datetime':\n case 'datetime-local':\n case 'month':\n case 'time':\n case 'week':\n // This fixes the no-show issue on iOS Safari and Android Chrome:\n // https://github.com/facebook/react/issues/7233\n node.value = '';\n node.value = node.defaultValue;\n break;\n default:\n node.value = node.value;\n break;\n }\n\n // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n // this is needed to work around a chrome bug where setting defaultChecked\n // will sometimes influence the value of checked (even after detachment).\n // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n // We need to temporarily unset name to avoid disrupting radio button groups.\n var name = node.name;\n if (name !== '') {\n node.name = '';\n }\n node.defaultChecked = !node.defaultChecked;\n node.defaultChecked = !node.defaultChecked;\n if (name !== '') {\n node.name = name;\n }\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n\n // Here we use asap to wait until all updates have propagated, which\n // is important when using controlled components within layers:\n // https://github.com/facebook/react/issues/1698\n ReactUpdates.asap(forceUpdateIfMounted, this);\n\n var name = props.name;\n if (props.type === 'radio' && name != null) {\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(this);\n var queryRoot = rootNode;\n\n while (queryRoot.parentNode) {\n queryRoot = queryRoot.parentNode;\n }\n\n // If `rootNode.form` was non-null, then we could try `form.elements`,\n // but that sometimes behaves strangely in IE8. We could also try using\n // `form.getElementsByName`, but that will only return direct children\n // and won't include inputs that use the HTML5 `form=` attribute. Since\n // the input might not even be in a form, let's just use the global\n // `querySelectorAll` to ensure we don't miss anything.\n var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n for (var i = 0; i < group.length; i++) {\n var otherNode = group[i];\n if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n continue;\n }\n // This will throw if radio buttons rendered by different copies of React\n // and the same name are rendered into the same form (same as #1939).\n // That's probably okay; we don't support it just as we don't support\n // mixing React radio buttons with non-React ones.\n var otherInstance = ReactDOMComponentTree.getInstanceFromNode(otherNode);\n !otherInstance ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : _prodInvariant('90') : void 0;\n // If this is a controlled radio button group, forcing the input that\n // was previously checked to update will cause it to be come re-checked\n // as appropriate.\n ReactUpdates.asap(forceUpdateIfMounted, otherInstance);\n }\n }\n\n return returnValue;\n}\n\nmodule.exports = ReactDOMInput;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMInput.js\n// module id = 294\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar React = require('react/lib/React');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMSelect = require('./ReactDOMSelect');\n\nvar warning = require('fbjs/lib/warning');\nvar didWarnInvalidOptionChildren = false;\n\nfunction flattenChildren(children) {\n var content = '';\n\n // Flatten children and warn if they aren't strings or numbers;\n // invalid types are ignored.\n React.Children.forEach(children, function (child) {\n if (child == null) {\n return;\n }\n if (typeof child === 'string' || typeof child === 'number') {\n content += child;\n } else if (!didWarnInvalidOptionChildren) {\n didWarnInvalidOptionChildren = true;\n process.env.NODE_ENV !== 'production' ? warning(false, 'Only strings and numbers are supported as <option> children.') : void 0;\n }\n });\n\n return content;\n}\n\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\nvar ReactDOMOption = {\n mountWrapper: function (inst, props, hostParent) {\n // TODO (yungsters): Remove support for `selected` in <option>.\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.') : void 0;\n }\n\n // Look up whether this option is 'selected'\n var selectValue = null;\n if (hostParent != null) {\n var selectParent = hostParent;\n\n if (selectParent._tag === 'optgroup') {\n selectParent = selectParent._hostParent;\n }\n\n if (selectParent != null && selectParent._tag === 'select') {\n selectValue = ReactDOMSelect.getSelectValueContext(selectParent);\n }\n }\n\n // If the value is null (e.g., no specified value or after initial mount)\n // or missing (e.g., for <datalist>), we don't change props.selected\n var selected = null;\n if (selectValue != null) {\n var value;\n if (props.value != null) {\n value = props.value + '';\n } else {\n value = flattenChildren(props.children);\n }\n selected = false;\n if (Array.isArray(selectValue)) {\n // multiple\n for (var i = 0; i < selectValue.length; i++) {\n if ('' + selectValue[i] === value) {\n selected = true;\n break;\n }\n }\n } else {\n selected = '' + selectValue === value;\n }\n }\n\n inst._wrapperState = { selected: selected };\n },\n\n postMountWrapper: function (inst) {\n // value=\"\" should make a value attribute (#6219)\n var props = inst._currentElement.props;\n if (props.value != null) {\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n node.setAttribute('value', props.value);\n }\n },\n\n getHostProps: function (inst, props) {\n var hostProps = _assign({ selected: undefined, children: undefined }, props);\n\n // Read state only from initial mount because <select> updates value\n // manually; we need the initial state only for server rendering\n if (inst._wrapperState.selected != null) {\n hostProps.selected = inst._wrapperState.selected;\n }\n\n var content = flattenChildren(props.children);\n\n if (content) {\n hostProps.children = content;\n }\n\n return hostProps;\n }\n\n};\n\nmodule.exports = ReactDOMOption;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMOption.js\n// module id = 295\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\nvar getNodeForCharacterOffset = require('./getNodeForCharacterOffset');\nvar getTextContentAccessor = require('./getTextContentAccessor');\n\n/**\n * While `isCollapsed` is available on the Selection object and `collapsed`\n * is available on the Range object, IE11 sometimes gets them wrong.\n * If the anchor/focus nodes and offsets are the same, the range is collapsed.\n */\nfunction isCollapsed(anchorNode, anchorOffset, focusNode, focusOffset) {\n return anchorNode === focusNode && anchorOffset === focusOffset;\n}\n\n/**\n * Get the appropriate anchor and focus node/offset pairs for IE.\n *\n * The catch here is that IE's selection API doesn't provide information\n * about whether the selection is forward or backward, so we have to\n * behave as though it's always forward.\n *\n * IE text differs from modern selection in that it behaves as though\n * block elements end with a new line. This means character offsets will\n * differ between the two APIs.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getIEOffsets(node) {\n var selection = document.selection;\n var selectedRange = selection.createRange();\n var selectedLength = selectedRange.text.length;\n\n // Duplicate selection so we can move range without breaking user selection.\n var fromStart = selectedRange.duplicate();\n fromStart.moveToElementText(node);\n fromStart.setEndPoint('EndToStart', selectedRange);\n\n var startOffset = fromStart.text.length;\n var endOffset = startOffset + selectedLength;\n\n return {\n start: startOffset,\n end: endOffset\n };\n}\n\n/**\n * @param {DOMElement} node\n * @return {?object}\n */\nfunction getModernOffsets(node) {\n var selection = window.getSelection && window.getSelection();\n\n if (!selection || selection.rangeCount === 0) {\n return null;\n }\n\n var anchorNode = selection.anchorNode;\n var anchorOffset = selection.anchorOffset;\n var focusNode = selection.focusNode;\n var focusOffset = selection.focusOffset;\n\n var currentRange = selection.getRangeAt(0);\n\n // In Firefox, range.startContainer and range.endContainer can be \"anonymous\n // divs\", e.g. the up/down buttons on an <input type=\"number\">. Anonymous\n // divs do not seem to expose properties, triggering a \"Permission denied\n // error\" if any of its properties are accessed. The only seemingly possible\n // way to avoid erroring is to access a property that typically works for\n // non-anonymous divs and catch any error that may otherwise arise. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n try {\n /* eslint-disable no-unused-expressions */\n currentRange.startContainer.nodeType;\n currentRange.endContainer.nodeType;\n /* eslint-enable no-unused-expressions */\n } catch (e) {\n return null;\n }\n\n // If the node and offset values are the same, the selection is collapsed.\n // `Selection.isCollapsed` is available natively, but IE sometimes gets\n // this value wrong.\n var isSelectionCollapsed = isCollapsed(selection.anchorNode, selection.anchorOffset, selection.focusNode, selection.focusOffset);\n\n var rangeLength = isSelectionCollapsed ? 0 : currentRange.toString().length;\n\n var tempRange = currentRange.cloneRange();\n tempRange.selectNodeContents(node);\n tempRange.setEnd(currentRange.startContainer, currentRange.startOffset);\n\n var isTempRangeCollapsed = isCollapsed(tempRange.startContainer, tempRange.startOffset, tempRange.endContainer, tempRange.endOffset);\n\n var start = isTempRangeCollapsed ? 0 : tempRange.toString().length;\n var end = start + rangeLength;\n\n // Detect whether the selection is backward.\n var detectionRange = document.createRange();\n detectionRange.setStart(anchorNode, anchorOffset);\n detectionRange.setEnd(focusNode, focusOffset);\n var isBackward = detectionRange.collapsed;\n\n return {\n start: isBackward ? end : start,\n end: isBackward ? start : end\n };\n}\n\n/**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setIEOffsets(node, offsets) {\n var range = document.selection.createRange().duplicate();\n var start, end;\n\n if (offsets.end === undefined) {\n start = offsets.start;\n end = start;\n } else if (offsets.start > offsets.end) {\n start = offsets.end;\n end = offsets.start;\n } else {\n start = offsets.start;\n end = offsets.end;\n }\n\n range.moveToElementText(node);\n range.moveStart('character', start);\n range.setEndPoint('EndToStart', range);\n range.moveEnd('character', end - start);\n range.select();\n}\n\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\nfunction setModernOffsets(node, offsets) {\n if (!window.getSelection) {\n return;\n }\n\n var selection = window.getSelection();\n var length = node[getTextContentAccessor()].length;\n var start = Math.min(offsets.start, length);\n var end = offsets.end === undefined ? start : Math.min(offsets.end, length);\n\n // IE 11 uses modern selection, but doesn't support the extend method.\n // Flip backward selections, so we can set with a single range.\n if (!selection.extend && start > end) {\n var temp = end;\n end = start;\n start = temp;\n }\n\n var startMarker = getNodeForCharacterOffset(node, start);\n var endMarker = getNodeForCharacterOffset(node, end);\n\n if (startMarker && endMarker) {\n var range = document.createRange();\n range.setStart(startMarker.node, startMarker.offset);\n selection.removeAllRanges();\n\n if (start > end) {\n selection.addRange(range);\n selection.extend(endMarker.node, endMarker.offset);\n } else {\n range.setEnd(endMarker.node, endMarker.offset);\n selection.addRange(range);\n }\n }\n}\n\nvar useIEOffsets = ExecutionEnvironment.canUseDOM && 'selection' in document && !('getSelection' in window);\n\nvar ReactDOMSelection = {\n /**\n * @param {DOMElement} node\n */\n getOffsets: useIEOffsets ? getIEOffsets : getModernOffsets,\n\n /**\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n setOffsets: useIEOffsets ? setIEOffsets : setModernOffsets\n};\n\nmodule.exports = ReactDOMSelection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMSelection.js\n// module id = 296\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar DOMChildrenOperations = require('./DOMChildrenOperations');\nvar DOMLazyTree = require('./DOMLazyTree');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\nvar invariant = require('fbjs/lib/invariant');\nvar validateDOMNesting = require('./validateDOMNesting');\n\n/**\n * Text nodes violate a couple assumptions that React makes about components:\n *\n * - When mounting text into the DOM, adjacent text nodes are merged.\n * - Text nodes cannot be assigned a React root ID.\n *\n * This component is used to wrap strings between comment nodes so that they\n * can undergo the same reconciliation that is applied to elements.\n *\n * TODO: Investigate representing React components in the DOM with text nodes.\n *\n * @class ReactDOMTextComponent\n * @extends ReactComponent\n * @internal\n */\nvar ReactDOMTextComponent = function (text) {\n // TODO: This is really a ReactText (ReactNode), not a ReactElement\n this._currentElement = text;\n this._stringText = '' + text;\n // ReactDOMComponentTree uses these:\n this._hostNode = null;\n this._hostParent = null;\n\n // Properties\n this._domID = 0;\n this._mountIndex = 0;\n this._closingComment = null;\n this._commentNodes = null;\n};\n\n_assign(ReactDOMTextComponent.prototype, {\n\n /**\n * Creates the markup for this text node. This node is not intended to have\n * any features besides containing text content.\n *\n * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction\n * @return {string} Markup for this text node.\n * @internal\n */\n mountComponent: function (transaction, hostParent, hostContainerInfo, context) {\n if (process.env.NODE_ENV !== 'production') {\n var parentInfo;\n if (hostParent != null) {\n parentInfo = hostParent._ancestorInfo;\n } else if (hostContainerInfo != null) {\n parentInfo = hostContainerInfo._ancestorInfo;\n }\n if (parentInfo) {\n // parentInfo should always be present except for the top-level\n // component when server rendering\n validateDOMNesting(null, this._stringText, this, parentInfo);\n }\n }\n\n var domID = hostContainerInfo._idCounter++;\n var openingValue = ' react-text: ' + domID + ' ';\n var closingValue = ' /react-text ';\n this._domID = domID;\n this._hostParent = hostParent;\n if (transaction.useCreateElement) {\n var ownerDocument = hostContainerInfo._ownerDocument;\n var openingComment = ownerDocument.createComment(openingValue);\n var closingComment = ownerDocument.createComment(closingValue);\n var lazyTree = DOMLazyTree(ownerDocument.createDocumentFragment());\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(openingComment));\n if (this._stringText) {\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(ownerDocument.createTextNode(this._stringText)));\n }\n DOMLazyTree.queueChild(lazyTree, DOMLazyTree(closingComment));\n ReactDOMComponentTree.precacheNode(this, openingComment);\n this._closingComment = closingComment;\n return lazyTree;\n } else {\n var escapedText = escapeTextContentForBrowser(this._stringText);\n\n if (transaction.renderToStaticMarkup) {\n // Normally we'd wrap this between comment nodes for the reasons stated\n // above, but since this is a situation where React won't take over\n // (static pages), we can simply return the text as it is.\n return escapedText;\n }\n\n return '<!--' + openingValue + '-->' + escapedText + '<!--' + closingValue + '-->';\n }\n },\n\n /**\n * Updates this component by updating the text content.\n *\n * @param {ReactText} nextText The next text content\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n receiveComponent: function (nextText, transaction) {\n if (nextText !== this._currentElement) {\n this._currentElement = nextText;\n var nextStringText = '' + nextText;\n if (nextStringText !== this._stringText) {\n // TODO: Save this as pending props and use performUpdateIfNecessary\n // and/or updateComponent to do the actual update for consistency with\n // other component types?\n this._stringText = nextStringText;\n var commentNodes = this.getHostNode();\n DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);\n }\n }\n },\n\n getHostNode: function () {\n var hostNode = this._commentNodes;\n if (hostNode) {\n return hostNode;\n }\n if (!this._closingComment) {\n var openingComment = ReactDOMComponentTree.getNodeFromInstance(this);\n var node = openingComment.nextSibling;\n while (true) {\n !(node != null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Missing closing comment for text component %s', this._domID) : _prodInvariant('67', this._domID) : void 0;\n if (node.nodeType === 8 && node.nodeValue === ' /react-text ') {\n this._closingComment = node;\n break;\n }\n node = node.nextSibling;\n }\n }\n hostNode = [this._hostNode, this._closingComment];\n this._commentNodes = hostNode;\n return hostNode;\n },\n\n unmountComponent: function () {\n this._closingComment = null;\n this._commentNodes = null;\n ReactDOMComponentTree.uncacheNode(this);\n }\n\n});\n\nmodule.exports = ReactDOMTextComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMTextComponent.js\n// module id = 297\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar LinkedValueUtils = require('./LinkedValueUtils');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar didWarnValueLink = false;\nvar didWarnValDefaultVal = false;\n\nfunction forceUpdateIfMounted() {\n if (this._rootNodeID) {\n // DOM component is still mounted; update\n ReactDOMTextarea.updateWrapper(this);\n }\n}\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nvar ReactDOMTextarea = {\n getHostProps: function (inst, props) {\n !(props.dangerouslySetInnerHTML == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : _prodInvariant('91') : void 0;\n\n // Always set children to the same thing. In IE9, the selection range will\n // get reset if `textContent` is mutated. We could add a check in setTextContent\n // to only set the value if/when the value differs from the node value (which would\n // completely solve this IE9 bug), but Sebastian+Ben seemed to like this solution.\n // The value can be a boolean or object so that's why it's forced to be a string.\n var hostProps = _assign({}, props, {\n value: undefined,\n defaultValue: undefined,\n children: '' + inst._wrapperState.initialValue,\n onChange: inst._wrapperState.onChange\n });\n\n return hostProps;\n },\n\n mountWrapper: function (inst, props) {\n if (process.env.NODE_ENV !== 'production') {\n LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);\n if (props.valueLink !== undefined && !didWarnValueLink) {\n process.env.NODE_ENV !== 'production' ? warning(false, '`valueLink` prop on `textarea` is deprecated; set `value` and `onChange` instead.') : void 0;\n didWarnValueLink = true;\n }\n if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;\n didWarnValDefaultVal = true;\n }\n }\n\n var value = LinkedValueUtils.getValue(props);\n var initialValue = value;\n\n // Only bother fetching default value if we're going to use it\n if (value == null) {\n var defaultValue = props.defaultValue;\n // TODO (yungsters): Remove support for children content in <textarea>.\n var children = props.children;\n if (children != null) {\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.') : void 0;\n }\n !(defaultValue == null) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : _prodInvariant('92') : void 0;\n if (Array.isArray(children)) {\n !(children.length <= 1) ? process.env.NODE_ENV !== 'production' ? invariant(false, '<textarea> can only have at most one child.') : _prodInvariant('93') : void 0;\n children = children[0];\n }\n\n defaultValue = '' + children;\n }\n if (defaultValue == null) {\n defaultValue = '';\n }\n initialValue = defaultValue;\n }\n\n inst._wrapperState = {\n initialValue: '' + initialValue,\n listeners: null,\n onChange: _handleChange.bind(inst)\n };\n },\n\n updateWrapper: function (inst) {\n var props = inst._currentElement.props;\n\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n var value = LinkedValueUtils.getValue(props);\n if (value != null) {\n // Cast `value` to a string to ensure the value is set correctly. While\n // browsers typically do this as necessary, jsdom doesn't.\n var newValue = '' + value;\n\n // To avoid side effects (such as losing text selection), only set value if changed\n if (newValue !== node.value) {\n node.value = newValue;\n }\n if (props.defaultValue == null) {\n node.defaultValue = newValue;\n }\n }\n if (props.defaultValue != null) {\n node.defaultValue = props.defaultValue;\n }\n },\n\n postMountWrapper: function (inst) {\n // This is in postMount because we need access to the DOM node, which is not\n // available until after the component has mounted.\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n\n // Warning: node.value may be the empty string at this point (IE11) if placeholder is set.\n node.value = node.textContent; // Detach value from defaultValue\n }\n};\n\nfunction _handleChange(event) {\n var props = this._currentElement.props;\n var returnValue = LinkedValueUtils.executeOnChange(props, event);\n ReactUpdates.asap(forceUpdateIfMounted, this);\n return returnValue;\n}\n\nmodule.exports = ReactDOMTextarea;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMTextarea.js\n// module id = 298\n// module chunks = 0","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\nfunction getLowestCommonAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getNodeFromInstance: Invalid argument.') : _prodInvariant('33') : void 0;\n\n var depthA = 0;\n for (var tempA = instA; tempA; tempA = tempA._hostParent) {\n depthA++;\n }\n var depthB = 0;\n for (var tempB = instB; tempB; tempB = tempB._hostParent) {\n depthB++;\n }\n\n // If A is deeper, crawl up.\n while (depthA - depthB > 0) {\n instA = instA._hostParent;\n depthA--;\n }\n\n // If B is deeper, crawl up.\n while (depthB - depthA > 0) {\n instB = instB._hostParent;\n depthB--;\n }\n\n // Walk in lockstep until we find a match.\n var depth = depthA;\n while (depth--) {\n if (instA === instB) {\n return instA;\n }\n instA = instA._hostParent;\n instB = instB._hostParent;\n }\n return null;\n}\n\n/**\n * Return if A is an ancestor of B.\n */\nfunction isAncestor(instA, instB) {\n !('_hostNode' in instA) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n !('_hostNode' in instB) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isAncestor: Invalid argument.') : _prodInvariant('35') : void 0;\n\n while (instB) {\n if (instB === instA) {\n return true;\n }\n instB = instB._hostParent;\n }\n return false;\n}\n\n/**\n * Return the parent instance of the passed-in instance.\n */\nfunction getParentInstance(inst) {\n !('_hostNode' in inst) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'getParentInstance: Invalid argument.') : _prodInvariant('36') : void 0;\n\n return inst._hostParent;\n}\n\n/**\n * Simulates the traversal of a two-phase, capture/bubble event dispatch.\n */\nfunction traverseTwoPhase(inst, fn, arg) {\n var path = [];\n while (inst) {\n path.push(inst);\n inst = inst._hostParent;\n }\n var i;\n for (i = path.length; i-- > 0;) {\n fn(path[i], 'captured', arg);\n }\n for (i = 0; i < path.length; i++) {\n fn(path[i], 'bubbled', arg);\n }\n}\n\n/**\n * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that\n * should would receive a `mouseEnter` or `mouseLeave` event.\n *\n * Does not invoke the callback on the nearest common ancestor because nothing\n * \"entered\" or \"left\" that element.\n */\nfunction traverseEnterLeave(from, to, fn, argFrom, argTo) {\n var common = from && to ? getLowestCommonAncestor(from, to) : null;\n var pathFrom = [];\n while (from && from !== common) {\n pathFrom.push(from);\n from = from._hostParent;\n }\n var pathTo = [];\n while (to && to !== common) {\n pathTo.push(to);\n to = to._hostParent;\n }\n var i;\n for (i = 0; i < pathFrom.length; i++) {\n fn(pathFrom[i], 'bubbled', argFrom);\n }\n for (i = pathTo.length; i-- > 0;) {\n fn(pathTo[i], 'captured', argTo);\n }\n}\n\nmodule.exports = {\n isAncestor: isAncestor,\n getLowestCommonAncestor: getLowestCommonAncestor,\n getParentInstance: getParentInstance,\n traverseTwoPhase: traverseTwoPhase,\n traverseEnterLeave: traverseEnterLeave\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDOMTreeTraversal.js\n// module id = 299\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactUpdates = require('./ReactUpdates');\nvar Transaction = require('./Transaction');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\n\nvar RESET_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: function () {\n ReactDefaultBatchingStrategy.isBatchingUpdates = false;\n }\n};\n\nvar FLUSH_BATCHED_UPDATES = {\n initialize: emptyFunction,\n close: ReactUpdates.flushBatchedUpdates.bind(ReactUpdates)\n};\n\nvar TRANSACTION_WRAPPERS = [FLUSH_BATCHED_UPDATES, RESET_BATCHED_UPDATES];\n\nfunction ReactDefaultBatchingStrategyTransaction() {\n this.reinitializeTransaction();\n}\n\n_assign(ReactDefaultBatchingStrategyTransaction.prototype, Transaction, {\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n }\n});\n\nvar transaction = new ReactDefaultBatchingStrategyTransaction();\n\nvar ReactDefaultBatchingStrategy = {\n isBatchingUpdates: false,\n\n /**\n * Call the provided function in a context within which calls to `setState`\n * and friends are batched such that components aren't updated unnecessarily.\n */\n batchedUpdates: function (callback, a, b, c, d, e) {\n var alreadyBatchingUpdates = ReactDefaultBatchingStrategy.isBatchingUpdates;\n\n ReactDefaultBatchingStrategy.isBatchingUpdates = true;\n\n // The code is written this way to avoid extra allocations\n if (alreadyBatchingUpdates) {\n return callback(a, b, c, d, e);\n } else {\n return transaction.perform(callback, null, a, b, c, d, e);\n }\n }\n};\n\nmodule.exports = ReactDefaultBatchingStrategy;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDefaultBatchingStrategy.js\n// module id = 300\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ARIADOMPropertyConfig = require('./ARIADOMPropertyConfig');\nvar BeforeInputEventPlugin = require('./BeforeInputEventPlugin');\nvar ChangeEventPlugin = require('./ChangeEventPlugin');\nvar DefaultEventPluginOrder = require('./DefaultEventPluginOrder');\nvar EnterLeaveEventPlugin = require('./EnterLeaveEventPlugin');\nvar HTMLDOMPropertyConfig = require('./HTMLDOMPropertyConfig');\nvar ReactComponentBrowserEnvironment = require('./ReactComponentBrowserEnvironment');\nvar ReactDOMComponent = require('./ReactDOMComponent');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactDOMEmptyComponent = require('./ReactDOMEmptyComponent');\nvar ReactDOMTreeTraversal = require('./ReactDOMTreeTraversal');\nvar ReactDOMTextComponent = require('./ReactDOMTextComponent');\nvar ReactDefaultBatchingStrategy = require('./ReactDefaultBatchingStrategy');\nvar ReactEventListener = require('./ReactEventListener');\nvar ReactInjection = require('./ReactInjection');\nvar ReactReconcileTransaction = require('./ReactReconcileTransaction');\nvar SVGDOMPropertyConfig = require('./SVGDOMPropertyConfig');\nvar SelectEventPlugin = require('./SelectEventPlugin');\nvar SimpleEventPlugin = require('./SimpleEventPlugin');\n\nvar alreadyInjected = false;\n\nfunction inject() {\n if (alreadyInjected) {\n // TODO: This is currently true because these injections are shared between\n // the client and the server package. They should be built independently\n // and not share any injection state. Then this problem will be solved.\n return;\n }\n alreadyInjected = true;\n\n ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);\n\n /**\n * Inject modules for resolving DOM hierarchy and plugin ordering.\n */\n ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);\n ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);\n ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);\n\n /**\n * Some important event plugins included by default (without having to require\n * them).\n */\n ReactInjection.EventPluginHub.injectEventPluginsByName({\n SimpleEventPlugin: SimpleEventPlugin,\n EnterLeaveEventPlugin: EnterLeaveEventPlugin,\n ChangeEventPlugin: ChangeEventPlugin,\n SelectEventPlugin: SelectEventPlugin,\n BeforeInputEventPlugin: BeforeInputEventPlugin\n });\n\n ReactInjection.HostComponent.injectGenericComponentClass(ReactDOMComponent);\n\n ReactInjection.HostComponent.injectTextComponentClass(ReactDOMTextComponent);\n\n ReactInjection.DOMProperty.injectDOMPropertyConfig(ARIADOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);\n ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);\n\n ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {\n return new ReactDOMEmptyComponent(instantiate);\n });\n\n ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);\n ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);\n\n ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);\n}\n\nmodule.exports = {\n inject: inject\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactDefaultInjection.js\n// module id = 301\n// module chunks = 0","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n// The Symbol used to tag the ReactElement type. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\n\nvar REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\nmodule.exports = REACT_ELEMENT_TYPE;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactElementSymbol.js\n// module id = 302\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPluginHub = require('./EventPluginHub');\n\nfunction runEventQueueInBatch(events) {\n EventPluginHub.enqueueEvents(events);\n EventPluginHub.processEventQueue(false);\n}\n\nvar ReactEventEmitterMixin = {\n\n /**\n * Streams a fired top-level event to `EventPluginHub` where plugins have the\n * opportunity to create `ReactEvent`s to be dispatched.\n */\n handleTopLevel: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var events = EventPluginHub.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget);\n runEventQueueInBatch(events);\n }\n};\n\nmodule.exports = ReactEventEmitterMixin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactEventEmitterMixin.js\n// module id = 303\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar PooledClass = require('./PooledClass');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar getEventTarget = require('./getEventTarget');\nvar getUnboundedScrollPosition = require('fbjs/lib/getUnboundedScrollPosition');\n\n/**\n * Find the deepest React component completely containing the root of the\n * passed-in instance (for use when entire React trees are nested within each\n * other). If React trees are not nested, returns null.\n */\nfunction findParent(inst) {\n // TODO: It may be a good idea to cache this to prevent unnecessary DOM\n // traversal, but caching is difficult to do correctly without using a\n // mutation observer to listen for all DOM changes.\n while (inst._hostParent) {\n inst = inst._hostParent;\n }\n var rootNode = ReactDOMComponentTree.getNodeFromInstance(inst);\n var container = rootNode.parentNode;\n return ReactDOMComponentTree.getClosestInstanceFromNode(container);\n}\n\n// Used to store ancestor hierarchy in top level callback\nfunction TopLevelCallbackBookKeeping(topLevelType, nativeEvent) {\n this.topLevelType = topLevelType;\n this.nativeEvent = nativeEvent;\n this.ancestors = [];\n}\n_assign(TopLevelCallbackBookKeeping.prototype, {\n destructor: function () {\n this.topLevelType = null;\n this.nativeEvent = null;\n this.ancestors.length = 0;\n }\n});\nPooledClass.addPoolingTo(TopLevelCallbackBookKeeping, PooledClass.twoArgumentPooler);\n\nfunction handleTopLevelImpl(bookKeeping) {\n var nativeEventTarget = getEventTarget(bookKeeping.nativeEvent);\n var targetInst = ReactDOMComponentTree.getClosestInstanceFromNode(nativeEventTarget);\n\n // Loop through the hierarchy, in case there's any nested components.\n // It's important that we build the array of ancestors before calling any\n // event handlers, because event handlers can modify the DOM, leading to\n // inconsistencies with ReactMount's node cache. See #1105.\n var ancestor = targetInst;\n do {\n bookKeeping.ancestors.push(ancestor);\n ancestor = ancestor && findParent(ancestor);\n } while (ancestor);\n\n for (var i = 0; i < bookKeeping.ancestors.length; i++) {\n targetInst = bookKeeping.ancestors[i];\n ReactEventListener._handleTopLevel(bookKeeping.topLevelType, targetInst, bookKeeping.nativeEvent, getEventTarget(bookKeeping.nativeEvent));\n }\n}\n\nfunction scrollValueMonitor(cb) {\n var scrollPosition = getUnboundedScrollPosition(window);\n cb(scrollPosition);\n}\n\nvar ReactEventListener = {\n _enabled: true,\n _handleTopLevel: null,\n\n WINDOW_HANDLE: ExecutionEnvironment.canUseDOM ? window : null,\n\n setHandleTopLevel: function (handleTopLevel) {\n ReactEventListener._handleTopLevel = handleTopLevel;\n },\n\n setEnabled: function (enabled) {\n ReactEventListener._enabled = !!enabled;\n },\n\n isEnabled: function () {\n return ReactEventListener._enabled;\n },\n\n /**\n * Traps top-level events by using event bubbling.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapBubbledEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.listen(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n /**\n * Traps a top-level event by using event capturing.\n *\n * @param {string} topLevelType Record from `EventConstants`.\n * @param {string} handlerBaseName Event name (e.g. \"click\").\n * @param {object} element Element on which to attach listener.\n * @return {?object} An object with a remove function which will forcefully\n * remove the listener.\n * @internal\n */\n trapCapturedEvent: function (topLevelType, handlerBaseName, element) {\n if (!element) {\n return null;\n }\n return EventListener.capture(element, handlerBaseName, ReactEventListener.dispatchEvent.bind(null, topLevelType));\n },\n\n monitorScrollValue: function (refresh) {\n var callback = scrollValueMonitor.bind(null, refresh);\n EventListener.listen(window, 'scroll', callback);\n },\n\n dispatchEvent: function (topLevelType, nativeEvent) {\n if (!ReactEventListener._enabled) {\n return;\n }\n\n var bookKeeping = TopLevelCallbackBookKeeping.getPooled(topLevelType, nativeEvent);\n try {\n // Event queue being processed in the same cycle allows\n // `preventDefault`.\n ReactUpdates.batchedUpdates(handleTopLevelImpl, bookKeeping);\n } finally {\n TopLevelCallbackBookKeeping.release(bookKeeping);\n }\n }\n};\n\nmodule.exports = ReactEventListener;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactEventListener.js\n// module id = 304\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar DOMProperty = require('./DOMProperty');\nvar EventPluginHub = require('./EventPluginHub');\nvar EventPluginUtils = require('./EventPluginUtils');\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactEmptyComponent = require('./ReactEmptyComponent');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactHostComponent = require('./ReactHostComponent');\nvar ReactUpdates = require('./ReactUpdates');\n\nvar ReactInjection = {\n Component: ReactComponentEnvironment.injection,\n DOMProperty: DOMProperty.injection,\n EmptyComponent: ReactEmptyComponent.injection,\n EventPluginHub: EventPluginHub.injection,\n EventPluginUtils: EventPluginUtils.injection,\n EventEmitter: ReactBrowserEventEmitter.injection,\n HostComponent: ReactHostComponent.injection,\n Updates: ReactUpdates.injection\n};\n\nmodule.exports = ReactInjection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactInjection.js\n// module id = 305\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar adler32 = require('./adler32');\n\nvar TAG_END = /\\/?>/;\nvar COMMENT_START = /^<\\!\\-\\-/;\n\nvar ReactMarkupChecksum = {\n CHECKSUM_ATTR_NAME: 'data-react-checksum',\n\n /**\n * @param {string} markup Markup string\n * @return {string} Markup string with checksum attribute attached\n */\n addChecksumToMarkup: function (markup) {\n var checksum = adler32(markup);\n\n // Add checksum (handle both parent tags, comments and self-closing tags)\n if (COMMENT_START.test(markup)) {\n return markup;\n } else {\n return markup.replace(TAG_END, ' ' + ReactMarkupChecksum.CHECKSUM_ATTR_NAME + '=\"' + checksum + '\"$&');\n }\n },\n\n /**\n * @param {string} markup to use\n * @param {DOMElement} element root React element\n * @returns {boolean} whether or not the markup is the same\n */\n canReuseMarkup: function (markup, element) {\n var existingChecksum = element.getAttribute(ReactMarkupChecksum.CHECKSUM_ATTR_NAME);\n existingChecksum = existingChecksum && parseInt(existingChecksum, 10);\n var markupChecksum = adler32(markup);\n return markupChecksum === existingChecksum;\n }\n};\n\nmodule.exports = ReactMarkupChecksum;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactMarkupChecksum.js\n// module id = 306\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactComponentEnvironment = require('./ReactComponentEnvironment');\nvar ReactInstanceMap = require('./ReactInstanceMap');\nvar ReactInstrumentation = require('./ReactInstrumentation');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactReconciler = require('./ReactReconciler');\nvar ReactChildReconciler = require('./ReactChildReconciler');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar flattenChildren = require('./flattenChildren');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Make an update for markup to be rendered and inserted at a supplied index.\n *\n * @param {string} markup Markup that renders into an element.\n * @param {number} toIndex Destination index.\n * @private\n */\nfunction makeInsertMarkup(markup, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'INSERT_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for moving an existing element to another index.\n *\n * @param {number} fromIndex Source index of the existing element.\n * @param {number} toIndex Destination index of the element.\n * @private\n */\nfunction makeMove(child, afterNode, toIndex) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'MOVE_EXISTING',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: ReactReconciler.getHostNode(child),\n toIndex: toIndex,\n afterNode: afterNode\n };\n}\n\n/**\n * Make an update for removing an element at an index.\n *\n * @param {number} fromIndex Index of the element to remove.\n * @private\n */\nfunction makeRemove(child, node) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'REMOVE_NODE',\n content: null,\n fromIndex: child._mountIndex,\n fromNode: node,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the markup of a node.\n *\n * @param {string} markup Markup that renders into an element.\n * @private\n */\nfunction makeSetMarkup(markup) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'SET_MARKUP',\n content: markup,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Make an update for setting the text content.\n *\n * @param {string} textContent Text content to set.\n * @private\n */\nfunction makeTextContent(textContent) {\n // NOTE: Null values reduce hidden classes.\n return {\n type: 'TEXT_CONTENT',\n content: textContent,\n fromIndex: null,\n fromNode: null,\n toIndex: null,\n afterNode: null\n };\n}\n\n/**\n * Push an update, if any, onto the queue. Creates a new queue if none is\n * passed and always returns the queue. Mutative.\n */\nfunction enqueue(queue, update) {\n if (update) {\n queue = queue || [];\n queue.push(update);\n }\n return queue;\n}\n\n/**\n * Processes any enqueued updates.\n *\n * @private\n */\nfunction processQueue(inst, updateQueue) {\n ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);\n}\n\nvar setChildrenForInstrumentation = emptyFunction;\nif (process.env.NODE_ENV !== 'production') {\n var getDebugID = function (inst) {\n if (!inst._debugID) {\n // Check for ART-like instances. TODO: This is silly/gross.\n var internal;\n if (internal = ReactInstanceMap.get(inst)) {\n inst = internal;\n }\n }\n return inst._debugID;\n };\n setChildrenForInstrumentation = function (children) {\n var debugID = getDebugID(this);\n // TODO: React Native empty components are also multichild.\n // This means they still get into this method but don't have _debugID.\n if (debugID !== 0) {\n ReactInstrumentation.debugTool.onSetChildren(debugID, children ? Object.keys(children).map(function (key) {\n return children[key]._debugID;\n }) : []);\n }\n };\n}\n\n/**\n * ReactMultiChild are capable of reconciling multiple children.\n *\n * @class ReactMultiChild\n * @internal\n */\nvar ReactMultiChild = {\n\n /**\n * Provides common functionality for components that must reconcile multiple\n * children. This is used by `ReactDOMComponent` to mount, update, and\n * unmount child components.\n *\n * @lends {ReactMultiChild.prototype}\n */\n Mixin: {\n\n _reconcilerInstantiateChildren: function (nestedChildren, transaction, context) {\n if (process.env.NODE_ENV !== 'production') {\n var selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n }\n }\n return ReactChildReconciler.instantiateChildren(nestedChildren, transaction, context);\n },\n\n _reconcilerUpdateChildren: function (prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context) {\n var nextChildren;\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n if (this._currentElement) {\n try {\n ReactCurrentOwner.current = this._currentElement._owner;\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n } finally {\n ReactCurrentOwner.current = null;\n }\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n }\n }\n nextChildren = flattenChildren(nextNestedChildrenElements, selfDebugID);\n ReactChildReconciler.updateChildren(prevChildren, nextChildren, mountImages, removedNodes, transaction, this, this._hostContainerInfo, context, selfDebugID);\n return nextChildren;\n },\n\n /**\n * Generates a \"mount image\" for each of the supplied children. In the case\n * of `ReactDOMComponent`, a mount image is a string of markup.\n *\n * @param {?object} nestedChildren Nested child maps.\n * @return {array} An array of mounted representations.\n * @internal\n */\n mountChildren: function (nestedChildren, transaction, context) {\n var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);\n this._renderedChildren = children;\n\n var mountImages = [];\n var index = 0;\n for (var name in children) {\n if (children.hasOwnProperty(name)) {\n var child = children[name];\n var selfDebugID = 0;\n if (process.env.NODE_ENV !== 'production') {\n selfDebugID = getDebugID(this);\n }\n var mountImage = ReactReconciler.mountComponent(child, transaction, this, this._hostContainerInfo, context, selfDebugID);\n child._mountIndex = index++;\n mountImages.push(mountImage);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, children);\n }\n\n return mountImages;\n },\n\n /**\n * Replaces any rendered children with a text content string.\n *\n * @param {string} nextContent String of content.\n * @internal\n */\n updateTextContent: function (nextContent) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n // Set new text content.\n var updates = [makeTextContent(nextContent)];\n processQueue(this, updates);\n },\n\n /**\n * Replaces any rendered children with a markup string.\n *\n * @param {string} nextMarkup String of markup.\n * @internal\n */\n updateMarkup: function (nextMarkup) {\n var prevChildren = this._renderedChildren;\n // Remove any rendered children.\n ReactChildReconciler.unmountChildren(prevChildren, false);\n for (var name in prevChildren) {\n if (prevChildren.hasOwnProperty(name)) {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'updateTextContent called on non-empty component.') : _prodInvariant('118') : void 0;\n }\n }\n var updates = [makeSetMarkup(nextMarkup)];\n processQueue(this, updates);\n },\n\n /**\n * Updates the rendered children with new children.\n *\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @internal\n */\n updateChildren: function (nextNestedChildrenElements, transaction, context) {\n // Hook used by React ART\n this._updateChildren(nextNestedChildrenElements, transaction, context);\n },\n\n /**\n * @param {?object} nextNestedChildrenElements Nested child element maps.\n * @param {ReactReconcileTransaction} transaction\n * @final\n * @protected\n */\n _updateChildren: function (nextNestedChildrenElements, transaction, context) {\n var prevChildren = this._renderedChildren;\n var removedNodes = {};\n var mountImages = [];\n var nextChildren = this._reconcilerUpdateChildren(prevChildren, nextNestedChildrenElements, mountImages, removedNodes, transaction, context);\n if (!nextChildren && !prevChildren) {\n return;\n }\n var updates = null;\n var name;\n // `nextIndex` will increment for each child in `nextChildren`, but\n // `lastIndex` will be the last index visited in `prevChildren`.\n var nextIndex = 0;\n var lastIndex = 0;\n // `nextMountIndex` will increment for each newly mounted child.\n var nextMountIndex = 0;\n var lastPlacedNode = null;\n for (name in nextChildren) {\n if (!nextChildren.hasOwnProperty(name)) {\n continue;\n }\n var prevChild = prevChildren && prevChildren[name];\n var nextChild = nextChildren[name];\n if (prevChild === nextChild) {\n updates = enqueue(updates, this.moveChild(prevChild, lastPlacedNode, nextIndex, lastIndex));\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n prevChild._mountIndex = nextIndex;\n } else {\n if (prevChild) {\n // Update `lastIndex` before `_mountIndex` gets unset by unmounting.\n lastIndex = Math.max(prevChild._mountIndex, lastIndex);\n // The `removedNodes` loop below will actually remove the child.\n }\n // The child must be instantiated before it's mounted.\n updates = enqueue(updates, this._mountChildAtIndex(nextChild, mountImages[nextMountIndex], lastPlacedNode, nextIndex, transaction, context));\n nextMountIndex++;\n }\n nextIndex++;\n lastPlacedNode = ReactReconciler.getHostNode(nextChild);\n }\n // Remove children that are no longer present.\n for (name in removedNodes) {\n if (removedNodes.hasOwnProperty(name)) {\n updates = enqueue(updates, this._unmountChild(prevChildren[name], removedNodes[name]));\n }\n }\n if (updates) {\n processQueue(this, updates);\n }\n this._renderedChildren = nextChildren;\n\n if (process.env.NODE_ENV !== 'production') {\n setChildrenForInstrumentation.call(this, nextChildren);\n }\n },\n\n /**\n * Unmounts all rendered children. This should be used to clean up children\n * when this component is unmounted. It does not actually perform any\n * backend operations.\n *\n * @internal\n */\n unmountChildren: function (safely) {\n var renderedChildren = this._renderedChildren;\n ReactChildReconciler.unmountChildren(renderedChildren, safely);\n this._renderedChildren = null;\n },\n\n /**\n * Moves a child component to the supplied index.\n *\n * @param {ReactComponent} child Component to move.\n * @param {number} toIndex Destination index of the element.\n * @param {number} lastIndex Last index visited of the siblings of `child`.\n * @protected\n */\n moveChild: function (child, afterNode, toIndex, lastIndex) {\n // If the index of `child` is less than `lastIndex`, then it needs to\n // be moved. Otherwise, we do not need to move it because a child will be\n // inserted or moved before `child`.\n if (child._mountIndex < lastIndex) {\n return makeMove(child, afterNode, toIndex);\n }\n },\n\n /**\n * Creates a child component.\n *\n * @param {ReactComponent} child Component to create.\n * @param {string} mountImage Markup to insert.\n * @protected\n */\n createChild: function (child, afterNode, mountImage) {\n return makeInsertMarkup(mountImage, afterNode, child._mountIndex);\n },\n\n /**\n * Removes a child component.\n *\n * @param {ReactComponent} child Child to remove.\n * @protected\n */\n removeChild: function (child, node) {\n return makeRemove(child, node);\n },\n\n /**\n * Mounts a child with the supplied name.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to mount.\n * @param {string} name Name of the child.\n * @param {number} index Index at which to insert the child.\n * @param {ReactReconcileTransaction} transaction\n * @private\n */\n _mountChildAtIndex: function (child, mountImage, afterNode, index, transaction, context) {\n child._mountIndex = index;\n return this.createChild(child, afterNode, mountImage);\n },\n\n /**\n * Unmounts a rendered child.\n *\n * NOTE: This is part of `updateChildren` and is here for readability.\n *\n * @param {ReactComponent} child Component to unmount.\n * @private\n */\n _unmountChild: function (child, node) {\n var update = this.removeChild(child, node);\n child._mountIndex = null;\n return update;\n }\n\n }\n\n};\n\nmodule.exports = ReactMultiChild;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactMultiChild.js\n// module id = 307\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * @param {?object} object\n * @return {boolean} True if `object` is a valid owner.\n * @final\n */\nfunction isValidOwner(object) {\n return !!(object && typeof object.attachRef === 'function' && typeof object.detachRef === 'function');\n}\n\n/**\n * ReactOwners are capable of storing references to owned components.\n *\n * All components are capable of //being// referenced by owner components, but\n * only ReactOwner components are capable of //referencing// owned components.\n * The named reference is known as a \"ref\".\n *\n * Refs are available when mounted and updated during reconciliation.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return (\n * <div onClick={this.handleClick}>\n * <CustomComponent ref=\"custom\" />\n * </div>\n * );\n * },\n * handleClick: function() {\n * this.refs.custom.handleClick();\n * },\n * componentDidMount: function() {\n * this.refs.custom.initialize();\n * }\n * });\n *\n * Refs should rarely be used. When refs are used, they should only be done to\n * control data that is not handled by React's data flow.\n *\n * @class ReactOwner\n */\nvar ReactOwner = {\n /**\n * Adds a component by ref to an owner component.\n *\n * @param {ReactComponent} component Component to reference.\n * @param {string} ref Name by which to refer to the component.\n * @param {ReactOwner} owner Component on which to record the ref.\n * @final\n * @internal\n */\n addComponentAsRefTo: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('119') : void 0;\n owner.attachRef(ref, component);\n },\n\n /**\n * Removes a component by ref from an owner component.\n *\n * @param {ReactComponent} component Component to dereference.\n * @param {string} ref Name of the ref to remove.\n * @param {ReactOwner} owner Component on which the ref is recorded.\n * @final\n * @internal\n */\n removeComponentAsRefFrom: function (component, ref, owner) {\n !isValidOwner(owner) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'removeComponentAsRefFrom(...): Only a ReactOwner can have refs. You might be removing a ref to a component that was not created inside a component\\'s `render` method, or you have multiple copies of React loaded (details: https://fb.me/react-refs-must-have-owner).') : _prodInvariant('120') : void 0;\n var ownerPublicInstance = owner.getPublicInstance();\n // Check that `component`'s owner is still alive and that `component` is still the current ref\n // because we do not want to detach the ref if another component stole it.\n if (ownerPublicInstance && ownerPublicInstance.refs[ref] === component.getPublicInstance()) {\n owner.detachRef(ref);\n }\n }\n\n};\n\nmodule.exports = ReactOwner;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactOwner.js\n// module id = 308\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactPropTypesSecret.js\n// module id = 309\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar CallbackQueue = require('./CallbackQueue');\nvar PooledClass = require('./PooledClass');\nvar ReactBrowserEventEmitter = require('./ReactBrowserEventEmitter');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar Transaction = require('./Transaction');\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\n/**\n * Ensures that, when possible, the selection range (currently selected text\n * input) is not disturbed by performing the transaction.\n */\nvar SELECTION_RESTORATION = {\n /**\n * @return {Selection} Selection information.\n */\n initialize: ReactInputSelection.getSelectionInformation,\n /**\n * @param {Selection} sel Selection information returned from `initialize`.\n */\n close: ReactInputSelection.restoreSelection\n};\n\n/**\n * Suppresses events (blur/focus) that could be inadvertently dispatched due to\n * high level DOM manipulations (like temporarily removing a text input from the\n * DOM).\n */\nvar EVENT_SUPPRESSION = {\n /**\n * @return {boolean} The enabled status of `ReactBrowserEventEmitter` before\n * the reconciliation.\n */\n initialize: function () {\n var currentlyEnabled = ReactBrowserEventEmitter.isEnabled();\n ReactBrowserEventEmitter.setEnabled(false);\n return currentlyEnabled;\n },\n\n /**\n * @param {boolean} previouslyEnabled Enabled status of\n * `ReactBrowserEventEmitter` before the reconciliation occurred. `close`\n * restores the previous value.\n */\n close: function (previouslyEnabled) {\n ReactBrowserEventEmitter.setEnabled(previouslyEnabled);\n }\n};\n\n/**\n * Provides a queue for collecting `componentDidMount` and\n * `componentDidUpdate` callbacks during the transaction.\n */\nvar ON_DOM_READY_QUEUEING = {\n /**\n * Initializes the internal `onDOMReady` queue.\n */\n initialize: function () {\n this.reactMountReady.reset();\n },\n\n /**\n * After DOM is flushed, invoke all registered `onDOMReady` callbacks.\n */\n close: function () {\n this.reactMountReady.notifyAll();\n }\n};\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [SELECTION_RESTORATION, EVENT_SUPPRESSION, ON_DOM_READY_QUEUEING];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\n/**\n * Currently:\n * - The order that these are listed in the transaction is critical:\n * - Suppresses events.\n * - Restores selection range.\n *\n * Future:\n * - Restore document/overflow scroll positions that were unintentionally\n * modified via DOM insertions above the top viewport boundary.\n * - Implement/integrate with customized constraint based layout system and keep\n * track of which dimensions must be remeasured.\n *\n * @class ReactReconcileTransaction\n */\nfunction ReactReconcileTransaction(useCreateElement) {\n this.reinitializeTransaction();\n // Only server-side rendering really needs this option (see\n // `ReactServerRendering`), but server-side uses\n // `ReactServerRenderingTransaction` instead. This option is here so that it's\n // accessible and defaults to false when `ReactDOMComponent` and\n // `ReactDOMTextComponent` checks it in `mountComponent`.`\n this.renderToStaticMarkup = false;\n this.reactMountReady = CallbackQueue.getPooled(null);\n this.useCreateElement = useCreateElement;\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array<object>} List of operation wrap procedures.\n * TODO: convert to array<TransactionWrapper>\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return this.reactMountReady;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return ReactUpdateQueue;\n },\n\n /**\n * Save current transaction state -- if the return value from this method is\n * passed to `rollback`, the transaction will be reset to that state.\n */\n checkpoint: function () {\n // reactMountReady is the our only stateful wrapper\n return this.reactMountReady.checkpoint();\n },\n\n rollback: function (checkpoint) {\n this.reactMountReady.rollback(checkpoint);\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {\n CallbackQueue.release(this.reactMountReady);\n this.reactMountReady = null;\n }\n};\n\n_assign(ReactReconcileTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactReconcileTransaction);\n\nmodule.exports = ReactReconcileTransaction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactReconcileTransaction.js\n// module id = 310\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactOwner = require('./ReactOwner');\n\nvar ReactRef = {};\n\nfunction attachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(component.getPublicInstance());\n } else {\n // Legacy ref\n ReactOwner.addComponentAsRefTo(component, ref, owner);\n }\n}\n\nfunction detachRef(ref, component, owner) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n // Legacy ref\n ReactOwner.removeComponentAsRefFrom(component, ref, owner);\n }\n}\n\nReactRef.attachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n attachRef(ref, instance, element._owner);\n }\n};\n\nReactRef.shouldUpdateRefs = function (prevElement, nextElement) {\n // If either the owner or a `ref` has changed, make sure the newest owner\n // has stored a reference to `this`, and the previous owner (if different)\n // has forgotten the reference to `this`. We use the element instead\n // of the public this.props because the post processing cannot determine\n // a ref. The ref conceptually lives on the element.\n\n // TODO: Should this even be possible? The owner cannot change because\n // it's forbidden by shouldUpdateReactComponent. The ref can change\n // if you swap the keys of but not the refs. Reconsider where this check\n // is made. It probably belongs where the key checking and\n // instantiateReactComponent is done.\n\n var prevRef = null;\n var prevOwner = null;\n if (prevElement !== null && typeof prevElement === 'object') {\n prevRef = prevElement.ref;\n prevOwner = prevElement._owner;\n }\n\n var nextRef = null;\n var nextOwner = null;\n if (nextElement !== null && typeof nextElement === 'object') {\n nextRef = nextElement.ref;\n nextOwner = nextElement._owner;\n }\n\n return prevRef !== nextRef ||\n // If owner changes but we have an unchanged function ref, don't update refs\n typeof nextRef === 'string' && nextOwner !== prevOwner;\n};\n\nReactRef.detachRefs = function (instance, element) {\n if (element === null || typeof element !== 'object') {\n return;\n }\n var ref = element.ref;\n if (ref != null) {\n detachRef(ref, instance, element._owner);\n }\n};\n\nmodule.exports = ReactRef;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactRef.js\n// module id = 311\n// module chunks = 0","/**\n * Copyright 2014-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar PooledClass = require('./PooledClass');\nvar Transaction = require('./Transaction');\nvar ReactInstrumentation = require('./ReactInstrumentation');\nvar ReactServerUpdateQueue = require('./ReactServerUpdateQueue');\n\n/**\n * Executed within the scope of the `Transaction` instance. Consider these as\n * being member methods, but with an implied ordering while being isolated from\n * each other.\n */\nvar TRANSACTION_WRAPPERS = [];\n\nif (process.env.NODE_ENV !== 'production') {\n TRANSACTION_WRAPPERS.push({\n initialize: ReactInstrumentation.debugTool.onBeginFlush,\n close: ReactInstrumentation.debugTool.onEndFlush\n });\n}\n\nvar noopCallbackQueue = {\n enqueue: function () {}\n};\n\n/**\n * @class ReactServerRenderingTransaction\n * @param {boolean} renderToStaticMarkup\n */\nfunction ReactServerRenderingTransaction(renderToStaticMarkup) {\n this.reinitializeTransaction();\n this.renderToStaticMarkup = renderToStaticMarkup;\n this.useCreateElement = false;\n this.updateQueue = new ReactServerUpdateQueue(this);\n}\n\nvar Mixin = {\n /**\n * @see Transaction\n * @abstract\n * @final\n * @return {array} Empty list of operation wrap procedures.\n */\n getTransactionWrappers: function () {\n return TRANSACTION_WRAPPERS;\n },\n\n /**\n * @return {object} The queue to collect `onDOMReady` callbacks with.\n */\n getReactMountReady: function () {\n return noopCallbackQueue;\n },\n\n /**\n * @return {object} The queue to collect React async events.\n */\n getUpdateQueue: function () {\n return this.updateQueue;\n },\n\n /**\n * `PooledClass` looks for this, and will invoke this before allowing this\n * instance to be reused.\n */\n destructor: function () {},\n\n checkpoint: function () {},\n\n rollback: function () {}\n};\n\n_assign(ReactServerRenderingTransaction.prototype, Transaction, Mixin);\n\nPooledClass.addPoolingTo(ReactServerRenderingTransaction);\n\nmodule.exports = ReactServerRenderingTransaction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactServerRenderingTransaction.js\n// module id = 312\n// module chunks = 0","/**\n * Copyright 2015-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ReactUpdateQueue = require('./ReactUpdateQueue');\n\nvar warning = require('fbjs/lib/warning');\n\nfunction warnNoop(publicInstance, callerName) {\n if (process.env.NODE_ENV !== 'production') {\n var constructor = publicInstance.constructor;\n process.env.NODE_ENV !== 'production' ? warning(false, '%s(...): Can only update a mounting component. ' + 'This usually means you called %s() outside componentWillMount() on the server. ' + 'This is a no-op. Please check the code for the %s component.', callerName, callerName, constructor && (constructor.displayName || constructor.name) || 'ReactClass') : void 0;\n }\n}\n\n/**\n * This is the update queue used for server rendering.\n * It delegates to ReactUpdateQueue while server rendering is in progress and\n * switches to ReactNoopUpdateQueue after the transaction has completed.\n * @class ReactServerUpdateQueue\n * @param {Transaction} transaction\n */\n\nvar ReactServerUpdateQueue = function () {\n function ReactServerUpdateQueue(transaction) {\n _classCallCheck(this, ReactServerUpdateQueue);\n\n this.transaction = transaction;\n }\n\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n\n\n ReactServerUpdateQueue.prototype.isMounted = function isMounted(publicInstance) {\n return false;\n };\n\n /**\n * Enqueue a callback that will be executed after all the pending updates\n * have processed.\n *\n * @param {ReactClass} publicInstance The instance to use as `this` context.\n * @param {?function} callback Called after state is updated.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueCallback = function enqueueCallback(publicInstance, callback, callerName) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueCallback(publicInstance, callback, callerName);\n }\n };\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueForceUpdate = function enqueueForceUpdate(publicInstance) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueForceUpdate(publicInstance);\n } else {\n warnNoop(publicInstance, 'forceUpdate');\n }\n };\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} completeState Next state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueReplaceState = function enqueueReplaceState(publicInstance, completeState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueReplaceState(publicInstance, completeState);\n } else {\n warnNoop(publicInstance, 'replaceState');\n }\n };\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object|function} partialState Next partial state to be merged with state.\n * @internal\n */\n\n\n ReactServerUpdateQueue.prototype.enqueueSetState = function enqueueSetState(publicInstance, partialState) {\n if (this.transaction.isInTransaction()) {\n ReactUpdateQueue.enqueueSetState(publicInstance, partialState);\n } else {\n warnNoop(publicInstance, 'setState');\n }\n };\n\n return ReactServerUpdateQueue;\n}();\n\nmodule.exports = ReactServerUpdateQueue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactServerUpdateQueue.js\n// module id = 313\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.4.1';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/ReactVersion.js\n// module id = 314\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar NS = {\n xlink: 'http://www.w3.org/1999/xlink',\n xml: 'http://www.w3.org/XML/1998/namespace'\n};\n\n// We use attributes for everything SVG so let's avoid some duplication and run\n// code instead.\n// The following are all specified in the HTML config already so we exclude here.\n// - class (as className)\n// - color\n// - height\n// - id\n// - lang\n// - max\n// - media\n// - method\n// - min\n// - name\n// - style\n// - target\n// - type\n// - width\nvar ATTRS = {\n accentHeight: 'accent-height',\n accumulate: 0,\n additive: 0,\n alignmentBaseline: 'alignment-baseline',\n allowReorder: 'allowReorder',\n alphabetic: 0,\n amplitude: 0,\n arabicForm: 'arabic-form',\n ascent: 0,\n attributeName: 'attributeName',\n attributeType: 'attributeType',\n autoReverse: 'autoReverse',\n azimuth: 0,\n baseFrequency: 'baseFrequency',\n baseProfile: 'baseProfile',\n baselineShift: 'baseline-shift',\n bbox: 0,\n begin: 0,\n bias: 0,\n by: 0,\n calcMode: 'calcMode',\n capHeight: 'cap-height',\n clip: 0,\n clipPath: 'clip-path',\n clipRule: 'clip-rule',\n clipPathUnits: 'clipPathUnits',\n colorInterpolation: 'color-interpolation',\n colorInterpolationFilters: 'color-interpolation-filters',\n colorProfile: 'color-profile',\n colorRendering: 'color-rendering',\n contentScriptType: 'contentScriptType',\n contentStyleType: 'contentStyleType',\n cursor: 0,\n cx: 0,\n cy: 0,\n d: 0,\n decelerate: 0,\n descent: 0,\n diffuseConstant: 'diffuseConstant',\n direction: 0,\n display: 0,\n divisor: 0,\n dominantBaseline: 'dominant-baseline',\n dur: 0,\n dx: 0,\n dy: 0,\n edgeMode: 'edgeMode',\n elevation: 0,\n enableBackground: 'enable-background',\n end: 0,\n exponent: 0,\n externalResourcesRequired: 'externalResourcesRequired',\n fill: 0,\n fillOpacity: 'fill-opacity',\n fillRule: 'fill-rule',\n filter: 0,\n filterRes: 'filterRes',\n filterUnits: 'filterUnits',\n floodColor: 'flood-color',\n floodOpacity: 'flood-opacity',\n focusable: 0,\n fontFamily: 'font-family',\n fontSize: 'font-size',\n fontSizeAdjust: 'font-size-adjust',\n fontStretch: 'font-stretch',\n fontStyle: 'font-style',\n fontVariant: 'font-variant',\n fontWeight: 'font-weight',\n format: 0,\n from: 0,\n fx: 0,\n fy: 0,\n g1: 0,\n g2: 0,\n glyphName: 'glyph-name',\n glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n glyphOrientationVertical: 'glyph-orientation-vertical',\n glyphRef: 'glyphRef',\n gradientTransform: 'gradientTransform',\n gradientUnits: 'gradientUnits',\n hanging: 0,\n horizAdvX: 'horiz-adv-x',\n horizOriginX: 'horiz-origin-x',\n ideographic: 0,\n imageRendering: 'image-rendering',\n 'in': 0,\n in2: 0,\n intercept: 0,\n k: 0,\n k1: 0,\n k2: 0,\n k3: 0,\n k4: 0,\n kernelMatrix: 'kernelMatrix',\n kernelUnitLength: 'kernelUnitLength',\n kerning: 0,\n keyPoints: 'keyPoints',\n keySplines: 'keySplines',\n keyTimes: 'keyTimes',\n lengthAdjust: 'lengthAdjust',\n letterSpacing: 'letter-spacing',\n lightingColor: 'lighting-color',\n limitingConeAngle: 'limitingConeAngle',\n local: 0,\n markerEnd: 'marker-end',\n markerMid: 'marker-mid',\n markerStart: 'marker-start',\n markerHeight: 'markerHeight',\n markerUnits: 'markerUnits',\n markerWidth: 'markerWidth',\n mask: 0,\n maskContentUnits: 'maskContentUnits',\n maskUnits: 'maskUnits',\n mathematical: 0,\n mode: 0,\n numOctaves: 'numOctaves',\n offset: 0,\n opacity: 0,\n operator: 0,\n order: 0,\n orient: 0,\n orientation: 0,\n origin: 0,\n overflow: 0,\n overlinePosition: 'overline-position',\n overlineThickness: 'overline-thickness',\n paintOrder: 'paint-order',\n panose1: 'panose-1',\n pathLength: 'pathLength',\n patternContentUnits: 'patternContentUnits',\n patternTransform: 'patternTransform',\n patternUnits: 'patternUnits',\n pointerEvents: 'pointer-events',\n points: 0,\n pointsAtX: 'pointsAtX',\n pointsAtY: 'pointsAtY',\n pointsAtZ: 'pointsAtZ',\n preserveAlpha: 'preserveAlpha',\n preserveAspectRatio: 'preserveAspectRatio',\n primitiveUnits: 'primitiveUnits',\n r: 0,\n radius: 0,\n refX: 'refX',\n refY: 'refY',\n renderingIntent: 'rendering-intent',\n repeatCount: 'repeatCount',\n repeatDur: 'repeatDur',\n requiredExtensions: 'requiredExtensions',\n requiredFeatures: 'requiredFeatures',\n restart: 0,\n result: 0,\n rotate: 0,\n rx: 0,\n ry: 0,\n scale: 0,\n seed: 0,\n shapeRendering: 'shape-rendering',\n slope: 0,\n spacing: 0,\n specularConstant: 'specularConstant',\n specularExponent: 'specularExponent',\n speed: 0,\n spreadMethod: 'spreadMethod',\n startOffset: 'startOffset',\n stdDeviation: 'stdDeviation',\n stemh: 0,\n stemv: 0,\n stitchTiles: 'stitchTiles',\n stopColor: 'stop-color',\n stopOpacity: 'stop-opacity',\n strikethroughPosition: 'strikethrough-position',\n strikethroughThickness: 'strikethrough-thickness',\n string: 0,\n stroke: 0,\n strokeDasharray: 'stroke-dasharray',\n strokeDashoffset: 'stroke-dashoffset',\n strokeLinecap: 'stroke-linecap',\n strokeLinejoin: 'stroke-linejoin',\n strokeMiterlimit: 'stroke-miterlimit',\n strokeOpacity: 'stroke-opacity',\n strokeWidth: 'stroke-width',\n surfaceScale: 'surfaceScale',\n systemLanguage: 'systemLanguage',\n tableValues: 'tableValues',\n targetX: 'targetX',\n targetY: 'targetY',\n textAnchor: 'text-anchor',\n textDecoration: 'text-decoration',\n textRendering: 'text-rendering',\n textLength: 'textLength',\n to: 0,\n transform: 0,\n u1: 0,\n u2: 0,\n underlinePosition: 'underline-position',\n underlineThickness: 'underline-thickness',\n unicode: 0,\n unicodeBidi: 'unicode-bidi',\n unicodeRange: 'unicode-range',\n unitsPerEm: 'units-per-em',\n vAlphabetic: 'v-alphabetic',\n vHanging: 'v-hanging',\n vIdeographic: 'v-ideographic',\n vMathematical: 'v-mathematical',\n values: 0,\n vectorEffect: 'vector-effect',\n version: 0,\n vertAdvY: 'vert-adv-y',\n vertOriginX: 'vert-origin-x',\n vertOriginY: 'vert-origin-y',\n viewBox: 'viewBox',\n viewTarget: 'viewTarget',\n visibility: 0,\n widths: 0,\n wordSpacing: 'word-spacing',\n writingMode: 'writing-mode',\n x: 0,\n xHeight: 'x-height',\n x1: 0,\n x2: 0,\n xChannelSelector: 'xChannelSelector',\n xlinkActuate: 'xlink:actuate',\n xlinkArcrole: 'xlink:arcrole',\n xlinkHref: 'xlink:href',\n xlinkRole: 'xlink:role',\n xlinkShow: 'xlink:show',\n xlinkTitle: 'xlink:title',\n xlinkType: 'xlink:type',\n xmlBase: 'xml:base',\n xmlns: 0,\n xmlnsXlink: 'xmlns:xlink',\n xmlLang: 'xml:lang',\n xmlSpace: 'xml:space',\n y: 0,\n y1: 0,\n y2: 0,\n yChannelSelector: 'yChannelSelector',\n z: 0,\n zoomAndPan: 'zoomAndPan'\n};\n\nvar SVGDOMPropertyConfig = {\n Properties: {},\n DOMAttributeNamespaces: {\n xlinkActuate: NS.xlink,\n xlinkArcrole: NS.xlink,\n xlinkHref: NS.xlink,\n xlinkRole: NS.xlink,\n xlinkShow: NS.xlink,\n xlinkTitle: NS.xlink,\n xlinkType: NS.xlink,\n xmlBase: NS.xml,\n xmlLang: NS.xml,\n xmlSpace: NS.xml\n },\n DOMAttributeNames: {}\n};\n\nObject.keys(ATTRS).forEach(function (key) {\n SVGDOMPropertyConfig.Properties[key] = 0;\n if (ATTRS[key]) {\n SVGDOMPropertyConfig.DOMAttributeNames[key] = ATTRS[key];\n }\n});\n\nmodule.exports = SVGDOMPropertyConfig;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SVGDOMPropertyConfig.js\n// module id = 315\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar EventPropagators = require('./EventPropagators');\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInputSelection = require('./ReactInputSelection');\nvar SyntheticEvent = require('./SyntheticEvent');\n\nvar getActiveElement = require('fbjs/lib/getActiveElement');\nvar isTextInputElement = require('./isTextInputElement');\nvar shallowEqual = require('fbjs/lib/shallowEqual');\n\nvar skipSelectionChangeEvent = ExecutionEnvironment.canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nvar eventTypes = {\n select: {\n phasedRegistrationNames: {\n bubbled: 'onSelect',\n captured: 'onSelectCapture'\n },\n dependencies: ['topBlur', 'topContextMenu', 'topFocus', 'topKeyDown', 'topKeyUp', 'topMouseDown', 'topMouseUp', 'topSelectionChange']\n }\n};\n\nvar activeElement = null;\nvar activeElementInst = null;\nvar lastSelection = null;\nvar mouseDown = false;\n\n// Track whether a listener exists for this plugin. If none exist, we do\n// not extract events. See #3639.\nvar hasListener = false;\n\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n *\n * @param {DOMElement} node\n * @return {object}\n */\nfunction getSelection(node) {\n if ('selectionStart' in node && ReactInputSelection.hasSelectionCapabilities(node)) {\n return {\n start: node.selectionStart,\n end: node.selectionEnd\n };\n } else if (window.getSelection) {\n var selection = window.getSelection();\n return {\n anchorNode: selection.anchorNode,\n anchorOffset: selection.anchorOffset,\n focusNode: selection.focusNode,\n focusOffset: selection.focusOffset\n };\n } else if (document.selection) {\n var range = document.selection.createRange();\n return {\n parentElement: range.parentElement(),\n text: range.text,\n top: range.boundingTop,\n left: range.boundingLeft\n };\n }\n}\n\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @return {?SyntheticEvent}\n */\nfunction constructSelectEvent(nativeEvent, nativeEventTarget) {\n // Ensure we have the right element, and that the user is not dragging a\n // selection (this matches native `select` event behavior). In HTML5, select\n // fires only on input and textarea thus if there's no focused element we\n // won't dispatch.\n if (mouseDown || activeElement == null || activeElement !== getActiveElement()) {\n return null;\n }\n\n // Only fire when selection has actually changed.\n var currentSelection = getSelection(activeElement);\n if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n lastSelection = currentSelection;\n\n var syntheticEvent = SyntheticEvent.getPooled(eventTypes.select, activeElementInst, nativeEvent, nativeEventTarget);\n\n syntheticEvent.type = 'select';\n syntheticEvent.target = activeElement;\n\n EventPropagators.accumulateTwoPhaseDispatches(syntheticEvent);\n\n return syntheticEvent;\n }\n\n return null;\n}\n\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\nvar SelectEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n if (!hasListener) {\n return null;\n }\n\n var targetNode = targetInst ? ReactDOMComponentTree.getNodeFromInstance(targetInst) : window;\n\n switch (topLevelType) {\n // Track the input node that has focus.\n case 'topFocus':\n if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n activeElement = targetNode;\n activeElementInst = targetInst;\n lastSelection = null;\n }\n break;\n case 'topBlur':\n activeElement = null;\n activeElementInst = null;\n lastSelection = null;\n break;\n\n // Don't fire the event while the user is dragging. This matches the\n // semantics of the native select event.\n case 'topMouseDown':\n mouseDown = true;\n break;\n case 'topContextMenu':\n case 'topMouseUp':\n mouseDown = false;\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n\n // Chrome and IE fire non-standard event when selection is changed (and\n // sometimes when it hasn't). IE's event fires out of order with respect\n // to key and input events on deletion, so we discard it.\n //\n // Firefox doesn't support selectionchange, so check selection status\n // after each key entry. The selection changes after keydown and before\n // keyup, but we check on keydown as well in the case of holding down a\n // key, when multiple keydown events are fired but only one keyup is.\n // This is also our approach for IE handling, for the reason above.\n case 'topSelectionChange':\n if (skipSelectionChangeEvent) {\n break;\n }\n // falls through\n case 'topKeyDown':\n case 'topKeyUp':\n return constructSelectEvent(nativeEvent, nativeEventTarget);\n }\n\n return null;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n if (registrationName === 'onSelect') {\n hasListener = true;\n }\n }\n};\n\nmodule.exports = SelectEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SelectEventPlugin.js\n// module id = 316\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar EventListener = require('fbjs/lib/EventListener');\nvar EventPropagators = require('./EventPropagators');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar SyntheticAnimationEvent = require('./SyntheticAnimationEvent');\nvar SyntheticClipboardEvent = require('./SyntheticClipboardEvent');\nvar SyntheticEvent = require('./SyntheticEvent');\nvar SyntheticFocusEvent = require('./SyntheticFocusEvent');\nvar SyntheticKeyboardEvent = require('./SyntheticKeyboardEvent');\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\nvar SyntheticDragEvent = require('./SyntheticDragEvent');\nvar SyntheticTouchEvent = require('./SyntheticTouchEvent');\nvar SyntheticTransitionEvent = require('./SyntheticTransitionEvent');\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\nvar SyntheticWheelEvent = require('./SyntheticWheelEvent');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar getEventCharCode = require('./getEventCharCode');\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Turns\n * ['abort', ...]\n * into\n * eventTypes = {\n * 'abort': {\n * phasedRegistrationNames: {\n * bubbled: 'onAbort',\n * captured: 'onAbortCapture',\n * },\n * dependencies: ['topAbort'],\n * },\n * ...\n * };\n * topLevelEventsToDispatchConfig = {\n * 'topAbort': { sameConfig }\n * };\n */\nvar eventTypes = {};\nvar topLevelEventsToDispatchConfig = {};\n['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 (event) {\n var capitalizedEvent = event[0].toUpperCase() + event.slice(1);\n var onEvent = 'on' + capitalizedEvent;\n var topEvent = 'top' + capitalizedEvent;\n\n var type = {\n phasedRegistrationNames: {\n bubbled: onEvent,\n captured: onEvent + 'Capture'\n },\n dependencies: [topEvent]\n };\n eventTypes[event] = type;\n topLevelEventsToDispatchConfig[topEvent] = type;\n});\n\nvar onClickListeners = {};\n\nfunction getDictionaryKey(inst) {\n // Prevents V8 performance issue:\n // https://github.com/facebook/react/pull/7232\n return '.' + inst._rootNodeID;\n}\n\nfunction isInteractive(tag) {\n return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nvar SimpleEventPlugin = {\n\n eventTypes: eventTypes,\n\n extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget) {\n var dispatchConfig = topLevelEventsToDispatchConfig[topLevelType];\n if (!dispatchConfig) {\n return null;\n }\n var EventConstructor;\n switch (topLevelType) {\n case 'topAbort':\n case 'topCanPlay':\n case 'topCanPlayThrough':\n case 'topDurationChange':\n case 'topEmptied':\n case 'topEncrypted':\n case 'topEnded':\n case 'topError':\n case 'topInput':\n case 'topInvalid':\n case 'topLoad':\n case 'topLoadedData':\n case 'topLoadedMetadata':\n case 'topLoadStart':\n case 'topPause':\n case 'topPlay':\n case 'topPlaying':\n case 'topProgress':\n case 'topRateChange':\n case 'topReset':\n case 'topSeeked':\n case 'topSeeking':\n case 'topStalled':\n case 'topSubmit':\n case 'topSuspend':\n case 'topTimeUpdate':\n case 'topVolumeChange':\n case 'topWaiting':\n // HTML Events\n // @see http://www.w3.org/TR/html5/index.html#events-0\n EventConstructor = SyntheticEvent;\n break;\n case 'topKeyPress':\n // Firefox creates a keypress event for function keys too. This removes\n // the unwanted keypress events. Enter is however both printable and\n // non-printable. One would expect Tab to be as well (but it isn't).\n if (getEventCharCode(nativeEvent) === 0) {\n return null;\n }\n /* falls through */\n case 'topKeyDown':\n case 'topKeyUp':\n EventConstructor = SyntheticKeyboardEvent;\n break;\n case 'topBlur':\n case 'topFocus':\n EventConstructor = SyntheticFocusEvent;\n break;\n case 'topClick':\n // Firefox creates a click event on right mouse clicks. This removes the\n // unwanted click events.\n if (nativeEvent.button === 2) {\n return null;\n }\n /* falls through */\n case 'topDoubleClick':\n case 'topMouseDown':\n case 'topMouseMove':\n case 'topMouseUp':\n // TODO: Disabled elements should not respond to mouse events\n /* falls through */\n case 'topMouseOut':\n case 'topMouseOver':\n case 'topContextMenu':\n EventConstructor = SyntheticMouseEvent;\n break;\n case 'topDrag':\n case 'topDragEnd':\n case 'topDragEnter':\n case 'topDragExit':\n case 'topDragLeave':\n case 'topDragOver':\n case 'topDragStart':\n case 'topDrop':\n EventConstructor = SyntheticDragEvent;\n break;\n case 'topTouchCancel':\n case 'topTouchEnd':\n case 'topTouchMove':\n case 'topTouchStart':\n EventConstructor = SyntheticTouchEvent;\n break;\n case 'topAnimationEnd':\n case 'topAnimationIteration':\n case 'topAnimationStart':\n EventConstructor = SyntheticAnimationEvent;\n break;\n case 'topTransitionEnd':\n EventConstructor = SyntheticTransitionEvent;\n break;\n case 'topScroll':\n EventConstructor = SyntheticUIEvent;\n break;\n case 'topWheel':\n EventConstructor = SyntheticWheelEvent;\n break;\n case 'topCopy':\n case 'topCut':\n case 'topPaste':\n EventConstructor = SyntheticClipboardEvent;\n break;\n }\n !EventConstructor ? process.env.NODE_ENV !== 'production' ? invariant(false, 'SimpleEventPlugin: Unhandled event type, `%s`.', topLevelType) : _prodInvariant('86', topLevelType) : void 0;\n var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);\n EventPropagators.accumulateTwoPhaseDispatches(event);\n return event;\n },\n\n didPutListener: function (inst, registrationName, listener) {\n // Mobile Safari does not fire properly bubble click events on\n // non-interactive elements, which means delegated click listeners do not\n // fire. The workaround for this bug involves attaching an empty click\n // listener on the target node.\n // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n var node = ReactDOMComponentTree.getNodeFromInstance(inst);\n if (!onClickListeners[key]) {\n onClickListeners[key] = EventListener.listen(node, 'click', emptyFunction);\n }\n }\n },\n\n willDeleteListener: function (inst, registrationName) {\n if (registrationName === 'onClick' && !isInteractive(inst._tag)) {\n var key = getDictionaryKey(inst);\n onClickListeners[key].remove();\n delete onClickListeners[key];\n }\n }\n\n};\n\nmodule.exports = SimpleEventPlugin;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SimpleEventPlugin.js\n// module id = 317\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\nvar AnimationEventInterface = {\n animationName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);\n\nmodule.exports = SyntheticAnimationEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticAnimationEvent.js\n// module id = 318\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\nvar ClipboardEventInterface = {\n clipboardData: function (event) {\n return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);\n\nmodule.exports = SyntheticClipboardEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticClipboardEvent.js\n// module id = 319\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\nvar CompositionEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);\n\nmodule.exports = SyntheticCompositionEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticCompositionEvent.js\n// module id = 320\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar DragEventInterface = {\n dataTransfer: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);\n\nmodule.exports = SyntheticDragEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticDragEvent.js\n// module id = 321\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar FocusEventInterface = {\n relatedTarget: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);\n\nmodule.exports = SyntheticFocusEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticFocusEvent.js\n// module id = 322\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n * /#events-inputevents\n */\nvar InputEventInterface = {\n data: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);\n\nmodule.exports = SyntheticInputEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticInputEvent.js\n// module id = 323\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventCharCode = require('./getEventCharCode');\nvar getEventKey = require('./getEventKey');\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar KeyboardEventInterface = {\n key: getEventKey,\n location: null,\n ctrlKey: null,\n shiftKey: null,\n altKey: null,\n metaKey: null,\n repeat: null,\n locale: null,\n getModifierState: getEventModifierState,\n // Legacy Interface\n charCode: function (event) {\n // `charCode` is the result of a KeyPress event and represents the value of\n // the actual printable character.\n\n // KeyPress is deprecated, but its replacement is not yet final and not\n // implemented in any major browser. Only KeyPress has charCode.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n return 0;\n },\n keyCode: function (event) {\n // `keyCode` is the result of a KeyDown/Up event and represents the value of\n // physical keyboard key.\n\n // The actual meaning of the value depends on the users' keyboard layout\n // which cannot be detected. Assuming that it is a US keyboard layout\n // provides a surprisingly accurate mapping for US and European users.\n // Due to this, it is left to the user to implement at this time.\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n },\n which: function (event) {\n // `which` is an alias for either `keyCode` or `charCode` depending on the\n // type of the event.\n if (event.type === 'keypress') {\n return getEventCharCode(event);\n }\n if (event.type === 'keydown' || event.type === 'keyup') {\n return event.keyCode;\n }\n return 0;\n }\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);\n\nmodule.exports = SyntheticKeyboardEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticKeyboardEvent.js\n// module id = 324\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticUIEvent = require('./SyntheticUIEvent');\n\nvar getEventModifierState = require('./getEventModifierState');\n\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\nvar TouchEventInterface = {\n touches: null,\n targetTouches: null,\n changedTouches: null,\n altKey: null,\n metaKey: null,\n ctrlKey: null,\n shiftKey: null,\n getModifierState: getEventModifierState\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticUIEvent}\n */\nfunction SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticUIEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);\n\nmodule.exports = SyntheticTouchEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticTouchEvent.js\n// module id = 325\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticEvent = require('./SyntheticEvent');\n\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\nvar TransitionEventInterface = {\n propertyName: null,\n elapsedTime: null,\n pseudoElement: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticEvent}\n */\nfunction SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);\n\nmodule.exports = SyntheticTransitionEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticTransitionEvent.js\n// module id = 326\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar SyntheticMouseEvent = require('./SyntheticMouseEvent');\n\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\nvar WheelEventInterface = {\n deltaX: function (event) {\n return 'deltaX' in event ? event.deltaX :\n // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n 'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n },\n deltaY: function (event) {\n return 'deltaY' in event ? event.deltaY :\n // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n 'wheelDeltaY' in event ? -event.wheelDeltaY :\n // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n 'wheelDelta' in event ? -event.wheelDelta : 0;\n },\n deltaZ: null,\n\n // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n deltaMode: null\n};\n\n/**\n * @param {object} dispatchConfig Configuration used to dispatch this event.\n * @param {string} dispatchMarker Marker identifying the event target.\n * @param {object} nativeEvent Native browser event.\n * @extends {SyntheticMouseEvent}\n */\nfunction SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget) {\n return SyntheticMouseEvent.call(this, dispatchConfig, dispatchMarker, nativeEvent, nativeEventTarget);\n}\n\nSyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);\n\nmodule.exports = SyntheticWheelEvent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/SyntheticWheelEvent.js\n// module id = 327\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar MOD = 65521;\n\n// adler32 is not cryptographically strong, and is only used to sanity check that\n// markup generated on the server matches the markup generated on the client.\n// This implementation (a modified version of the SheetJS version) has been optimized\n// for our use case, at the expense of conforming to the adler32 specification\n// for non-ascii inputs.\nfunction adler32(data) {\n var a = 1;\n var b = 0;\n var i = 0;\n var l = data.length;\n var m = l & ~0x3;\n while (i < m) {\n var n = Math.min(i + 4096, m);\n for (; i < n; i += 4) {\n b += (a += data.charCodeAt(i)) + (a += data.charCodeAt(i + 1)) + (a += data.charCodeAt(i + 2)) + (a += data.charCodeAt(i + 3));\n }\n a %= MOD;\n b %= MOD;\n }\n for (; i < l; i++) {\n b += a += data.charCodeAt(i);\n }\n a %= MOD;\n b %= MOD;\n return a | b << 16;\n}\n\nmodule.exports = adler32;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/adler32.js\n// module id = 328\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar CSSProperty = require('./CSSProperty');\nvar warning = require('fbjs/lib/warning');\n\nvar isUnitlessNumber = CSSProperty.isUnitlessNumber;\nvar styleWarnings = {};\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @param {ReactDOMComponent} component\n * @return {string} Normalized style value with dimensions applied.\n */\nfunction dangerousStyleValue(name, value, component) {\n // Note that we've removed escapeTextForBrowser() calls here since the\n // whole string will be escaped when the attribute is injected into\n // the markup. If you provide unsafe user data here they can inject\n // arbitrary CSS which may be problematic (I couldn't repro this):\n // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n // This is not an XSS hole but instead a potential CSS injection issue\n // which has lead to a greater discussion about how we're going to\n // trust URLs moving forward. See #2115901\n\n var isEmpty = value == null || typeof value === 'boolean' || value === '';\n if (isEmpty) {\n return '';\n }\n\n var isNonNumeric = isNaN(value);\n if (isNonNumeric || value === 0 || isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) {\n return '' + value; // cast to string\n }\n\n if (typeof value === 'string') {\n if (process.env.NODE_ENV !== 'production') {\n // Allow '0' to pass through without warning. 0 is already special and\n // doesn't require units, so we don't need to warn about it.\n if (component && value !== '0') {\n var owner = component._currentElement._owner;\n var ownerName = owner ? owner.getName() : null;\n if (ownerName && !styleWarnings[ownerName]) {\n styleWarnings[ownerName] = {};\n }\n var warned = false;\n if (ownerName) {\n var warnings = styleWarnings[ownerName];\n warned = warnings[name];\n if (!warned) {\n warnings[name] = true;\n }\n }\n if (!warned) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'a `%s` tag (owner: `%s`) was passed a numeric string value ' + 'for CSS property `%s` (value: `%s`) which will be treated ' + 'as a unitless number in a future version of React.', component._currentElement.type, ownerName || 'unknown', name, value) : void 0;\n }\n }\n }\n value = value.trim();\n }\n return value + 'px';\n}\n\nmodule.exports = dangerousStyleValue;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/dangerousStyleValue.js\n// module id = 329\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('react/lib/ReactCurrentOwner');\nvar ReactDOMComponentTree = require('./ReactDOMComponentTree');\nvar ReactInstanceMap = require('./ReactInstanceMap');\n\nvar getHostComponentFromComposite = require('./getHostComponentFromComposite');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Returns the DOM node rendered by this element.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode\n *\n * @param {ReactComponent|DOMElement} componentOrElement\n * @return {?DOMElement} The root node of this element.\n */\nfunction findDOMNode(componentOrElement) {\n if (process.env.NODE_ENV !== 'production') {\n var owner = ReactCurrentOwner.current;\n if (owner !== null) {\n process.env.NODE_ENV !== 'production' ? warning(owner._warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', owner.getName() || 'A component') : void 0;\n owner._warnedAboutRefsInRender = true;\n }\n }\n if (componentOrElement == null) {\n return null;\n }\n if (componentOrElement.nodeType === 1) {\n return componentOrElement;\n }\n\n var inst = ReactInstanceMap.get(componentOrElement);\n if (inst) {\n inst = getHostComponentFromComposite(inst);\n return inst ? ReactDOMComponentTree.getNodeFromInstance(inst) : null;\n }\n\n if (typeof componentOrElement.render === 'function') {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'findDOMNode was called on an unmounted component.') : _prodInvariant('44') : void 0;\n } else {\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Element appears to be neither ReactComponent nor DOMNode (keys: %s)', Object.keys(componentOrElement)) : _prodInvariant('45', Object.keys(componentOrElement)) : void 0;\n }\n}\n\nmodule.exports = findDOMNode;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/findDOMNode.js\n// module id = 330\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar traverseAllChildren = require('./traverseAllChildren');\nvar warning = require('fbjs/lib/warning');\n\nvar ReactComponentTreeHook;\n\nif (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'test') {\n // Temporary hack.\n // Inline requires don't work well with Jest:\n // https://github.com/facebook/react/issues/7240\n // Remove the inline requires when we don't need them anymore:\n // https://github.com/facebook/react/pull/7178\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n}\n\n/**\n * @param {function} traverseContext Context passed through traversal.\n * @param {?ReactComponent} child React child component.\n * @param {!string} name String name of key path to child.\n * @param {number=} selfDebugID Optional debugID of the current internal instance.\n */\nfunction flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID) {\n // We found a component instance.\n if (traverseContext && typeof traverseContext === 'object') {\n var result = traverseContext;\n var keyUnique = result[name] === undefined;\n if (process.env.NODE_ENV !== 'production') {\n if (!ReactComponentTreeHook) {\n ReactComponentTreeHook = require('react/lib/ReactComponentTreeHook');\n }\n if (!keyUnique) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeHook.getStackAddendumByID(selfDebugID)) : void 0;\n }\n }\n if (keyUnique && child != null) {\n result[name] = child;\n }\n }\n}\n\n/**\n * Flattens children that are typically specified as `props.children`. Any null\n * children will not be included in the resulting object.\n * @return {!object} flattened children keyed by name.\n */\nfunction flattenChildren(children, selfDebugID) {\n if (children == null) {\n return children;\n }\n var result = {};\n\n if (process.env.NODE_ENV !== 'production') {\n traverseAllChildren(children, function (traverseContext, child, name) {\n return flattenSingleChildIntoContext(traverseContext, child, name, selfDebugID);\n }, result);\n } else {\n traverseAllChildren(children, flattenSingleChildIntoContext, result);\n }\n return result;\n}\n\nmodule.exports = flattenChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/flattenChildren.js\n// module id = 331\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar getEventCharCode = require('./getEventCharCode');\n\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar normalizeKey = {\n 'Esc': 'Escape',\n 'Spacebar': ' ',\n 'Left': 'ArrowLeft',\n 'Up': 'ArrowUp',\n 'Right': 'ArrowRight',\n 'Down': 'ArrowDown',\n 'Del': 'Delete',\n 'Win': 'OS',\n 'Menu': 'ContextMenu',\n 'Apps': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'MozPrintableKey': 'Unidentified'\n};\n\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\nvar translateToKey = {\n 8: 'Backspace',\n 9: 'Tab',\n 12: 'Clear',\n 13: 'Enter',\n 16: 'Shift',\n 17: 'Control',\n 18: 'Alt',\n 19: 'Pause',\n 20: 'CapsLock',\n 27: 'Escape',\n 32: ' ',\n 33: 'PageUp',\n 34: 'PageDown',\n 35: 'End',\n 36: 'Home',\n 37: 'ArrowLeft',\n 38: 'ArrowUp',\n 39: 'ArrowRight',\n 40: 'ArrowDown',\n 45: 'Insert',\n 46: 'Delete',\n 112: 'F1', 113: 'F2', 114: 'F3', 115: 'F4', 116: 'F5', 117: 'F6',\n 118: 'F7', 119: 'F8', 120: 'F9', 121: 'F10', 122: 'F11', 123: 'F12',\n 144: 'NumLock',\n 145: 'ScrollLock',\n 224: 'Meta'\n};\n\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\nfunction getEventKey(nativeEvent) {\n if (nativeEvent.key) {\n // Normalize inconsistent values reported by browsers due to\n // implementations of a working draft specification.\n\n // FireFox implements `key` but returns `MozPrintableKey` for all\n // printable characters (normalized to `Unidentified`), ignore it.\n var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n if (key !== 'Unidentified') {\n return key;\n }\n }\n\n // Browser does not implement `key`, polyfill as much of it as we can.\n if (nativeEvent.type === 'keypress') {\n var charCode = getEventCharCode(nativeEvent);\n\n // The enter-key is technically both printable and non-printable and can\n // thus be captured by `keypress`, no other non-printable key should.\n return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n }\n if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n // While user keyboard layout determines the actual meaning of each\n // `keyCode` value, almost all function keys have a universal value.\n return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n }\n return '';\n}\n\nmodule.exports = getEventKey;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getEventKey.js\n// module id = 332\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/* global Symbol */\n\nvar ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n/**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\nfunction getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n}\n\nmodule.exports = getIteratorFn;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getIteratorFn.js\n// module id = 333\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar nextDebugID = 1;\n\nfunction getNextDebugID() {\n return nextDebugID++;\n}\n\nmodule.exports = getNextDebugID;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getNextDebugID.js\n// module id = 334\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n while (node && node.firstChild) {\n node = node.firstChild;\n }\n return node;\n}\n\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\nfunction getSiblingNode(node) {\n while (node) {\n if (node.nextSibling) {\n return node.nextSibling;\n }\n node = node.parentNode;\n }\n}\n\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\nfunction getNodeForCharacterOffset(root, offset) {\n var node = getLeafNode(root);\n var nodeStart = 0;\n var nodeEnd = 0;\n\n while (node) {\n if (node.nodeType === 3) {\n nodeEnd = nodeStart + node.textContent.length;\n\n if (nodeStart <= offset && nodeEnd >= offset) {\n return {\n node: node,\n offset: offset - nodeStart\n };\n }\n\n nodeStart = nodeEnd;\n }\n\n node = getLeafNode(getSiblingNode(node));\n }\n}\n\nmodule.exports = getNodeForCharacterOffset;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getNodeForCharacterOffset.js\n// module id = 335\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment');\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\nfunction makePrefixMap(styleProp, eventName) {\n var prefixes = {};\n\n prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n prefixes['Moz' + styleProp] = 'moz' + eventName;\n prefixes['ms' + styleProp] = 'MS' + eventName;\n prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();\n\n return prefixes;\n}\n\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\nvar vendorPrefixes = {\n animationend: makePrefixMap('Animation', 'AnimationEnd'),\n animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n animationstart: makePrefixMap('Animation', 'AnimationStart'),\n transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\nvar prefixedEventNames = {};\n\n/**\n * Element to check for prefixes on.\n */\nvar style = {};\n\n/**\n * Bootstrap if a DOM exists.\n */\nif (ExecutionEnvironment.canUseDOM) {\n style = document.createElement('div').style;\n\n // On some platforms, in particular some releases of Android 4.x,\n // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n // style object but the events that fire will still be prefixed, so we need\n // to check if the un-prefixed events are usable, and if not remove them from the map.\n if (!('AnimationEvent' in window)) {\n delete vendorPrefixes.animationend.animation;\n delete vendorPrefixes.animationiteration.animation;\n delete vendorPrefixes.animationstart.animation;\n }\n\n // Same as above\n if (!('TransitionEvent' in window)) {\n delete vendorPrefixes.transitionend.transition;\n }\n}\n\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\nfunction getVendorPrefixedEventName(eventName) {\n if (prefixedEventNames[eventName]) {\n return prefixedEventNames[eventName];\n } else if (!vendorPrefixes[eventName]) {\n return eventName;\n }\n\n var prefixMap = vendorPrefixes[eventName];\n\n for (var styleProp in prefixMap) {\n if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n return prefixedEventNames[eventName] = prefixMap[styleProp];\n }\n }\n\n return '';\n}\n\nmodule.exports = getVendorPrefixedEventName;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/getVendorPrefixedEventName.js\n// module id = 336\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar escapeTextContentForBrowser = require('./escapeTextContentForBrowser');\n\n/**\n * Escapes attribute value to prevent scripting attacks.\n *\n * @param {*} value Value to escape.\n * @return {string} An escaped string.\n */\nfunction quoteAttributeValueForBrowser(value) {\n return '\"' + escapeTextContentForBrowser(value) + '\"';\n}\n\nmodule.exports = quoteAttributeValueForBrowser;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/quoteAttributeValueForBrowser.js\n// module id = 337\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactMount = require('./ReactMount');\n\nmodule.exports = ReactMount.renderSubtreeIntoContainer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-dom/lib/renderSubtreeIntoContainer.js\n// module id = 338\n// module chunks = 0",";(function() {\n\"use strict\";\n\nif (typeof window === 'undefined') return;\n\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A component handler interface using the revealing module design pattern.\n * More details on this design pattern here:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @author Jason Mayes.\n */\n/* exported componentHandler */\n\n// Pre-defining the componentHandler interface, for closure documentation and\n// static verification.\nvar componentHandler = {\n /**\n * Searches existing DOM for elements of our component type and upgrades them\n * if they have not already been upgraded.\n *\n * @param {string=} optJsClass the programatic name of the element class we\n * need to create a new instance of.\n * @param {string=} optCssClass the name of the CSS class elements of this\n * type will have.\n */\n upgradeDom: function(optJsClass, optCssClass) {},\n /**\n * Upgrades a specific element rather than all in the DOM.\n *\n * @param {!Element} element The element we wish to upgrade.\n * @param {string=} optJsClass Optional name of the class we want to upgrade\n * the element to.\n */\n upgradeElement: function(element, optJsClass) {},\n /**\n * Upgrades a specific list of elements rather than all in the DOM.\n *\n * @param {!Element|!Array<!Element>|!NodeList|!HTMLCollection} elements\n * The elements we wish to upgrade.\n */\n upgradeElements: function(elements) {},\n /**\n * Upgrades all registered components found in the current DOM. This is\n * automatically called on window load.\n */\n upgradeAllRegistered: function() {},\n /**\n * Allows user to be alerted to any upgrades that are performed for a given\n * component type\n *\n * @param {string} jsClass The class name of the MDL component we wish\n * to hook into for any upgrades performed.\n * @param {function(!HTMLElement)} callback The function to call upon an\n * upgrade. This function should expect 1 parameter - the HTMLElement which\n * got upgraded.\n */\n registerUpgradedCallback: function(jsClass, callback) {},\n /**\n * Registers a class for future use and attempts to upgrade existing DOM.\n *\n * @param {componentHandler.ComponentConfigPublic} config the registration configuration\n */\n register: function(config) {},\n /**\n * Downgrade either a given node, an array of nodes, or a NodeList.\n *\n * @param {!Node|!Array<!Node>|!NodeList} nodes\n */\n downgradeElements: function(nodes) {}\n};\n\ncomponentHandler = (function() {\n 'use strict';\n\n /** @type {!Array<componentHandler.ComponentConfig>} */\n var registeredComponents_ = [];\n\n /** @type {!Array<componentHandler.Component>} */\n var createdComponents_ = [];\n\n var componentConfigProperty_ = 'mdlComponentConfigInternal_';\n\n /**\n * Searches registered components for a class we are interested in using.\n * Optionally replaces a match with passed object if specified.\n *\n * @param {string} name The name of a class we want to use.\n * @param {componentHandler.ComponentConfig=} optReplace Optional object to replace match with.\n * @return {!Object|boolean}\n * @private\n */\n function findRegisteredClass_(name, optReplace) {\n for (var i = 0; i < registeredComponents_.length; i++) {\n if (registeredComponents_[i].className === name) {\n if (typeof optReplace !== 'undefined') {\n registeredComponents_[i] = optReplace;\n }\n return registeredComponents_[i];\n }\n }\n return false;\n }\n\n /**\n * Returns an array of the classNames of the upgraded classes on the element.\n *\n * @param {!Element} element The element to fetch data from.\n * @return {!Array<string>}\n * @private\n */\n function getUpgradedListOfElement_(element) {\n var dataUpgraded = element.getAttribute('data-upgraded');\n // Use `['']` as default value to conform the `,name,name...` style.\n return dataUpgraded === null ? [''] : dataUpgraded.split(',');\n }\n\n /**\n * Returns true if the given element has already been upgraded for the given\n * class.\n *\n * @param {!Element} element The element we want to check.\n * @param {string} jsClass The class to check for.\n * @returns {boolean}\n * @private\n */\n function isElementUpgraded_(element, jsClass) {\n var upgradedList = getUpgradedListOfElement_(element);\n return upgradedList.indexOf(jsClass) !== -1;\n }\n\n /**\n * Searches existing DOM for elements of our component type and upgrades them\n * if they have not already been upgraded.\n *\n * @param {string=} optJsClass the programatic name of the element class we\n * need to create a new instance of.\n * @param {string=} optCssClass the name of the CSS class elements of this\n * type will have.\n */\n function upgradeDomInternal(optJsClass, optCssClass) {\n if (typeof optJsClass === 'undefined' &&\n typeof optCssClass === 'undefined') {\n for (var i = 0; i < registeredComponents_.length; i++) {\n upgradeDomInternal(registeredComponents_[i].className,\n registeredComponents_[i].cssClass);\n }\n } else {\n var jsClass = /** @type {string} */ (optJsClass);\n if (typeof optCssClass === 'undefined') {\n var registeredClass = findRegisteredClass_(jsClass);\n if (registeredClass) {\n optCssClass = registeredClass.cssClass;\n }\n }\n\n var elements = document.querySelectorAll('.' + optCssClass);\n for (var n = 0; n < elements.length; n++) {\n upgradeElementInternal(elements[n], jsClass);\n }\n }\n }\n\n /**\n * Upgrades a specific element rather than all in the DOM.\n *\n * @param {!Element} element The element we wish to upgrade.\n * @param {string=} optJsClass Optional name of the class we want to upgrade\n * the element to.\n */\n function upgradeElementInternal(element, optJsClass) {\n // Verify argument type.\n if (!(typeof element === 'object' && element instanceof Element)) {\n throw new Error('Invalid argument provided to upgrade MDL element.');\n }\n var upgradedList = getUpgradedListOfElement_(element);\n var classesToUpgrade = [];\n // If jsClass is not provided scan the registered components to find the\n // ones matching the element's CSS classList.\n if (!optJsClass) {\n var classList = element.classList;\n registeredComponents_.forEach(function(component) {\n // Match CSS & Not to be upgraded & Not upgraded.\n if (classList.contains(component.cssClass) &&\n classesToUpgrade.indexOf(component) === -1 &&\n !isElementUpgraded_(element, component.className)) {\n classesToUpgrade.push(component);\n }\n });\n } else if (!isElementUpgraded_(element, optJsClass)) {\n classesToUpgrade.push(findRegisteredClass_(optJsClass));\n }\n\n // Upgrade the element for each classes.\n for (var i = 0, n = classesToUpgrade.length, registeredClass; i < n; i++) {\n registeredClass = classesToUpgrade[i];\n if (registeredClass) {\n // Mark element as upgraded.\n upgradedList.push(registeredClass.className);\n element.setAttribute('data-upgraded', upgradedList.join(','));\n var instance = new registeredClass.classConstructor(element);\n instance[componentConfigProperty_] = registeredClass;\n createdComponents_.push(instance);\n // Call any callbacks the user has registered with this component type.\n for (var j = 0, m = registeredClass.callbacks.length; j < m; j++) {\n registeredClass.callbacks[j](element);\n }\n\n if (registeredClass.widget) {\n // Assign per element instance for control over API\n element[registeredClass.className] = instance;\n }\n } else {\n throw new Error(\n 'Unable to find a registered component for the given class.');\n }\n\n var ev;\n if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {\n ev = new CustomEvent('mdl-componentupgraded', {\n bubbles: true, cancelable: false\n });\n } else {\n ev = document.createEvent('Events');\n ev.initEvent('mdl-componentupgraded', true, true);\n }\n element.dispatchEvent(ev);\n }\n }\n\n /**\n * Upgrades a specific list of elements rather than all in the DOM.\n *\n * @param {!Element|!Array<!Element>|!NodeList|!HTMLCollection} elements\n * The elements we wish to upgrade.\n */\n function upgradeElementsInternal(elements) {\n if (!Array.isArray(elements)) {\n if (elements instanceof Element) {\n elements = [elements];\n } else {\n elements = Array.prototype.slice.call(elements);\n }\n }\n for (var i = 0, n = elements.length, element; i < n; i++) {\n element = elements[i];\n if (element instanceof HTMLElement) {\n upgradeElementInternal(element);\n if (element.children.length > 0) {\n upgradeElementsInternal(element.children);\n }\n }\n }\n }\n\n /**\n * Registers a class for future use and attempts to upgrade existing DOM.\n *\n * @param {componentHandler.ComponentConfigPublic} config\n */\n function registerInternal(config) {\n // In order to support both Closure-compiled and uncompiled code accessing\n // this method, we need to allow for both the dot and array syntax for\n // property access. You'll therefore see the `foo.bar || foo['bar']`\n // pattern repeated across this method.\n var widgetMissing = (typeof config.widget === 'undefined' &&\n typeof config['widget'] === 'undefined');\n var widget = true;\n\n if (!widgetMissing) {\n widget = config.widget || config['widget'];\n }\n\n var newConfig = /** @type {componentHandler.ComponentConfig} */ ({\n classConstructor: config.constructor || config['constructor'],\n className: config.classAsString || config['classAsString'],\n cssClass: config.cssClass || config['cssClass'],\n widget: widget,\n callbacks: []\n });\n\n registeredComponents_.forEach(function(item) {\n if (item.cssClass === newConfig.cssClass) {\n throw new Error('The provided cssClass has already been registered: ' + item.cssClass);\n }\n if (item.className === newConfig.className) {\n throw new Error('The provided className has already been registered');\n }\n });\n\n if (config.constructor.prototype\n .hasOwnProperty(componentConfigProperty_)) {\n throw new Error(\n 'MDL component classes must not have ' + componentConfigProperty_ +\n ' defined as a property.');\n }\n\n var found = findRegisteredClass_(config.classAsString, newConfig);\n\n if (!found) {\n registeredComponents_.push(newConfig);\n }\n }\n\n /**\n * Allows user to be alerted to any upgrades that are performed for a given\n * component type\n *\n * @param {string} jsClass The class name of the MDL component we wish\n * to hook into for any upgrades performed.\n * @param {function(!HTMLElement)} callback The function to call upon an\n * upgrade. This function should expect 1 parameter - the HTMLElement which\n * got upgraded.\n */\n function registerUpgradedCallbackInternal(jsClass, callback) {\n var regClass = findRegisteredClass_(jsClass);\n if (regClass) {\n regClass.callbacks.push(callback);\n }\n }\n\n /**\n * Upgrades all registered components found in the current DOM. This is\n * automatically called on window load.\n */\n function upgradeAllRegisteredInternal() {\n for (var n = 0; n < registeredComponents_.length; n++) {\n upgradeDomInternal(registeredComponents_[n].className);\n }\n }\n\n /**\n * Check the component for the downgrade method.\n * Execute if found.\n * Remove component from createdComponents list.\n *\n * @param {?componentHandler.Component} component\n */\n function deconstructComponentInternal(component) {\n if (component) {\n var componentIndex = createdComponents_.indexOf(component);\n createdComponents_.splice(componentIndex, 1);\n\n var upgrades = component.element_.getAttribute('data-upgraded').split(',');\n var componentPlace = upgrades.indexOf(component[componentConfigProperty_].classAsString);\n upgrades.splice(componentPlace, 1);\n component.element_.setAttribute('data-upgraded', upgrades.join(','));\n\n var ev;\n if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {\n ev = new CustomEvent('mdl-componentdowngraded', {\n bubbles: true, cancelable: false\n });\n } else {\n ev = document.createEvent('Events');\n ev.initEvent('mdl-componentdowngraded', true, true);\n }\n component.element_.dispatchEvent(ev);\n }\n }\n\n /**\n * Downgrade either a given node, an array of nodes, or a NodeList.\n *\n * @param {!Node|!Array<!Node>|!NodeList} nodes\n */\n function downgradeNodesInternal(nodes) {\n /**\n * Auxiliary function to downgrade a single node.\n * @param {!Node} node the node to be downgraded\n */\n var downgradeNode = function(node) {\n createdComponents_.filter(function(item) {\n return item.element_ === node;\n }).forEach(deconstructComponentInternal);\n };\n if (nodes instanceof Array || nodes instanceof NodeList) {\n for (var n = 0; n < nodes.length; n++) {\n downgradeNode(nodes[n]);\n }\n } else if (nodes instanceof Node) {\n downgradeNode(nodes);\n } else {\n throw new Error('Invalid argument provided to downgrade MDL nodes.');\n }\n }\n\n // Now return the functions that should be made public with their publicly\n // facing names...\n return {\n upgradeDom: upgradeDomInternal,\n upgradeElement: upgradeElementInternal,\n upgradeElements: upgradeElementsInternal,\n upgradeAllRegistered: upgradeAllRegisteredInternal,\n registerUpgradedCallback: registerUpgradedCallbackInternal,\n register: registerInternal,\n downgradeElements: downgradeNodesInternal\n };\n})();\n\n/**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * constructor: Function,\n * classAsString: string,\n * cssClass: string,\n * widget: (string|boolean|undefined)\n * }}\n */\ncomponentHandler.ComponentConfigPublic; // jshint ignore:line\n\n/**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * constructor: !Function,\n * className: string,\n * cssClass: string,\n * widget: (string|boolean),\n * callbacks: !Array<function(!HTMLElement)>\n * }}\n */\ncomponentHandler.ComponentConfig; // jshint ignore:line\n\n/**\n * Created component (i.e., upgraded element) type as managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * element_: !HTMLElement,\n * className: string,\n * classAsString: string,\n * cssClass: string,\n * widget: string\n * }}\n */\ncomponentHandler.Component; // jshint ignore:line\n\n// Export all symbols, for the benefit of Closure compiler.\n// No effect on uncompiled code.\ncomponentHandler['upgradeDom'] = componentHandler.upgradeDom;\ncomponentHandler['upgradeElement'] = componentHandler.upgradeElement;\ncomponentHandler['upgradeElements'] = componentHandler.upgradeElements;\ncomponentHandler['upgradeAllRegistered'] =\n componentHandler.upgradeAllRegistered;\ncomponentHandler['registerUpgradedCallback'] =\n componentHandler.registerUpgradedCallback;\ncomponentHandler['register'] = componentHandler.register;\ncomponentHandler['downgradeElements'] = componentHandler.downgradeElements;\nwindow.componentHandler = componentHandler;\nwindow['componentHandler'] = componentHandler;\n\nwindow.addEventListener('load', function() {\n 'use strict';\n\n /**\n * Performs a \"Cutting the mustard\" test. If the browser supports the features\n * tested, adds a mdl-js class to the <html> element. It then upgrades all MDL\n * components requiring JavaScript.\n */\n if ('classList' in document.createElement('div') &&\n 'querySelector' in document &&\n 'addEventListener' in window && Array.prototype.forEach) {\n document.documentElement.classList.add('mdl-js');\n } else {\n /**\n * Dummy function to avoid JS errors.\n */\n componentHandler.upgradeElement = function() {};\n /**\n * Dummy function to avoid JS errors.\n */\n componentHandler.register = function() {};\n }\n});\n\n// Source: https://github.com/darius/requestAnimationFrame/blob/master/requestAnimationFrame.js\n// Adapted from https://gist.github.com/paulirish/1579671 which derived from\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n// requestAnimationFrame polyfill by Erik Möller.\n// Fixes from Paul Irish, Tino Zijdel, Andrew Mao, Klemen Slavič, Darius Bacon\n// MIT license\nif (!Date.now) {\n /**\n * Date.now polyfill.\n * @return {number} the current Date\n */\n Date.now = function () {\n return new Date().getTime();\n };\n Date['now'] = Date.now;\n}\nvar vendors = [\n 'webkit',\n 'moz'\n];\nfor (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];\n window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];\n window['requestAnimationFrame'] = window.requestAnimationFrame;\n window['cancelAnimationFrame'] = window.cancelAnimationFrame;\n}\nif (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n /**\n * requestAnimationFrame polyfill.\n * @param {!Function} callback the callback function.\n */\n window.requestAnimationFrame = function (callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function () {\n callback(lastTime = nextTime);\n }, nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n window['requestAnimationFrame'] = window.requestAnimationFrame;\n window['cancelAnimationFrame'] = window.cancelAnimationFrame;\n}\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Button MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialButton = function MaterialButton(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialButton'] = MaterialButton;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialButton.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialButton.prototype.CssClasses_ = {\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-button__ripple-container',\n RIPPLE: 'mdl-ripple'\n};\n/**\n * Handle blur of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialButton.prototype.blurHandler_ = function (event) {\n if (event) {\n this.element_.blur();\n }\n};\n// Public methods.\n/**\n * Disable button.\n *\n * @public\n */\nMaterialButton.prototype.disable = function () {\n this.element_.disabled = true;\n};\nMaterialButton.prototype['disable'] = MaterialButton.prototype.disable;\n/**\n * Enable button.\n *\n * @public\n */\nMaterialButton.prototype.enable = function () {\n this.element_.disabled = false;\n};\nMaterialButton.prototype['enable'] = MaterialButton.prototype.enable;\n/**\n * Initialize element.\n */\nMaterialButton.prototype.init = function () {\n if (this.element_) {\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleElement_ = document.createElement('span');\n this.rippleElement_.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(this.rippleElement_);\n this.boundRippleBlurHandler = this.blurHandler_.bind(this);\n this.rippleElement_.addEventListener('mouseup', this.boundRippleBlurHandler);\n this.element_.appendChild(rippleContainer);\n }\n this.boundButtonBlurHandler = this.blurHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundButtonBlurHandler);\n this.element_.addEventListener('mouseleave', this.boundButtonBlurHandler);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialButton,\n classAsString: 'MaterialButton',\n cssClass: 'mdl-js-button',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Checkbox MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialCheckbox = function MaterialCheckbox(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialCheckbox'] = MaterialCheckbox;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialCheckbox.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialCheckbox.prototype.CssClasses_ = {\n INPUT: 'mdl-checkbox__input',\n BOX_OUTLINE: 'mdl-checkbox__box-outline',\n FOCUS_HELPER: 'mdl-checkbox__focus-helper',\n TICK_OUTLINE: 'mdl-checkbox__tick-outline',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-checkbox__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialCheckbox.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialCheckbox.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the inputs toggle state and update display.\n *\n * @public\n */\nMaterialCheckbox.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\nMaterialCheckbox.prototype['checkToggleState'] = MaterialCheckbox.prototype.checkToggleState;\n/**\n * Check the inputs disabled state and update display.\n *\n * @public\n */\nMaterialCheckbox.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialCheckbox.prototype['checkDisabled'] = MaterialCheckbox.prototype.checkDisabled;\n/**\n * Disable checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\nMaterialCheckbox.prototype['disable'] = MaterialCheckbox.prototype.disable;\n/**\n * Enable checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\nMaterialCheckbox.prototype['enable'] = MaterialCheckbox.prototype.enable;\n/**\n * Check checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.check = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\nMaterialCheckbox.prototype['check'] = MaterialCheckbox.prototype.check;\n/**\n * Uncheck checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.uncheck = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\nMaterialCheckbox.prototype['uncheck'] = MaterialCheckbox.prototype.uncheck;\n/**\n * Initialize element.\n */\nMaterialCheckbox.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n var boxOutline = document.createElement('span');\n boxOutline.classList.add(this.CssClasses_.BOX_OUTLINE);\n var tickContainer = document.createElement('span');\n tickContainer.classList.add(this.CssClasses_.FOCUS_HELPER);\n var tickOutline = document.createElement('span');\n tickOutline.classList.add(this.CssClasses_.TICK_OUTLINE);\n boxOutline.appendChild(tickOutline);\n this.element_.appendChild(tickContainer);\n this.element_.appendChild(boxOutline);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this);\n this.boundInputOnFocus = this.onFocus_.bind(this);\n this.boundInputOnBlur = this.onBlur_.bind(this);\n this.boundElementMouseUp = this.onMouseUp_.bind(this);\n this.inputElement_.addEventListener('change', this.boundInputOnChange);\n this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n this.element_.addEventListener('mouseup', this.boundElementMouseUp);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialCheckbox,\n classAsString: 'MaterialCheckbox',\n cssClass: 'mdl-js-checkbox',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for icon toggle MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialIconToggle = function MaterialIconToggle(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialIconToggle'] = MaterialIconToggle;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialIconToggle.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialIconToggle.prototype.CssClasses_ = {\n INPUT: 'mdl-icon-toggle__input',\n JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-icon-toggle__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialIconToggle.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialIconToggle.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the inputs toggle state and update display.\n *\n * @public\n */\nMaterialIconToggle.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\nMaterialIconToggle.prototype['checkToggleState'] = MaterialIconToggle.prototype.checkToggleState;\n/**\n * Check the inputs disabled state and update display.\n *\n * @public\n */\nMaterialIconToggle.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialIconToggle.prototype['checkDisabled'] = MaterialIconToggle.prototype.checkDisabled;\n/**\n * Disable icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\nMaterialIconToggle.prototype['disable'] = MaterialIconToggle.prototype.disable;\n/**\n * Enable icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\nMaterialIconToggle.prototype['enable'] = MaterialIconToggle.prototype.enable;\n/**\n * Check icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.check = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\nMaterialIconToggle.prototype['check'] = MaterialIconToggle.prototype.check;\n/**\n * Uncheck icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.uncheck = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\nMaterialIconToggle.prototype['uncheck'] = MaterialIconToggle.prototype.uncheck;\n/**\n * Initialize element.\n */\nMaterialIconToggle.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n if (this.element_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.JS_RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this);\n this.boundInputOnFocus = this.onFocus_.bind(this);\n this.boundInputOnBlur = this.onBlur_.bind(this);\n this.boundElementOnMouseUp = this.onMouseUp_.bind(this);\n this.inputElement_.addEventListener('change', this.boundInputOnChange);\n this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n this.element_.addEventListener('mouseup', this.boundElementOnMouseUp);\n this.updateClasses_();\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialIconToggle,\n classAsString: 'MaterialIconToggle',\n cssClass: 'mdl-js-icon-toggle',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for dropdown MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialMenu = function MaterialMenu(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialMenu'] = MaterialMenu;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialMenu.prototype.Constant_ = {\n // Total duration of the menu animation.\n TRANSITION_DURATION_SECONDS: 0.3,\n // The fraction of the total duration we want to use for menu item animations.\n TRANSITION_DURATION_FRACTION: 0.8,\n // How long the menu stays open after choosing an option (so the user can see\n // the ripple).\n CLOSE_TIMEOUT: 150\n};\n/**\n * Keycodes, for code readability.\n *\n * @enum {number}\n * @private\n */\nMaterialMenu.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n UP_ARROW: 38,\n DOWN_ARROW: 40\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialMenu.prototype.CssClasses_ = {\n CONTAINER: 'mdl-menu__container',\n OUTLINE: 'mdl-menu__outline',\n ITEM: 'mdl-menu__item',\n ITEM_RIPPLE_CONTAINER: 'mdl-menu__item-ripple-container',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE: 'mdl-ripple',\n // Statuses\n IS_UPGRADED: 'is-upgraded',\n IS_VISIBLE: 'is-visible',\n IS_ANIMATING: 'is-animating',\n // Alignment options\n BOTTOM_LEFT: 'mdl-menu--bottom-left',\n // This is the default.\n BOTTOM_RIGHT: 'mdl-menu--bottom-right',\n TOP_LEFT: 'mdl-menu--top-left',\n TOP_RIGHT: 'mdl-menu--top-right',\n UNALIGNED: 'mdl-menu--unaligned'\n};\n/**\n * Initialize element.\n */\nMaterialMenu.prototype.init = function () {\n if (this.element_) {\n // Create container for the menu.\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n this.container_ = container;\n // Create outline for the menu (shadow and background).\n var outline = document.createElement('div');\n outline.classList.add(this.CssClasses_.OUTLINE);\n this.outline_ = outline;\n container.insertBefore(outline, this.element_);\n // Find the \"for\" element and bind events to it.\n var forElId = this.element_.getAttribute('for') || this.element_.getAttribute('data-mdl-for');\n var forEl = null;\n if (forElId) {\n forEl = document.getElementById(forElId);\n if (forEl) {\n this.forElement_ = forEl;\n forEl.addEventListener('click', this.handleForClick_.bind(this));\n forEl.addEventListener('keydown', this.handleForKeyboardEvent_.bind(this));\n }\n }\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n this.boundItemKeydown_ = this.handleItemKeyboardEvent_.bind(this);\n this.boundItemClick_ = this.handleItemClick_.bind(this);\n for (var i = 0; i < items.length; i++) {\n // Add a listener to each menu item.\n items[i].addEventListener('click', this.boundItemClick_);\n // Add a tab index to each menu item.\n items[i].tabIndex = '-1';\n // Add a keyboard listener to each menu item.\n items[i].addEventListener('keydown', this.boundItemKeydown_);\n }\n // Add ripple classes to each item, if the user has enabled ripples.\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n for (i = 0; i < items.length; i++) {\n var item = items[i];\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.ITEM_RIPPLE_CONTAINER);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n item.appendChild(rippleContainer);\n item.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n }\n }\n // Copy alignment classes to the container, so the outline can use them.\n if (this.element_.classList.contains(this.CssClasses_.BOTTOM_LEFT)) {\n this.outline_.classList.add(this.CssClasses_.BOTTOM_LEFT);\n }\n if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n this.outline_.classList.add(this.CssClasses_.BOTTOM_RIGHT);\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n this.outline_.classList.add(this.CssClasses_.TOP_LEFT);\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n this.outline_.classList.add(this.CssClasses_.TOP_RIGHT);\n }\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n this.outline_.classList.add(this.CssClasses_.UNALIGNED);\n }\n container.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n/**\n * Handles a click on the \"for\" element, by positioning the menu and then\n * toggling it.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleForClick_ = function (evt) {\n if (this.element_ && this.forElement_) {\n var rect = this.forElement_.getBoundingClientRect();\n var forRect = this.forElement_.parentElement.getBoundingClientRect();\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n // Position below the \"for\" element, aligned to its right.\n this.container_.style.right = forRect.right - rect.right + 'px';\n this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n // Position above the \"for\" element, aligned to its left.\n this.container_.style.left = this.forElement_.offsetLeft + 'px';\n this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n // Position above the \"for\" element, aligned to its right.\n this.container_.style.right = forRect.right - rect.right + 'px';\n this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n } else {\n // Default: position below the \"for\" element, aligned to its left.\n this.container_.style.left = this.forElement_.offsetLeft + 'px';\n this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n }\n }\n this.toggle(evt);\n};\n/**\n * Handles a keyboard event on the \"for\" element.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleForKeyboardEvent_ = function (evt) {\n if (this.element_ && this.container_ && this.forElement_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n items[items.length - 1].focus();\n } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n evt.preventDefault();\n items[0].focus();\n }\n }\n }\n};\n/**\n * Handles a keyboard event on an item.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleItemKeyboardEvent_ = function (evt) {\n if (this.element_ && this.container_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n var currentIndex = Array.prototype.slice.call(items).indexOf(evt.target);\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n if (currentIndex > 0) {\n items[currentIndex - 1].focus();\n } else {\n items[items.length - 1].focus();\n }\n } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n evt.preventDefault();\n if (items.length > currentIndex + 1) {\n items[currentIndex + 1].focus();\n } else {\n items[0].focus();\n }\n } else if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n evt.preventDefault();\n // Send mousedown and mouseup to trigger ripple.\n var e = new MouseEvent('mousedown');\n evt.target.dispatchEvent(e);\n e = new MouseEvent('mouseup');\n evt.target.dispatchEvent(e);\n // Send click.\n evt.target.click();\n } else if (evt.keyCode === this.Keycodes_.ESCAPE) {\n evt.preventDefault();\n this.hide();\n }\n }\n }\n};\n/**\n * Handles a click event on an item.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleItemClick_ = function (evt) {\n if (evt.target.hasAttribute('disabled')) {\n evt.stopPropagation();\n } else {\n // Wait some time before closing menu, so the user can see the ripple.\n this.closing_ = true;\n window.setTimeout(function (evt) {\n this.hide();\n this.closing_ = false;\n }.bind(this), this.Constant_.CLOSE_TIMEOUT);\n }\n};\n/**\n * Calculates the initial clip (for opening the menu) or final clip (for closing\n * it), and applies it. This allows us to animate from or to the correct point,\n * that is, the point it's aligned to in the \"for\" element.\n *\n * @param {number} height Height of the clip rectangle\n * @param {number} width Width of the clip rectangle\n * @private\n */\nMaterialMenu.prototype.applyClip_ = function (height, width) {\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n // Do not clip.\n this.element_.style.clip = '';\n } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n // Clip to the top right corner of the menu.\n this.element_.style.clip = 'rect(0 ' + width + 'px ' + '0 ' + width + 'px)';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n // Clip to the bottom left corner of the menu.\n this.element_.style.clip = 'rect(' + height + 'px 0 ' + height + 'px 0)';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n // Clip to the bottom right corner of the menu.\n this.element_.style.clip = 'rect(' + height + 'px ' + width + 'px ' + height + 'px ' + width + 'px)';\n } else {\n // Default: do not clip (same as clipping to the top left corner).\n this.element_.style.clip = '';\n }\n};\n/**\n * Cleanup function to remove animation listeners.\n *\n * @param {Event} evt\n * @private\n */\nMaterialMenu.prototype.removeAnimationEndListener_ = function (evt) {\n evt.target.classList.remove(MaterialMenu.prototype.CssClasses_.IS_ANIMATING);\n};\n/**\n * Adds an event listener to clean up after the animation ends.\n *\n * @private\n */\nMaterialMenu.prototype.addAnimationEndListener_ = function () {\n this.element_.addEventListener('transitionend', this.removeAnimationEndListener_);\n this.element_.addEventListener('webkitTransitionEnd', this.removeAnimationEndListener_);\n};\n/**\n * Displays the menu.\n *\n * @public\n */\nMaterialMenu.prototype.show = function (evt) {\n if (this.element_ && this.container_ && this.outline_) {\n // Measure the inner element.\n var height = this.element_.getBoundingClientRect().height;\n var width = this.element_.getBoundingClientRect().width;\n // Apply the inner element's size to the container and outline.\n this.container_.style.width = width + 'px';\n this.container_.style.height = height + 'px';\n this.outline_.style.width = width + 'px';\n this.outline_.style.height = height + 'px';\n var transitionDuration = this.Constant_.TRANSITION_DURATION_SECONDS * this.Constant_.TRANSITION_DURATION_FRACTION;\n // Calculate transition delays for individual menu items, so that they fade\n // in one at a time.\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n for (var i = 0; i < items.length; i++) {\n var itemDelay = null;\n if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT) || this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n itemDelay = (height - items[i].offsetTop - items[i].offsetHeight) / height * transitionDuration + 's';\n } else {\n itemDelay = items[i].offsetTop / height * transitionDuration + 's';\n }\n items[i].style.transitionDelay = itemDelay;\n }\n // Apply the initial clip to the text before we start animating.\n this.applyClip_(height, width);\n // Wait for the next frame, turn on animation, and apply the final clip.\n // Also make it visible. This triggers the transitions.\n window.requestAnimationFrame(function () {\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n this.element_.style.clip = 'rect(0 ' + width + 'px ' + height + 'px 0)';\n this.container_.classList.add(this.CssClasses_.IS_VISIBLE);\n }.bind(this));\n // Clean up after the animation is complete.\n this.addAnimationEndListener_();\n // Add a click listener to the document, to close the menu.\n var callback = function (e) {\n // Check to see if the document is processing the same event that\n // displayed the menu in the first place. If so, do nothing.\n // Also check to see if the menu is in the process of closing itself, and\n // do nothing in that case.\n // Also check if the clicked element is a menu item\n // if so, do nothing.\n if (e !== evt && !this.closing_ && e.target.parentNode !== this.element_) {\n document.removeEventListener('click', callback);\n this.hide();\n }\n }.bind(this);\n document.addEventListener('click', callback);\n }\n};\nMaterialMenu.prototype['show'] = MaterialMenu.prototype.show;\n/**\n * Hides the menu.\n *\n * @public\n */\nMaterialMenu.prototype.hide = function () {\n if (this.element_ && this.container_ && this.outline_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n // Remove all transition delays; menu items fade out concurrently.\n for (var i = 0; i < items.length; i++) {\n items[i].style.removeProperty('transition-delay');\n }\n // Measure the inner element.\n var rect = this.element_.getBoundingClientRect();\n var height = rect.height;\n var width = rect.width;\n // Turn on animation, and apply the final clip. Also make invisible.\n // This triggers the transitions.\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n this.applyClip_(height, width);\n this.container_.classList.remove(this.CssClasses_.IS_VISIBLE);\n // Clean up after the animation is complete.\n this.addAnimationEndListener_();\n }\n};\nMaterialMenu.prototype['hide'] = MaterialMenu.prototype.hide;\n/**\n * Displays or hides the menu, depending on current state.\n *\n * @public\n */\nMaterialMenu.prototype.toggle = function (evt) {\n if (this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n this.hide();\n } else {\n this.show(evt);\n }\n};\nMaterialMenu.prototype['toggle'] = MaterialMenu.prototype.toggle;\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialMenu,\n classAsString: 'MaterialMenu',\n cssClass: 'mdl-js-menu',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Progress MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialProgress = function MaterialProgress(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialProgress'] = MaterialProgress;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialProgress.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialProgress.prototype.CssClasses_ = { INDETERMINATE_CLASS: 'mdl-progress__indeterminate' };\n/**\n * Set the current progress of the progressbar.\n *\n * @param {number} p Percentage of the progress (0-100)\n * @public\n */\nMaterialProgress.prototype.setProgress = function (p) {\n if (this.element_.classList.contains(this.CssClasses_.INDETERMINATE_CLASS)) {\n return;\n }\n this.progressbar_.style.width = p + '%';\n};\nMaterialProgress.prototype['setProgress'] = MaterialProgress.prototype.setProgress;\n/**\n * Set the current progress of the buffer.\n *\n * @param {number} p Percentage of the buffer (0-100)\n * @public\n */\nMaterialProgress.prototype.setBuffer = function (p) {\n this.bufferbar_.style.width = p + '%';\n this.auxbar_.style.width = 100 - p + '%';\n};\nMaterialProgress.prototype['setBuffer'] = MaterialProgress.prototype.setBuffer;\n/**\n * Initialize element.\n */\nMaterialProgress.prototype.init = function () {\n if (this.element_) {\n var el = document.createElement('div');\n el.className = 'progressbar bar bar1';\n this.element_.appendChild(el);\n this.progressbar_ = el;\n el = document.createElement('div');\n el.className = 'bufferbar bar bar2';\n this.element_.appendChild(el);\n this.bufferbar_ = el;\n el = document.createElement('div');\n el.className = 'auxbar bar bar3';\n this.element_.appendChild(el);\n this.auxbar_ = el;\n this.progressbar_.style.width = '0%';\n this.bufferbar_.style.width = '100%';\n this.auxbar_.style.width = '0%';\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialProgress,\n classAsString: 'MaterialProgress',\n cssClass: 'mdl-js-progress',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Radio MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialRadio = function MaterialRadio(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialRadio'] = MaterialRadio;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialRadio.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialRadio.prototype.CssClasses_ = {\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked',\n IS_UPGRADED: 'is-upgraded',\n JS_RADIO: 'mdl-js-radio',\n RADIO_BTN: 'mdl-radio__button',\n RADIO_OUTER_CIRCLE: 'mdl-radio__outer-circle',\n RADIO_INNER_CIRCLE: 'mdl-radio__inner-circle',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-radio__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onChange_ = function (event) {\n // Since other radio buttons don't get change events, we need to look for\n // them to update their classes.\n var radios = document.getElementsByClassName(this.CssClasses_.JS_RADIO);\n for (var i = 0; i < radios.length; i++) {\n var button = radios[i].querySelector('.' + this.CssClasses_.RADIO_BTN);\n // Different name == different group, so no point updating those.\n if (button.getAttribute('name') === this.btnElement_.getAttribute('name')) {\n radios[i]['MaterialRadio'].updateClasses_();\n }\n }\n};\n/**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onMouseup_ = function (event) {\n this.blur_();\n};\n/**\n * Update classes.\n *\n * @private\n */\nMaterialRadio.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialRadio.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.btnElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the components disabled state.\n *\n * @public\n */\nMaterialRadio.prototype.checkDisabled = function () {\n if (this.btnElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialRadio.prototype['checkDisabled'] = MaterialRadio.prototype.checkDisabled;\n/**\n * Check the components toggled state.\n *\n * @public\n */\nMaterialRadio.prototype.checkToggleState = function () {\n if (this.btnElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\nMaterialRadio.prototype['checkToggleState'] = MaterialRadio.prototype.checkToggleState;\n/**\n * Disable radio.\n *\n * @public\n */\nMaterialRadio.prototype.disable = function () {\n this.btnElement_.disabled = true;\n this.updateClasses_();\n};\nMaterialRadio.prototype['disable'] = MaterialRadio.prototype.disable;\n/**\n * Enable radio.\n *\n * @public\n */\nMaterialRadio.prototype.enable = function () {\n this.btnElement_.disabled = false;\n this.updateClasses_();\n};\nMaterialRadio.prototype['enable'] = MaterialRadio.prototype.enable;\n/**\n * Check radio.\n *\n * @public\n */\nMaterialRadio.prototype.check = function () {\n this.btnElement_.checked = true;\n this.onChange_(null);\n};\nMaterialRadio.prototype['check'] = MaterialRadio.prototype.check;\n/**\n * Uncheck radio.\n *\n * @public\n */\nMaterialRadio.prototype.uncheck = function () {\n this.btnElement_.checked = false;\n this.onChange_(null);\n};\nMaterialRadio.prototype['uncheck'] = MaterialRadio.prototype.uncheck;\n/**\n * Initialize element.\n */\nMaterialRadio.prototype.init = function () {\n if (this.element_) {\n this.btnElement_ = this.element_.querySelector('.' + this.CssClasses_.RADIO_BTN);\n this.boundChangeHandler_ = this.onChange_.bind(this);\n this.boundFocusHandler_ = this.onChange_.bind(this);\n this.boundBlurHandler_ = this.onBlur_.bind(this);\n this.boundMouseUpHandler_ = this.onMouseup_.bind(this);\n var outerCircle = document.createElement('span');\n outerCircle.classList.add(this.CssClasses_.RADIO_OUTER_CIRCLE);\n var innerCircle = document.createElement('span');\n innerCircle.classList.add(this.CssClasses_.RADIO_INNER_CIRCLE);\n this.element_.appendChild(outerCircle);\n this.element_.appendChild(innerCircle);\n var rippleContainer;\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CENTER);\n rippleContainer.addEventListener('mouseup', this.boundMouseUpHandler_);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n this.element_.appendChild(rippleContainer);\n }\n this.btnElement_.addEventListener('change', this.boundChangeHandler_);\n this.btnElement_.addEventListener('focus', this.boundFocusHandler_);\n this.btnElement_.addEventListener('blur', this.boundBlurHandler_);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler_);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialRadio,\n classAsString: 'MaterialRadio',\n cssClass: 'mdl-js-radio',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Slider MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSlider = function MaterialSlider(element) {\n this.element_ = element;\n // Browser feature detection.\n this.isIE_ = window.navigator.msPointerEnabled;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialSlider'] = MaterialSlider;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialSlider.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialSlider.prototype.CssClasses_ = {\n IE_CONTAINER: 'mdl-slider__ie-container',\n SLIDER_CONTAINER: 'mdl-slider__container',\n BACKGROUND_FLEX: 'mdl-slider__background-flex',\n BACKGROUND_LOWER: 'mdl-slider__background-lower',\n BACKGROUND_UPPER: 'mdl-slider__background-upper',\n IS_LOWEST_VALUE: 'is-lowest-value',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Handle input on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onInput_ = function (event) {\n this.updateValueStyles_();\n};\n/**\n * Handle change on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onChange_ = function (event) {\n this.updateValueStyles_();\n};\n/**\n * Handle mouseup on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onMouseUp_ = function (event) {\n event.target.blur();\n};\n/**\n * Handle mousedown on container element.\n * This handler is purpose is to not require the use to click\n * exactly on the 2px slider element, as FireFox seems to be very\n * strict about this.\n *\n * @param {Event} event The event that fired.\n * @private\n * @suppress {missingProperties}\n */\nMaterialSlider.prototype.onContainerMouseDown_ = function (event) {\n // If this click is not on the parent element (but rather some child)\n // ignore. It may still bubble up.\n if (event.target !== this.element_.parentElement) {\n return;\n }\n // Discard the original event and create a new event that\n // is on the slider element.\n event.preventDefault();\n var newEvent = new MouseEvent('mousedown', {\n target: event.target,\n buttons: event.buttons,\n clientX: event.clientX,\n clientY: this.element_.getBoundingClientRect().y\n });\n this.element_.dispatchEvent(newEvent);\n};\n/**\n * Handle updating of values.\n *\n * @private\n */\nMaterialSlider.prototype.updateValueStyles_ = function () {\n // Calculate and apply percentages to div structure behind slider.\n var fraction = (this.element_.value - this.element_.min) / (this.element_.max - this.element_.min);\n if (fraction === 0) {\n this.element_.classList.add(this.CssClasses_.IS_LOWEST_VALUE);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_LOWEST_VALUE);\n }\n if (!this.isIE_) {\n this.backgroundLower_.style.flex = fraction;\n this.backgroundLower_.style.webkitFlex = fraction;\n this.backgroundUpper_.style.flex = 1 - fraction;\n this.backgroundUpper_.style.webkitFlex = 1 - fraction;\n }\n};\n// Public methods.\n/**\n * Disable slider.\n *\n * @public\n */\nMaterialSlider.prototype.disable = function () {\n this.element_.disabled = true;\n};\nMaterialSlider.prototype['disable'] = MaterialSlider.prototype.disable;\n/**\n * Enable slider.\n *\n * @public\n */\nMaterialSlider.prototype.enable = function () {\n this.element_.disabled = false;\n};\nMaterialSlider.prototype['enable'] = MaterialSlider.prototype.enable;\n/**\n * Update slider value.\n *\n * @param {number} value The value to which to set the control (optional).\n * @public\n */\nMaterialSlider.prototype.change = function (value) {\n if (typeof value !== 'undefined') {\n this.element_.value = value;\n }\n this.updateValueStyles_();\n};\nMaterialSlider.prototype['change'] = MaterialSlider.prototype.change;\n/**\n * Initialize element.\n */\nMaterialSlider.prototype.init = function () {\n if (this.element_) {\n if (this.isIE_) {\n // Since we need to specify a very large height in IE due to\n // implementation limitations, we add a parent here that trims it down to\n // a reasonable size.\n var containerIE = document.createElement('div');\n containerIE.classList.add(this.CssClasses_.IE_CONTAINER);\n this.element_.parentElement.insertBefore(containerIE, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n containerIE.appendChild(this.element_);\n } else {\n // For non-IE browsers, we need a div structure that sits behind the\n // slider and allows us to style the left and right sides of it with\n // different colors.\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.SLIDER_CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n var backgroundFlex = document.createElement('div');\n backgroundFlex.classList.add(this.CssClasses_.BACKGROUND_FLEX);\n container.appendChild(backgroundFlex);\n this.backgroundLower_ = document.createElement('div');\n this.backgroundLower_.classList.add(this.CssClasses_.BACKGROUND_LOWER);\n backgroundFlex.appendChild(this.backgroundLower_);\n this.backgroundUpper_ = document.createElement('div');\n this.backgroundUpper_.classList.add(this.CssClasses_.BACKGROUND_UPPER);\n backgroundFlex.appendChild(this.backgroundUpper_);\n }\n this.boundInputHandler = this.onInput_.bind(this);\n this.boundChangeHandler = this.onChange_.bind(this);\n this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n this.boundContainerMouseDownHandler = this.onContainerMouseDown_.bind(this);\n this.element_.addEventListener('input', this.boundInputHandler);\n this.element_.addEventListener('change', this.boundChangeHandler);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n this.element_.parentElement.addEventListener('mousedown', this.boundContainerMouseDownHandler);\n this.updateValueStyles_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSlider,\n classAsString: 'MaterialSlider',\n cssClass: 'mdl-js-slider',\n widget: true\n});\n/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Snackbar MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSnackbar = function MaterialSnackbar(element) {\n this.element_ = element;\n this.textElement_ = this.element_.querySelector('.' + this.cssClasses_.MESSAGE);\n this.actionElement_ = this.element_.querySelector('.' + this.cssClasses_.ACTION);\n if (!this.textElement_) {\n throw new Error('There must be a message element for a snackbar.');\n }\n if (!this.actionElement_) {\n throw new Error('There must be an action element for a snackbar.');\n }\n this.active = false;\n this.actionHandler_ = undefined;\n this.message_ = undefined;\n this.actionText_ = undefined;\n this.queuedNotifications_ = [];\n this.setActionHidden_(true);\n};\nwindow['MaterialSnackbar'] = MaterialSnackbar;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialSnackbar.prototype.Constant_ = {\n // The duration of the snackbar show/hide animation, in ms.\n ANIMATION_LENGTH: 250\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialSnackbar.prototype.cssClasses_ = {\n SNACKBAR: 'mdl-snackbar',\n MESSAGE: 'mdl-snackbar__text',\n ACTION: 'mdl-snackbar__action',\n ACTIVE: 'mdl-snackbar--active'\n};\n/**\n * Display the snackbar.\n *\n * @private\n */\nMaterialSnackbar.prototype.displaySnackbar_ = function () {\n this.element_.setAttribute('aria-hidden', 'true');\n if (this.actionHandler_) {\n this.actionElement_.textContent = this.actionText_;\n this.actionElement_.addEventListener('click', this.actionHandler_);\n this.setActionHidden_(false);\n }\n this.textElement_.textContent = this.message_;\n this.element_.classList.add(this.cssClasses_.ACTIVE);\n this.element_.setAttribute('aria-hidden', 'false');\n setTimeout(this.cleanup_.bind(this), this.timeout_);\n};\n/**\n * Show the snackbar.\n *\n * @param {Object} data The data for the notification.\n * @public\n */\nMaterialSnackbar.prototype.showSnackbar = function (data) {\n if (data === undefined) {\n throw new Error('Please provide a data object with at least a message to display.');\n }\n if (data['message'] === undefined) {\n throw new Error('Please provide a message to be displayed.');\n }\n if (data['actionHandler'] && !data['actionText']) {\n throw new Error('Please provide action text with the handler.');\n }\n if (this.active) {\n this.queuedNotifications_.push(data);\n } else {\n this.active = true;\n this.message_ = data['message'];\n if (data['timeout']) {\n this.timeout_ = data['timeout'];\n } else {\n this.timeout_ = 2750;\n }\n if (data['actionHandler']) {\n this.actionHandler_ = data['actionHandler'];\n }\n if (data['actionText']) {\n this.actionText_ = data['actionText'];\n }\n this.displaySnackbar_();\n }\n};\nMaterialSnackbar.prototype['showSnackbar'] = MaterialSnackbar.prototype.showSnackbar;\n/**\n * Check if the queue has items within it.\n * If it does, display the next entry.\n *\n * @private\n */\nMaterialSnackbar.prototype.checkQueue_ = function () {\n if (this.queuedNotifications_.length > 0) {\n this.showSnackbar(this.queuedNotifications_.shift());\n }\n};\n/**\n * Cleanup the snackbar event listeners and accessiblity attributes.\n *\n * @private\n */\nMaterialSnackbar.prototype.cleanup_ = function () {\n this.element_.classList.remove(this.cssClasses_.ACTIVE);\n setTimeout(function () {\n this.element_.setAttribute('aria-hidden', 'true');\n this.textElement_.textContent = '';\n if (!Boolean(this.actionElement_.getAttribute('aria-hidden'))) {\n this.setActionHidden_(true);\n this.actionElement_.textContent = '';\n this.actionElement_.removeEventListener('click', this.actionHandler_);\n }\n this.actionHandler_ = undefined;\n this.message_ = undefined;\n this.actionText_ = undefined;\n this.active = false;\n this.checkQueue_();\n }.bind(this), this.Constant_.ANIMATION_LENGTH);\n};\n/**\n * Set the action handler hidden state.\n *\n * @param {boolean} value\n * @private\n */\nMaterialSnackbar.prototype.setActionHidden_ = function (value) {\n if (value) {\n this.actionElement_.setAttribute('aria-hidden', 'true');\n } else {\n this.actionElement_.removeAttribute('aria-hidden');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSnackbar,\n classAsString: 'MaterialSnackbar',\n cssClass: 'mdl-js-snackbar',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Spinner MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n * @constructor\n */\nvar MaterialSpinner = function MaterialSpinner(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialSpinner'] = MaterialSpinner;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialSpinner.prototype.Constant_ = { MDL_SPINNER_LAYER_COUNT: 4 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialSpinner.prototype.CssClasses_ = {\n MDL_SPINNER_LAYER: 'mdl-spinner__layer',\n MDL_SPINNER_CIRCLE_CLIPPER: 'mdl-spinner__circle-clipper',\n MDL_SPINNER_CIRCLE: 'mdl-spinner__circle',\n MDL_SPINNER_GAP_PATCH: 'mdl-spinner__gap-patch',\n MDL_SPINNER_LEFT: 'mdl-spinner__left',\n MDL_SPINNER_RIGHT: 'mdl-spinner__right'\n};\n/**\n * Auxiliary method to create a spinner layer.\n *\n * @param {number} index Index of the layer to be created.\n * @public\n */\nMaterialSpinner.prototype.createLayer = function (index) {\n var layer = document.createElement('div');\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER);\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER + '-' + index);\n var leftClipper = document.createElement('div');\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);\n var gapPatch = document.createElement('div');\n gapPatch.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);\n var rightClipper = document.createElement('div');\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);\n var circleOwners = [\n leftClipper,\n gapPatch,\n rightClipper\n ];\n for (var i = 0; i < circleOwners.length; i++) {\n var circle = document.createElement('div');\n circle.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE);\n circleOwners[i].appendChild(circle);\n }\n layer.appendChild(leftClipper);\n layer.appendChild(gapPatch);\n layer.appendChild(rightClipper);\n this.element_.appendChild(layer);\n};\nMaterialSpinner.prototype['createLayer'] = MaterialSpinner.prototype.createLayer;\n/**\n * Stops the spinner animation.\n * Public method for users who need to stop the spinner for any reason.\n *\n * @public\n */\nMaterialSpinner.prototype.stop = function () {\n this.element_.classList.remove('is-active');\n};\nMaterialSpinner.prototype['stop'] = MaterialSpinner.prototype.stop;\n/**\n * Starts the spinner animation.\n * Public method for users who need to manually start the spinner for any reason\n * (instead of just adding the 'is-active' class to their markup).\n *\n * @public\n */\nMaterialSpinner.prototype.start = function () {\n this.element_.classList.add('is-active');\n};\nMaterialSpinner.prototype['start'] = MaterialSpinner.prototype.start;\n/**\n * Initialize element.\n */\nMaterialSpinner.prototype.init = function () {\n if (this.element_) {\n for (var i = 1; i <= this.Constant_.MDL_SPINNER_LAYER_COUNT; i++) {\n this.createLayer(i);\n }\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSpinner,\n classAsString: 'MaterialSpinner',\n cssClass: 'mdl-js-spinner',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Checkbox MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSwitch = function MaterialSwitch(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialSwitch'] = MaterialSwitch;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialSwitch.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialSwitch.prototype.CssClasses_ = {\n INPUT: 'mdl-switch__input',\n TRACK: 'mdl-switch__track',\n THUMB: 'mdl-switch__thumb',\n FOCUS_HELPER: 'mdl-switch__focus-helper',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-switch__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialSwitch.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialSwitch.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the components disabled state.\n *\n * @public\n */\nMaterialSwitch.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialSwitch.prototype['checkDisabled'] = MaterialSwitch.prototype.checkDisabled;\n/**\n * Check the components toggled state.\n *\n * @public\n */\nMaterialSwitch.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\nMaterialSwitch.prototype['checkToggleState'] = MaterialSwitch.prototype.checkToggleState;\n/**\n * Disable switch.\n *\n * @public\n */\nMaterialSwitch.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\nMaterialSwitch.prototype['disable'] = MaterialSwitch.prototype.disable;\n/**\n * Enable switch.\n *\n * @public\n */\nMaterialSwitch.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\nMaterialSwitch.prototype['enable'] = MaterialSwitch.prototype.enable;\n/**\n * Activate switch.\n *\n * @public\n */\nMaterialSwitch.prototype.on = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\nMaterialSwitch.prototype['on'] = MaterialSwitch.prototype.on;\n/**\n * Deactivate switch.\n *\n * @public\n */\nMaterialSwitch.prototype.off = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\nMaterialSwitch.prototype['off'] = MaterialSwitch.prototype.off;\n/**\n * Initialize element.\n */\nMaterialSwitch.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n var track = document.createElement('div');\n track.classList.add(this.CssClasses_.TRACK);\n var thumb = document.createElement('div');\n thumb.classList.add(this.CssClasses_.THUMB);\n var focusHelper = document.createElement('span');\n focusHelper.classList.add(this.CssClasses_.FOCUS_HELPER);\n thumb.appendChild(focusHelper);\n this.element_.appendChild(track);\n this.element_.appendChild(thumb);\n this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundMouseUpHandler);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundChangeHandler = this.onChange_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.inputElement_.addEventListener('change', this.boundChangeHandler);\n this.inputElement_.addEventListener('focus', this.boundFocusHandler);\n this.inputElement_.addEventListener('blur', this.boundBlurHandler);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n this.updateClasses_();\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSwitch,\n classAsString: 'MaterialSwitch',\n cssClass: 'mdl-js-switch',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Tabs MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\nvar MaterialTabs = function MaterialTabs(element) {\n // Stores the HTML element.\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialTabs'] = MaterialTabs;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string}\n * @private\n */\nMaterialTabs.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialTabs.prototype.CssClasses_ = {\n TAB_CLASS: 'mdl-tabs__tab',\n PANEL_CLASS: 'mdl-tabs__panel',\n ACTIVE_CLASS: 'is-active',\n UPGRADED_CLASS: 'is-upgraded',\n MDL_JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n MDL_RIPPLE_CONTAINER: 'mdl-tabs__ripple-container',\n MDL_RIPPLE: 'mdl-ripple',\n MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events'\n};\n/**\n * Handle clicks to a tabs component\n *\n * @private\n */\nMaterialTabs.prototype.initTabs_ = function () {\n if (this.element_.classList.contains(this.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS);\n }\n // Select element tabs, document panels\n this.tabs_ = this.element_.querySelectorAll('.' + this.CssClasses_.TAB_CLASS);\n this.panels_ = this.element_.querySelectorAll('.' + this.CssClasses_.PANEL_CLASS);\n // Create new tabs for each tab element\n for (var i = 0; i < this.tabs_.length; i++) {\n new MaterialTab(this.tabs_[i], this);\n }\n this.element_.classList.add(this.CssClasses_.UPGRADED_CLASS);\n};\n/**\n * Reset tab state, dropping active classes\n *\n * @private\n */\nMaterialTabs.prototype.resetTabState_ = function () {\n for (var k = 0; k < this.tabs_.length; k++) {\n this.tabs_[k].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }\n};\n/**\n * Reset panel state, droping active classes\n *\n * @private\n */\nMaterialTabs.prototype.resetPanelState_ = function () {\n for (var j = 0; j < this.panels_.length; j++) {\n this.panels_[j].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }\n};\n/**\n * Initialize element.\n */\nMaterialTabs.prototype.init = function () {\n if (this.element_) {\n this.initTabs_();\n }\n};\n/**\n * Constructor for an individual tab.\n *\n * @constructor\n * @param {Element} tab The HTML element for the tab.\n * @param {MaterialTabs} ctx The MaterialTabs object that owns the tab.\n */\nfunction MaterialTab(tab, ctx) {\n if (tab) {\n if (ctx.element_.classList.contains(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(ctx.CssClasses_.MDL_RIPPLE_CONTAINER);\n rippleContainer.classList.add(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT);\n var ripple = document.createElement('span');\n ripple.classList.add(ctx.CssClasses_.MDL_RIPPLE);\n rippleContainer.appendChild(ripple);\n tab.appendChild(rippleContainer);\n }\n tab.addEventListener('click', function (e) {\n e.preventDefault();\n ctx.resetTabState_();\n tab.classList.add(ctx.CssClasses_.ACTIVE_CLASS);\n });\n }\n}\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTabs,\n classAsString: 'MaterialTabs',\n cssClass: 'mdl-js-tabs'\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Textfield MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialTextfield = function MaterialTextfield(element) {\n this.element_ = element;\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialTextfield'] = MaterialTextfield;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialTextfield.prototype.Constant_ = {\n NO_MAX_ROWS: -1,\n MAX_ROWS_ATTRIBUTE: 'maxrows'\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialTextfield.prototype.CssClasses_ = {\n LABEL: 'mdl-textfield__label',\n INPUT: 'mdl-textfield__input',\n IS_DIRTY: 'is-dirty',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_INVALID: 'is-invalid',\n IS_UPGRADED: 'is-upgraded',\n HAS_PLACEHOLDER: 'has-placeholder'\n};\n/**\n * Handle input being entered.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onKeyDown_ = function (event) {\n var currentRowCount = event.target.value.split('\\n').length;\n if (event.keyCode === 13) {\n if (currentRowCount >= this.maxRows) {\n event.preventDefault();\n }\n }\n};\n/**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle reset event from out side.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onReset_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialTextfield.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkValidity();\n this.checkDirty();\n this.checkFocus();\n};\n// Public methods.\n/**\n * Check the disabled state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkDisabled = function () {\n if (this.input_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialTextfield.prototype['checkDisabled'] = MaterialTextfield.prototype.checkDisabled;\n/**\n * Check the focus state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkFocus = function () {\n if (Boolean(this.element_.querySelector(':focus'))) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n }\n};\nMaterialTextfield.prototype['checkFocus'] = MaterialTextfield.prototype.checkFocus;\n/**\n * Check the validity state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkValidity = function () {\n if (this.input_.validity) {\n if (this.input_.validity.valid) {\n this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n } else {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n }\n};\nMaterialTextfield.prototype['checkValidity'] = MaterialTextfield.prototype.checkValidity;\n/**\n * Check the dirty state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkDirty = function () {\n if (this.input_.value && this.input_.value.length > 0) {\n this.element_.classList.add(this.CssClasses_.IS_DIRTY);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n }\n};\nMaterialTextfield.prototype['checkDirty'] = MaterialTextfield.prototype.checkDirty;\n/**\n * Disable text field.\n *\n * @public\n */\nMaterialTextfield.prototype.disable = function () {\n this.input_.disabled = true;\n this.updateClasses_();\n};\nMaterialTextfield.prototype['disable'] = MaterialTextfield.prototype.disable;\n/**\n * Enable text field.\n *\n * @public\n */\nMaterialTextfield.prototype.enable = function () {\n this.input_.disabled = false;\n this.updateClasses_();\n};\nMaterialTextfield.prototype['enable'] = MaterialTextfield.prototype.enable;\n/**\n * Update text field value.\n *\n * @param {string} value The value to which to set the control (optional).\n * @public\n */\nMaterialTextfield.prototype.change = function (value) {\n this.input_.value = value || '';\n this.updateClasses_();\n};\nMaterialTextfield.prototype['change'] = MaterialTextfield.prototype.change;\n/**\n * Initialize element.\n */\nMaterialTextfield.prototype.init = function () {\n if (this.element_) {\n this.label_ = this.element_.querySelector('.' + this.CssClasses_.LABEL);\n this.input_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n if (this.input_) {\n if (this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE)) {\n this.maxRows = parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE), 10);\n if (isNaN(this.maxRows)) {\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n }\n }\n if (this.input_.hasAttribute('placeholder')) {\n this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER);\n }\n this.boundUpdateClassesHandler = this.updateClasses_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.boundResetHandler = this.onReset_.bind(this);\n this.input_.addEventListener('input', this.boundUpdateClassesHandler);\n this.input_.addEventListener('focus', this.boundFocusHandler);\n this.input_.addEventListener('blur', this.boundBlurHandler);\n this.input_.addEventListener('reset', this.boundResetHandler);\n if (this.maxRows !== this.Constant_.NO_MAX_ROWS) {\n // TODO: This should handle pasting multi line text.\n // Currently doesn't.\n this.boundKeyDownHandler = this.onKeyDown_.bind(this);\n this.input_.addEventListener('keydown', this.boundKeyDownHandler);\n }\n var invalid = this.element_.classList.contains(this.CssClasses_.IS_INVALID);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n if (invalid) {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n if (this.input_.hasAttribute('autofocus')) {\n this.element_.focus();\n this.checkFocus();\n }\n }\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTextfield,\n classAsString: 'MaterialTextfield',\n cssClass: 'mdl-js-textfield',\n widget: true\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Tooltip MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialTooltip = function MaterialTooltip(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialTooltip'] = MaterialTooltip;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialTooltip.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialTooltip.prototype.CssClasses_ = {\n IS_ACTIVE: 'is-active',\n BOTTOM: 'mdl-tooltip--bottom',\n LEFT: 'mdl-tooltip--left',\n RIGHT: 'mdl-tooltip--right',\n TOP: 'mdl-tooltip--top'\n};\n/**\n * Handle mouseenter for tooltip.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTooltip.prototype.handleMouseEnter_ = function (event) {\n var props = event.target.getBoundingClientRect();\n var left = props.left + props.width / 2;\n var top = props.top + props.height / 2;\n var marginLeft = -1 * (this.element_.offsetWidth / 2);\n var marginTop = -1 * (this.element_.offsetHeight / 2);\n if (this.element_.classList.contains(this.CssClasses_.LEFT) || this.element_.classList.contains(this.CssClasses_.RIGHT)) {\n left = props.width / 2;\n if (top + marginTop < 0) {\n this.element_.style.top = '0';\n this.element_.style.marginTop = '0';\n } else {\n this.element_.style.top = top + 'px';\n this.element_.style.marginTop = marginTop + 'px';\n }\n } else {\n if (left + marginLeft < 0) {\n this.element_.style.left = '0';\n this.element_.style.marginLeft = '0';\n } else {\n this.element_.style.left = left + 'px';\n this.element_.style.marginLeft = marginLeft + 'px';\n }\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP)) {\n this.element_.style.top = props.top - this.element_.offsetHeight - 10 + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.RIGHT)) {\n this.element_.style.left = props.left + props.width + 10 + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.LEFT)) {\n this.element_.style.left = props.left - this.element_.offsetWidth - 10 + 'px';\n } else {\n this.element_.style.top = props.top + props.height + 10 + 'px';\n }\n this.element_.classList.add(this.CssClasses_.IS_ACTIVE);\n};\n/**\n * Hide tooltip on mouseleave or scroll\n *\n * @private\n */\nMaterialTooltip.prototype.hideTooltip_ = function () {\n this.element_.classList.remove(this.CssClasses_.IS_ACTIVE);\n};\n/**\n * Initialize element.\n */\nMaterialTooltip.prototype.init = function () {\n if (this.element_) {\n var forElId = this.element_.getAttribute('for') || this.element_.getAttribute('data-mdl-for');\n if (forElId) {\n this.forElement_ = document.getElementById(forElId);\n }\n if (this.forElement_) {\n // It's left here because it prevents accidental text selection on Android\n if (!this.forElement_.hasAttribute('tabindex')) {\n this.forElement_.setAttribute('tabindex', '0');\n }\n this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this);\n this.boundMouseLeaveAndScrollHandler = this.hideTooltip_.bind(this);\n this.forElement_.addEventListener('mouseenter', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('touchend', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('mouseleave', this.boundMouseLeaveAndScrollHandler, false);\n window.addEventListener('scroll', this.boundMouseLeaveAndScrollHandler, true);\n window.addEventListener('touchstart', this.boundMouseLeaveAndScrollHandler);\n }\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTooltip,\n classAsString: 'MaterialTooltip',\n cssClass: 'mdl-tooltip'\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Layout MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialLayout = function MaterialLayout(element) {\n this.element_ = element;\n this.innerContainer_ = element.querySelector('.' + this.CssClasses_.INNER_CONTAINER);\n // Initialize instance.\n this.init();\n};\nwindow['MaterialLayout'] = MaterialLayout;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialLayout.prototype.Constant_ = {\n MAX_WIDTH: '(max-width: 1024px)',\n TAB_SCROLL_PIXELS: 100,\n RESIZE_TIMEOUT: 100,\n MENU_ICON: '',\n CHEVRON_LEFT: 'chevron_left',\n CHEVRON_RIGHT: 'chevron_right'\n};\n/**\n * Keycodes, for code readability.\n *\n * @enum {number}\n * @private\n */\nMaterialLayout.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32\n};\n/**\n * Modes.\n *\n * @enum {number}\n * @private\n */\nMaterialLayout.prototype.Mode_ = {\n STANDARD: 0,\n SEAMED: 1,\n WATERFALL: 2,\n SCROLL: 3\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialLayout.prototype.CssClasses_ = {\n INNER_CONTAINER: 'mdl-layout__inner-container',\n HEADER: 'mdl-layout__header',\n DRAWER: 'mdl-layout__drawer',\n CONTENT: 'mdl-layout__content',\n DRAWER_BTN: 'mdl-layout__drawer-button',\n ICON: 'material-icons',\n JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-layout__tab-ripple-container',\n RIPPLE: 'mdl-ripple',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n HEADER_SEAMED: 'mdl-layout__header--seamed',\n HEADER_WATERFALL: 'mdl-layout__header--waterfall',\n HEADER_SCROLL: 'mdl-layout__header--scroll',\n FIXED_HEADER: 'mdl-layout--fixed-header',\n OBFUSCATOR: 'mdl-layout__obfuscator',\n TAB_BAR: 'mdl-layout__tab-bar',\n TAB_CONTAINER: 'mdl-layout__tab-bar-container',\n TAB: 'mdl-layout__tab',\n TAB_BAR_BUTTON: 'mdl-layout__tab-bar-button',\n TAB_BAR_LEFT_BUTTON: 'mdl-layout__tab-bar-left-button',\n TAB_BAR_RIGHT_BUTTON: 'mdl-layout__tab-bar-right-button',\n PANEL: 'mdl-layout__tab-panel',\n HAS_DRAWER: 'has-drawer',\n HAS_TABS: 'has-tabs',\n HAS_SCROLLING_HEADER: 'has-scrolling-header',\n CASTING_SHADOW: 'is-casting-shadow',\n IS_COMPACT: 'is-compact',\n IS_SMALL_SCREEN: 'is-small-screen',\n IS_DRAWER_OPEN: 'is-visible',\n IS_ACTIVE: 'is-active',\n IS_UPGRADED: 'is-upgraded',\n IS_ANIMATING: 'is-animating',\n ON_LARGE_SCREEN: 'mdl-layout--large-screen-only',\n ON_SMALL_SCREEN: 'mdl-layout--small-screen-only'\n};\n/**\n * Handles scrolling on the content.\n *\n * @private\n */\nMaterialLayout.prototype.contentScrollHandler_ = function () {\n if (this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)) {\n return;\n }\n var headerVisible = !this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN) || this.element_.classList.contains(this.CssClasses_.FIXED_HEADER);\n if (this.content_.scrollTop > 0 && !this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n this.header_.classList.add(this.CssClasses_.IS_COMPACT);\n if (headerVisible) {\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n } else if (this.content_.scrollTop <= 0 && this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n if (headerVisible) {\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n }\n};\n/**\n * Handles a keyboard event on the drawer.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialLayout.prototype.keyboardEventHandler_ = function (evt) {\n // Only react when the drawer is open.\n if (evt.keyCode === this.Keycodes_.ESCAPE && this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {\n this.toggleDrawer();\n }\n};\n/**\n * Handles changes in screen size.\n *\n * @private\n */\nMaterialLayout.prototype.screenSizeHandler_ = function () {\n if (this.screenSizeMediaQuery_.matches) {\n this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN);\n // Collapse drawer (if any) when moving to a large screen size.\n if (this.drawer_) {\n this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n }\n }\n};\n/**\n * Handles events of drawer button.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialLayout.prototype.drawerToggleHandler_ = function (evt) {\n if (evt && evt.type === 'keydown') {\n if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n // prevent scrolling in drawer nav\n evt.preventDefault();\n } else {\n // prevent other keys\n return;\n }\n }\n this.toggleDrawer();\n};\n/**\n * Handles (un)setting the `is-animating` class\n *\n * @private\n */\nMaterialLayout.prototype.headerTransitionEndHandler_ = function () {\n this.header_.classList.remove(this.CssClasses_.IS_ANIMATING);\n};\n/**\n * Handles expanding the header on click\n *\n * @private\n */\nMaterialLayout.prototype.headerClickHandler_ = function () {\n if (this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n};\n/**\n * Reset tab state, dropping active classes\n *\n * @private\n */\nMaterialLayout.prototype.resetTabState_ = function (tabBar) {\n for (var k = 0; k < tabBar.length; k++) {\n tabBar[k].classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n};\n/**\n * Reset panel state, droping active classes\n *\n * @private\n */\nMaterialLayout.prototype.resetPanelState_ = function (panels) {\n for (var j = 0; j < panels.length; j++) {\n panels[j].classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n};\n/**\n * Toggle drawer state\n *\n * @public\n */\nMaterialLayout.prototype.toggleDrawer = function () {\n var drawerButton = this.innerContainer_.querySelector('.' + this.CssClasses_.DRAWER_BTN);\n this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n this.obfuscator_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n // Set accessibility properties.\n if (this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {\n this.drawer_.setAttribute('aria-hidden', 'false');\n drawerButton.setAttribute('aria-expanded', 'true');\n } else {\n this.drawer_.setAttribute('aria-hidden', 'true');\n drawerButton.setAttribute('aria-expanded', 'false');\n }\n};\nMaterialLayout.prototype['toggleDrawer'] = MaterialLayout.prototype.toggleDrawer;\n/**\n * Initialize element.\n */\nMaterialLayout.prototype.init = function () {\n if (this.element_) {\n var focusedElement = this.element_.querySelector(':focus');\n if (focusedElement) {\n focusedElement.focus();\n }\n var directChildren = this.innerContainer_.childNodes;\n var numChildren = directChildren.length;\n for (var c = 0; c < numChildren; c++) {\n var child = directChildren[c];\n if (child.classList && child.classList.contains(this.CssClasses_.HEADER)) {\n this.header_ = child;\n }\n if (child.classList && child.classList.contains(this.CssClasses_.DRAWER)) {\n this.drawer_ = child;\n }\n if (child.classList && child.classList.contains(this.CssClasses_.CONTENT)) {\n this.content_ = child;\n }\n }\n window.addEventListener('pageshow', function (e) {\n if (e.persisted) {\n // when page is loaded from back/forward cache\n // trigger repaint to let layout scroll in safari\n this.innerContainer_.style.overflowY = 'hidden';\n requestAnimationFrame(function () {\n this.innerContainer_.style.overflowY = '';\n }.bind(this));\n }\n }.bind(this), false);\n if (this.header_) {\n this.tabBar_ = this.header_.querySelector('.' + this.CssClasses_.TAB_BAR);\n }\n var mode = this.Mode_.STANDARD;\n if (this.header_) {\n if (this.header_.classList.contains(this.CssClasses_.HEADER_SEAMED)) {\n mode = this.Mode_.SEAMED;\n } else if (this.header_.classList.contains(this.CssClasses_.HEADER_WATERFALL)) {\n mode = this.Mode_.WATERFALL;\n this.header_.addEventListener('transitionend', this.headerTransitionEndHandler_.bind(this));\n this.header_.addEventListener('click', this.headerClickHandler_.bind(this));\n } else if (this.header_.classList.contains(this.CssClasses_.HEADER_SCROLL)) {\n mode = this.Mode_.SCROLL;\n this.element_.classList.add(this.CssClasses_.HAS_SCROLLING_HEADER);\n }\n if (mode === this.Mode_.STANDARD) {\n this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n if (this.tabBar_) {\n this.tabBar_.classList.add(this.CssClasses_.CASTING_SHADOW);\n }\n } else if (mode === this.Mode_.SEAMED || mode === this.Mode_.SCROLL) {\n this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n if (this.tabBar_) {\n this.tabBar_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n }\n } else if (mode === this.Mode_.WATERFALL) {\n // Add and remove shadows depending on scroll position.\n // Also add/remove auxiliary class for styling of the compact version of\n // the header.\n this.content_.addEventListener('scroll', this.contentScrollHandler_.bind(this));\n this.contentScrollHandler_();\n }\n }\n // Add drawer toggling button to our layout, if we have an openable drawer.\n if (this.drawer_) {\n var drawerButton = this.innerContainer_.querySelector('.' + this.CssClasses_.DRAWER_BTN);\n if (!drawerButton) {\n drawerButton = document.createElement('div');\n drawerButton.setAttribute('aria-expanded', 'false');\n drawerButton.setAttribute('role', 'button');\n drawerButton.setAttribute('tabindex', '0');\n drawerButton.classList.add(this.CssClasses_.DRAWER_BTN);\n var drawerButtonIcon = document.createElement('i');\n drawerButtonIcon.classList.add(this.CssClasses_.ICON);\n drawerButtonIcon.innerHTML = this.Constant_.MENU_ICON;\n drawerButton.appendChild(drawerButtonIcon);\n }\n if (this.drawer_.classList.contains(this.CssClasses_.ON_LARGE_SCREEN)) {\n //If drawer has ON_LARGE_SCREEN class then add it to the drawer toggle button as well.\n drawerButton.classList.add(this.CssClasses_.ON_LARGE_SCREEN);\n } else if (this.drawer_.classList.contains(this.CssClasses_.ON_SMALL_SCREEN)) {\n //If drawer has ON_SMALL_SCREEN class then add it to the drawer toggle button as well.\n drawerButton.classList.add(this.CssClasses_.ON_SMALL_SCREEN);\n }\n drawerButton.addEventListener('click', this.drawerToggleHandler_.bind(this));\n drawerButton.addEventListener('keydown', this.drawerToggleHandler_.bind(this));\n // Add a class if the layout has a drawer, for altering the left padding.\n // Adds the HAS_DRAWER to the elements since this.header_ may or may\n // not be present.\n this.element_.classList.add(this.CssClasses_.HAS_DRAWER);\n // If we have a fixed header, add the button to the header rather than\n // the layout.\n if (this.element_.classList.contains(this.CssClasses_.FIXED_HEADER)) {\n this.header_.insertBefore(drawerButton, this.header_.firstChild);\n } else {\n this.innerContainer_.insertBefore(drawerButton, this.content_);\n }\n var obfuscator = document.createElement('div');\n obfuscator.classList.add(this.CssClasses_.OBFUSCATOR);\n this.innerContainer_.appendChild(obfuscator);\n obfuscator.addEventListener('click', this.drawerToggleHandler_.bind(this));\n this.obfuscator_ = obfuscator;\n this.drawer_.addEventListener('keydown', this.keyboardEventHandler_.bind(this));\n this.drawer_.setAttribute('aria-hidden', 'true');\n }\n // Keep an eye on screen size, and add/remove auxiliary class for styling\n // of small screens.\n this.screenSizeMediaQuery_ = window.matchMedia(this.Constant_.MAX_WIDTH);\n this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this));\n this.screenSizeHandler_();\n // Initialize tabs, if any.\n if (this.header_ && this.tabBar_) {\n this.element_.classList.add(this.CssClasses_.HAS_TABS);\n var tabContainer = document.createElement('div');\n tabContainer.classList.add(this.CssClasses_.TAB_CONTAINER);\n this.header_.insertBefore(tabContainer, this.tabBar_);\n this.header_.removeChild(this.tabBar_);\n var leftButton = document.createElement('div');\n leftButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n leftButton.classList.add(this.CssClasses_.TAB_BAR_LEFT_BUTTON);\n var leftButtonIcon = document.createElement('i');\n leftButtonIcon.classList.add(this.CssClasses_.ICON);\n leftButtonIcon.textContent = this.Constant_.CHEVRON_LEFT;\n leftButton.appendChild(leftButtonIcon);\n leftButton.addEventListener('click', function () {\n this.tabBar_.scrollLeft -= this.Constant_.TAB_SCROLL_PIXELS;\n }.bind(this));\n var rightButton = document.createElement('div');\n rightButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n rightButton.classList.add(this.CssClasses_.TAB_BAR_RIGHT_BUTTON);\n var rightButtonIcon = document.createElement('i');\n rightButtonIcon.classList.add(this.CssClasses_.ICON);\n rightButtonIcon.textContent = this.Constant_.CHEVRON_RIGHT;\n rightButton.appendChild(rightButtonIcon);\n rightButton.addEventListener('click', function () {\n this.tabBar_.scrollLeft += this.Constant_.TAB_SCROLL_PIXELS;\n }.bind(this));\n tabContainer.appendChild(leftButton);\n tabContainer.appendChild(this.tabBar_);\n tabContainer.appendChild(rightButton);\n // Add and remove tab buttons depending on scroll position and total\n // window size.\n var tabUpdateHandler = function () {\n if (this.tabBar_.scrollLeft > 0) {\n leftButton.classList.add(this.CssClasses_.IS_ACTIVE);\n } else {\n leftButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n if (this.tabBar_.scrollLeft < this.tabBar_.scrollWidth - this.tabBar_.offsetWidth) {\n rightButton.classList.add(this.CssClasses_.IS_ACTIVE);\n } else {\n rightButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n }.bind(this);\n this.tabBar_.addEventListener('scroll', tabUpdateHandler);\n tabUpdateHandler();\n // Update tabs when the window resizes.\n var windowResizeHandler = function () {\n // Use timeouts to make sure it doesn't happen too often.\n if (this.resizeTimeoutId_) {\n clearTimeout(this.resizeTimeoutId_);\n }\n this.resizeTimeoutId_ = setTimeout(function () {\n tabUpdateHandler();\n this.resizeTimeoutId_ = null;\n }.bind(this), this.Constant_.RESIZE_TIMEOUT);\n }.bind(this);\n window.addEventListener('resize', windowResizeHandler);\n if (this.tabBar_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.tabBar_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n }\n // Select element tabs, document panels\n var tabs = this.tabBar_.querySelectorAll('.' + this.CssClasses_.TAB);\n var panels = this.content_.querySelectorAll('.' + this.CssClasses_.PANEL);\n // Create new tabs for each tab element\n for (var i = 0; i < tabs.length; i++) {\n new MaterialLayoutTab(tabs[i], tabs, panels, this);\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n/**\n * Constructor for an individual tab.\n *\n * @constructor\n * @param {HTMLElement} tab The HTML element for the tab.\n * @param {!Array<HTMLElement>} tabs Array with HTML elements for all tabs.\n * @param {!Array<HTMLElement>} panels Array with HTML elements for all panels.\n * @param {MaterialLayout} layout The MaterialLayout object that owns the tab.\n */\nfunction MaterialLayoutTab(tab, tabs, panels, layout) {\n /**\n * Auxiliary method to programmatically select a tab in the UI.\n */\n function selectTab() {\n layout.resetTabState_(tabs);\n tab.classList.add(layout.CssClasses_.IS_ACTIVE);\n }\n if (layout.tabBar_.classList.contains(layout.CssClasses_.JS_RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(layout.CssClasses_.RIPPLE_CONTAINER);\n rippleContainer.classList.add(layout.CssClasses_.JS_RIPPLE_EFFECT);\n var ripple = document.createElement('span');\n ripple.classList.add(layout.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n tab.appendChild(rippleContainer);\n }\n tab.addEventListener('click', function (e) {\n e.preventDefault();\n selectTab();\n });\n tab.show = selectTab;\n}\nwindow['MaterialLayoutTab'] = MaterialLayoutTab;\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialLayout,\n classAsString: 'MaterialLayout',\n cssClass: 'mdl-js-layout'\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Data Table Card MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\nvar MaterialDataTable = function MaterialDataTable(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialDataTable'] = MaterialDataTable;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialDataTable.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialDataTable.prototype.CssClasses_ = {\n DATA_TABLE: 'mdl-data-table',\n SELECTABLE: 'mdl-data-table--selectable',\n SELECT_ELEMENT: 'mdl-data-table__select',\n IS_SELECTED: 'is-selected',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Generates and returns a function that toggles the selection state of a\n * single row (or multiple rows).\n *\n * @param {Element} checkbox Checkbox that toggles the selection state.\n * @param {Element} row Row to toggle when checkbox changes.\n * @param {(Array<Object>|NodeList)=} opt_rows Rows to toggle when checkbox changes.\n * @private\n */\nMaterialDataTable.prototype.selectRow_ = function (checkbox, row, opt_rows) {\n if (row) {\n return function () {\n if (checkbox.checked) {\n row.classList.add(this.CssClasses_.IS_SELECTED);\n } else {\n row.classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }.bind(this);\n }\n if (opt_rows) {\n return function () {\n var i;\n var el;\n if (checkbox.checked) {\n for (i = 0; i < opt_rows.length; i++) {\n el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');\n el['MaterialCheckbox'].check();\n opt_rows[i].classList.add(this.CssClasses_.IS_SELECTED);\n }\n } else {\n for (i = 0; i < opt_rows.length; i++) {\n el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');\n el['MaterialCheckbox'].uncheck();\n opt_rows[i].classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }\n }.bind(this);\n }\n};\n/**\n * Creates a checkbox for a single or or multiple rows and hooks up the\n * event handling.\n *\n * @param {Element} row Row to toggle when checkbox changes.\n * @param {(Array<Object>|NodeList)=} opt_rows Rows to toggle when checkbox changes.\n * @private\n */\nMaterialDataTable.prototype.createCheckbox_ = function (row, opt_rows) {\n var label = document.createElement('label');\n var labelClasses = [\n 'mdl-checkbox',\n 'mdl-js-checkbox',\n 'mdl-js-ripple-effect',\n this.CssClasses_.SELECT_ELEMENT\n ];\n label.className = labelClasses.join(' ');\n var checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.classList.add('mdl-checkbox__input');\n if (row) {\n checkbox.checked = row.classList.contains(this.CssClasses_.IS_SELECTED);\n checkbox.addEventListener('change', this.selectRow_(checkbox, row));\n } else if (opt_rows) {\n checkbox.addEventListener('change', this.selectRow_(checkbox, null, opt_rows));\n }\n label.appendChild(checkbox);\n componentHandler.upgradeElement(label, 'MaterialCheckbox');\n return label;\n};\n/**\n * Initialize element.\n */\nMaterialDataTable.prototype.init = function () {\n if (this.element_) {\n var firstHeader = this.element_.querySelector('th');\n var bodyRows = Array.prototype.slice.call(this.element_.querySelectorAll('tbody tr'));\n var footRows = Array.prototype.slice.call(this.element_.querySelectorAll('tfoot tr'));\n var rows = bodyRows.concat(footRows);\n if (this.element_.classList.contains(this.CssClasses_.SELECTABLE)) {\n var th = document.createElement('th');\n var headerCheckbox = this.createCheckbox_(null, rows);\n th.appendChild(headerCheckbox);\n firstHeader.parentElement.insertBefore(th, firstHeader);\n for (var i = 0; i < rows.length; i++) {\n var firstCell = rows[i].querySelector('td');\n if (firstCell) {\n var td = document.createElement('td');\n if (rows[i].parentNode.nodeName.toUpperCase() === 'TBODY') {\n var rowCheckbox = this.createCheckbox_(rows[i]);\n td.appendChild(rowCheckbox);\n }\n rows[i].insertBefore(td, firstCell);\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialDataTable,\n classAsString: 'MaterialDataTable',\n cssClass: 'mdl-js-data-table'\n});\n/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Ripple MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialRipple = function MaterialRipple(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialRipple'] = MaterialRipple;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialRipple.prototype.Constant_ = {\n INITIAL_SCALE: 'scale(0.0001, 0.0001)',\n INITIAL_SIZE: '1px',\n INITIAL_OPACITY: '0.4',\n FINAL_OPACITY: '0',\n FINAL_SCALE: ''\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialRipple.prototype.CssClasses_ = {\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE: 'mdl-ripple',\n IS_ANIMATING: 'is-animating',\n IS_VISIBLE: 'is-visible'\n};\n/**\n * Handle mouse / finger down on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRipple.prototype.downHandler_ = function (event) {\n if (!this.rippleElement_.style.width && !this.rippleElement_.style.height) {\n var rect = this.element_.getBoundingClientRect();\n this.boundHeight = rect.height;\n this.boundWidth = rect.width;\n this.rippleSize_ = Math.sqrt(rect.width * rect.width + rect.height * rect.height) * 2 + 2;\n this.rippleElement_.style.width = this.rippleSize_ + 'px';\n this.rippleElement_.style.height = this.rippleSize_ + 'px';\n }\n this.rippleElement_.classList.add(this.CssClasses_.IS_VISIBLE);\n if (event.type === 'mousedown' && this.ignoringMouseDown_) {\n this.ignoringMouseDown_ = false;\n } else {\n if (event.type === 'touchstart') {\n this.ignoringMouseDown_ = true;\n }\n var frameCount = this.getFrameCount();\n if (frameCount > 0) {\n return;\n }\n this.setFrameCount(1);\n var bound = event.currentTarget.getBoundingClientRect();\n var x;\n var y;\n // Check if we are handling a keyboard click.\n if (event.clientX === 0 && event.clientY === 0) {\n x = Math.round(bound.width / 2);\n y = Math.round(bound.height / 2);\n } else {\n var clientX = event.clientX ? event.clientX : event.touches[0].clientX;\n var clientY = event.clientY ? event.clientY : event.touches[0].clientY;\n x = Math.round(clientX - bound.left);\n y = Math.round(clientY - bound.top);\n }\n this.setRippleXY(x, y);\n this.setRippleStyles(true);\n window.requestAnimationFrame(this.animFrameHandler.bind(this));\n }\n};\n/**\n * Handle mouse / finger up on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRipple.prototype.upHandler_ = function (event) {\n // Don't fire for the artificial \"mouseup\" generated by a double-click.\n if (event && event.detail !== 2) {\n // Allow a repaint to occur before removing this class, so the animation\n // shows for tap events, which seem to trigger a mouseup too soon after\n // mousedown.\n window.setTimeout(function () {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE);\n }.bind(this), 0);\n }\n};\n/**\n * Initialize element.\n */\nMaterialRipple.prototype.init = function () {\n if (this.element_) {\n var recentering = this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);\n if (!this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)) {\n this.rippleElement_ = this.element_.querySelector('.' + this.CssClasses_.RIPPLE);\n this.frameCount_ = 0;\n this.rippleSize_ = 0;\n this.x_ = 0;\n this.y_ = 0;\n // Touch start produces a compat mouse down event, which would cause a\n // second ripples. To avoid that, we use this property to ignore the first\n // mouse down after a touch start.\n this.ignoringMouseDown_ = false;\n this.boundDownHandler = this.downHandler_.bind(this);\n this.element_.addEventListener('mousedown', this.boundDownHandler);\n this.element_.addEventListener('touchstart', this.boundDownHandler);\n this.boundUpHandler = this.upHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundUpHandler);\n this.element_.addEventListener('mouseleave', this.boundUpHandler);\n this.element_.addEventListener('touchend', this.boundUpHandler);\n this.element_.addEventListener('blur', this.boundUpHandler);\n /**\n * Getter for frameCount_.\n * @return {number} the frame count.\n */\n this.getFrameCount = function () {\n return this.frameCount_;\n };\n /**\n * Setter for frameCount_.\n * @param {number} fC the frame count.\n */\n this.setFrameCount = function (fC) {\n this.frameCount_ = fC;\n };\n /**\n * Getter for rippleElement_.\n * @return {Element} the ripple element.\n */\n this.getRippleElement = function () {\n return this.rippleElement_;\n };\n /**\n * Sets the ripple X and Y coordinates.\n * @param {number} newX the new X coordinate\n * @param {number} newY the new Y coordinate\n */\n this.setRippleXY = function (newX, newY) {\n this.x_ = newX;\n this.y_ = newY;\n };\n /**\n * Sets the ripple styles.\n * @param {boolean} start whether or not this is the start frame.\n */\n this.setRippleStyles = function (start) {\n if (this.rippleElement_ !== null) {\n var transformString;\n var scale;\n var size;\n var offset = 'translate(' + this.x_ + 'px, ' + this.y_ + 'px)';\n if (start) {\n scale = this.Constant_.INITIAL_SCALE;\n size = this.Constant_.INITIAL_SIZE;\n } else {\n scale = this.Constant_.FINAL_SCALE;\n size = this.rippleSize_ + 'px';\n if (recentering) {\n offset = 'translate(' + this.boundWidth / 2 + 'px, ' + this.boundHeight / 2 + 'px)';\n }\n }\n transformString = 'translate(-50%, -50%) ' + offset + scale;\n this.rippleElement_.style.webkitTransform = transformString;\n this.rippleElement_.style.msTransform = transformString;\n this.rippleElement_.style.transform = transformString;\n if (start) {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING);\n } else {\n this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n }\n };\n /**\n * Handles an animation frame.\n */\n this.animFrameHandler = function () {\n if (this.frameCount_-- > 0) {\n window.requestAnimationFrame(this.animFrameHandler.bind(this));\n } else {\n this.setRippleStyles(false);\n }\n };\n }\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialRipple,\n classAsString: 'MaterialRipple',\n cssClass: 'mdl-js-ripple-effect',\n widget: false\n});\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/extra/material.js\n// module id = 339\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n children: _react.PropTypes.oneOfType([_react.PropTypes.element, _react.PropTypes.string]),\n className: _react.PropTypes.string,\n text: _react.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.number]),\n overlap: _react.PropTypes.bool,\n noBackground: _react.PropTypes.bool\n};\n\nvar Badge = function Badge(props) {\n var children = props.children,\n className = props.className,\n text = props.text,\n overlap = props.overlap,\n noBackground = props.noBackground,\n rest = _objectWithoutProperties(props, ['children', 'className', 'text', 'overlap', 'noBackground']);\n\n // No badge if no children\n // TODO: In React 15, we can return null instead\n\n\n if (!_react2.default.Children.count(children)) return _react2.default.createElement('noscript', null);\n\n var element = typeof children === 'string' ? _react2.default.createElement(\n 'span',\n null,\n children\n ) : _react2.default.Children.only(children);\n\n // No text -> No need of badge\n if (text === null || typeof text === 'undefined') return element;\n\n return _react2.default.cloneElement(element, _extends({}, rest, {\n className: (0, _classnames2.default)(className, element.props.className, 'mdl-badge', {\n 'mdl-badge--overlap': !!overlap,\n 'mdl-badge--no-background': !!noBackground\n }),\n 'data-badge': text\n }));\n};\n\nBadge.propTypes = propTypes;\n\nexports.default = Badge;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Badge/index.js\n// module id = 340\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _clamp = require('clamp');\n\nvar _clamp2 = _interopRequireDefault(_clamp);\n\nvar _shadows = require('../utils/shadows');\n\nvar _shadows2 = _interopRequireDefault(_shadows);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n className: _react.PropTypes.string,\n shadow: _react.PropTypes.number\n};\n\nvar Card = function Card(props) {\n var className = props.className,\n shadow = props.shadow,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'shadow', 'children']);\n\n var hasShadow = typeof shadow !== 'undefined';\n var shadowLevel = (0, _clamp2.default)(shadow || 0, 0, _shadows2.default.length - 1);\n\n var classes = (0, _classnames2.default)('mdl-card', _defineProperty({}, _shadows2.default[shadowLevel], hasShadow), className);\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: classes }, otherProps),\n children\n );\n};\n\nCard.propTypes = propTypes;\n\nexports.default = Card;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Card/Card.js\n// module id = 341\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n border: _react.PropTypes.bool,\n className: _react.PropTypes.string\n};\n\nvar CardActions = function CardActions(props) {\n var className = props.className,\n border = props.border,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'border', 'children']);\n\n var classes = (0, _classnames2.default)('mdl-card__actions', {\n 'mdl-card--border': border\n }, className);\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: classes }, otherProps),\n children\n );\n};\n\nCardActions.propTypes = propTypes;\n\nexports.default = CardActions;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Card/CardActions.js\n// module id = 342\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n className: _react.PropTypes.string,\n expand: _react.PropTypes.bool\n};\n\nvar CardTitle = function CardTitle(props) {\n var className = props.className,\n children = props.children,\n expand = props.expand,\n otherProps = _objectWithoutProperties(props, ['className', 'children', 'expand']);\n\n var classes = (0, _classnames2.default)('mdl-card__title', {\n 'mdl-card--expand': expand\n }, className);\n\n var title = typeof children === 'string' ? _react2.default.createElement(\n 'h2',\n { className: 'mdl-card__title-text' },\n children\n ) : children;\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: classes }, otherProps),\n title\n );\n};\n\nCardTitle.propTypes = propTypes;\n\nexports.default = CardTitle;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Card/CardTitle.js\n// module id = 343\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CardMedia = exports.CardActions = exports.CardTitle = exports.CardMenu = exports.CardText = exports.Card = undefined;\n\nvar _Card = require('./Card');\n\nObject.defineProperty(exports, 'Card', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Card).default;\n }\n});\n\nvar _CardTitle = require('./CardTitle');\n\nObject.defineProperty(exports, 'CardTitle', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_CardTitle).default;\n }\n});\n\nvar _CardActions = require('./CardActions');\n\nObject.defineProperty(exports, 'CardActions', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_CardActions).default;\n }\n});\n\nvar _basicClassCreator = require('../utils/basicClassCreator');\n\nvar _basicClassCreator2 = _interopRequireDefault(_basicClassCreator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar CardText = exports.CardText = (0, _basicClassCreator2.default)('CardText', 'mdl-card__supporting-text');\nvar CardMenu = exports.CardMenu = (0, _basicClassCreator2.default)('CardMenu', 'mdl-card__menu');\nvar CardMedia = exports.CardMedia = (0, _basicClassCreator2.default)('CardMedia', 'mdl-card__media');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Card/index.js\n// module id = 344\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Chip = exports.ChipText = exports.ChipContact = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _basicClassCreator = require('../utils/basicClassCreator');\n\nvar _basicClassCreator2 = _interopRequireDefault(_basicClassCreator);\n\nvar _Icon = require('../Icon');\n\nvar _Icon2 = _interopRequireDefault(_Icon);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n className: _react.PropTypes.string,\n onClick: _react.PropTypes.func,\n onClose: _react.PropTypes.func\n};\n\nvar ChipContact = exports.ChipContact = (0, _basicClassCreator2.default)('ChipContact', 'mdl-chip__contact', 'span');\nvar ChipText = exports.ChipText = (0, _basicClassCreator2.default)('ChipText', 'mdl-chip__text', 'span');\n\nvar Chip = exports.Chip = function Chip(props) {\n var className = props.className,\n onClick = props.onClick,\n onClose = props.onClose,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'onClick', 'onClose', 'children']);\n\n var childrenArray = _react2.default.Children.toArray(children);\n var contactIndex = childrenArray.findIndex(function (c) {\n return c.type === ChipContact;\n });\n\n var chipContent = [];\n\n if (contactIndex >= 0) {\n chipContent.push(childrenArray[contactIndex], _react2.default.createElement(\n ChipText,\n { key: 'text' },\n childrenArray.slice(0, contactIndex).concat(childrenArray.slice(contactIndex + 1))\n ));\n } else {\n chipContent.push(_react2.default.createElement(\n ChipText,\n { key: 'text' },\n children\n ));\n }\n\n if (onClose) {\n chipContent.push(_react2.default.createElement(\n 'button',\n { key: 'btn', type: 'button', className: 'mdl-chip__action', onClick: onClose },\n _react2.default.createElement(_Icon2.default, { name: 'cancel' })\n ));\n }\n\n var elt = onClick ? 'button' : 'span';\n\n return _react2.default.createElement(elt, _extends({\n className: (0, _classnames2.default)('mdl-chip', {\n 'mdl-chip--contact': contactIndex > -1,\n 'mdl-chip--deletable': !!onClose\n }, className),\n type: onClick ? 'button' : null,\n onClick: onClick\n }, otherProps), chipContent);\n};\n\nChip.propTypes = propTypes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Chip/index.js\n// module id = 345\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _lodash = require('lodash.isequal');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _TableHeader = require('./TableHeader');\n\nvar _TableHeader2 = _interopRequireDefault(_TableHeader);\n\nvar _Checkbox = require('../Checkbox');\n\nvar _Checkbox2 = _interopRequireDefault(_Checkbox);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n columns: function columns(props, propName, componentName) {\n return props[propName] && new Error(componentName + ': `' + propName + '` is deprecated, please use the component `TableHeader` instead.');\n },\n data: function data(props, propName, componentName) {\n return props[propName] && new Error(componentName + ': `' + propName + '` is deprecated, please use `rows` instead. `' + propName + '` will be removed in the next major release.');\n },\n onSelectionChanged: _react.PropTypes.func,\n rowKeyColumn: _react.PropTypes.string,\n rows: _react.PropTypes.arrayOf(_react.PropTypes.object).isRequired,\n selectable: _react.PropTypes.bool\n};\n\nvar defaultProps = {\n onSelectionChanged: function onSelectionChanged() {\n // do nothing\n }\n};\n\nexports.default = function (Component) {\n var Selectable = function (_React$Component) {\n _inherits(Selectable, _React$Component);\n\n function Selectable(props) {\n _classCallCheck(this, Selectable);\n\n var _this = _possibleConstructorReturn(this, (Selectable.__proto__ || Object.getPrototypeOf(Selectable)).call(this, props));\n\n _this.handleChangeHeaderCheckbox = _this.handleChangeHeaderCheckbox.bind(_this);\n _this.handleChangeRowCheckbox = _this.handleChangeRowCheckbox.bind(_this);\n _this.builRowCheckbox = _this.builRowCheckbox.bind(_this);\n\n if (props.selectable) {\n _this.state = {\n headerSelected: false,\n selectedRows: []\n };\n }\n return _this;\n }\n\n _createClass(Selectable, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var _this2 = this;\n\n if (nextProps.selectable) {\n (function () {\n var rows = nextProps.rows,\n data = nextProps.data,\n rowKeyColumn = nextProps.rowKeyColumn;\n\n var rrows = rows || data;\n\n if (!(0, _lodash2.default)(_this2.props.rows || _this2.props.data, rrows)) {\n // keep only existing rows\n var selectedRows = _this2.state.selectedRows.filter(function (k) {\n return rrows.map(function (row, i) {\n return row[rowKeyColumn] || row.key || i;\n }).indexOf(k) > -1;\n });\n\n _this2.setState({\n headerSelected: selectedRows.length === rrows.length,\n selectedRows: selectedRows\n });\n\n nextProps.onSelectionChanged(selectedRows);\n }\n })();\n }\n }\n }, {\n key: 'handleChangeHeaderCheckbox',\n value: function handleChangeHeaderCheckbox(e) {\n var _props = this.props,\n rowKeyColumn = _props.rowKeyColumn,\n rows = _props.rows,\n data = _props.data;\n\n var selected = e.target.checked;\n var selectedRows = selected ? (rows || data).map(function (row, idx) {\n return row[rowKeyColumn] || row.key || idx;\n }) : [];\n\n this.setState({\n headerSelected: selected,\n selectedRows: selectedRows\n });\n\n this.props.onSelectionChanged(selectedRows);\n }\n }, {\n key: 'handleChangeRowCheckbox',\n value: function handleChangeRowCheckbox(e) {\n var _props2 = this.props,\n rows = _props2.rows,\n data = _props2.data;\n\n var rowId = JSON.parse(e.target.dataset.reactmdl).id;\n var rowChecked = e.target.checked;\n var selectedRows = this.state.selectedRows;\n\n if (rowChecked) {\n selectedRows.push(rowId);\n } else {\n var idx = selectedRows.indexOf(rowId);\n selectedRows.splice(idx, 1);\n }\n\n this.setState({\n headerSelected: (rows || data).length === selectedRows.length,\n selectedRows: selectedRows\n });\n\n this.props.onSelectionChanged(selectedRows);\n }\n }, {\n key: 'builRowCheckbox',\n value: function builRowCheckbox(content, row, idx) {\n var rowKey = row[this.props.rowKeyColumn] || row.key || idx;\n var isSelected = this.state.selectedRows.indexOf(rowKey) > -1;\n return _react2.default.createElement(_Checkbox2.default, {\n className: 'mdl-data-table__select',\n 'data-reactmdl': JSON.stringify({ id: rowKey }),\n checked: isSelected,\n onChange: this.handleChangeRowCheckbox\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var _props3 = this.props,\n rows = _props3.rows,\n data = _props3.data,\n selectable = _props3.selectable,\n children = _props3.children,\n rowKeyColumn = _props3.rowKeyColumn,\n otherProps = _objectWithoutProperties(_props3, ['rows', 'data', 'selectable', 'children', 'rowKeyColumn']);\n\n // remove unwatned props\n // see https://github.com/Hacker0x01/react-datepicker/issues/517#issuecomment-230171426\n\n\n delete otherProps.onSelectionChanged;\n\n var realRows = selectable ? (rows || data).map(function (row, idx) {\n var rowKey = row[rowKeyColumn] || row.key || idx;\n return _extends({}, row, {\n className: (0, _classnames2.default)({\n 'is-selected': _this3.state.selectedRows.indexOf(rowKey) > -1\n }, row.className)\n });\n }) : rows || data;\n\n return _react2.default.createElement(\n Component,\n _extends({ rows: realRows }, otherProps),\n selectable && _react2.default.createElement(\n _TableHeader2.default,\n { name: 'mdl-header-select', cellFormatter: this.builRowCheckbox },\n _react2.default.createElement(_Checkbox2.default, {\n className: 'mdl-data-table__select',\n checked: this.state.headerSelected,\n onChange: this.handleChangeHeaderCheckbox\n })\n ),\n children\n );\n }\n }]);\n\n return Selectable;\n }(_react2.default.Component);\n\n Selectable.propTypes = propTypes;\n Selectable.defaultProps = defaultProps;\n return Selectable;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/DataTable/Selectable.js\n// module id = 346\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _TableHeader = require('./TableHeader');\n\nvar _TableHeader2 = _interopRequireDefault(_TableHeader);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction initState(props) {\n return {\n rows: (props.rows || props.data).slice(),\n sortHeader: null,\n isAsc: true\n };\n}\n\nvar propTypes = {\n columns: function columns(props, propName, componentName) {\n return props[propName] && new Error(componentName + ': `' + propName + '` is deprecated, please use the component `TableHeader` instead.');\n },\n data: function data(props, propName, componentName) {\n return props[propName] && new Error(componentName + ': `' + propName + '` is deprecated, please use `rows` instead. `' + propName + '` will be removed in the next major release.');\n },\n rows: _react.PropTypes.arrayOf(_react.PropTypes.object).isRequired,\n sortable: _react.PropTypes.bool\n};\n\nexports.default = function (Component) {\n var Sortable = function (_React$Component) {\n _inherits(Sortable, _React$Component);\n\n function Sortable(props) {\n _classCallCheck(this, Sortable);\n\n var _this = _possibleConstructorReturn(this, (Sortable.__proto__ || Object.getPrototypeOf(Sortable)).call(this, props));\n\n _this.handleClickColumn = _this.handleClickColumn.bind(_this);\n\n if (props.sortable) {\n _this.state = initState(props);\n }\n return _this;\n }\n\n _createClass(Sortable, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (nextProps.sortable) {\n var realRows = nextProps.rows || nextProps.data;\n var rows = this.state.sortHeader ? this.getSortedRowsForColumn(this.state.isAsc, this.state.sortHeader, realRows) : realRows;\n\n this.setState({\n rows: rows\n });\n }\n }\n }, {\n key: 'getColumnClass',\n value: function getColumnClass(column) {\n var _state = this.state,\n sortHeader = _state.sortHeader,\n isAsc = _state.isAsc;\n\n\n return (0, _classnames2.default)(column.className, {\n 'mdl-data-table__header--sorted-ascending': sortHeader === column.name && isAsc,\n 'mdl-data-table__header--sorted-descending': sortHeader === column.name && !isAsc\n });\n }\n }, {\n key: 'getDefaultSortFn',\n value: function getDefaultSortFn(a, b, isAsc) {\n return isAsc ? a.localeCompare(b) : b.localeCompare(a);\n }\n }, {\n key: 'getSortedRowsForColumn',\n value: function getSortedRowsForColumn(isAsc, columnName, rows) {\n var columns = !!this.props.children ? _react2.default.Children.map(this.props.children, function (child) {\n return child.props;\n }) : this.props.columns;\n\n var sortFn = this.getDefaultSortFn;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].name === columnName && columns[i].sortFn) {\n sortFn = columns[i].sortFn;\n break;\n }\n }\n\n return rows.sort(function (a, b) {\n return sortFn(String(a[columnName]), String(b[columnName]), isAsc);\n });\n }\n }, {\n key: 'handleClickColumn',\n value: function handleClickColumn(e, columnName) {\n var isAsc = this.state.sortHeader === columnName ? !this.state.isAsc : true;\n var rows = this.getSortedRowsForColumn(isAsc, columnName, this.state.rows);\n this.setState({\n sortHeader: columnName,\n isAsc: isAsc,\n rows: rows\n });\n }\n }, {\n key: 'renderTableHeaders',\n value: function renderTableHeaders() {\n var _this2 = this;\n\n var _props = this.props,\n children = _props.children,\n columns = _props.columns,\n sortable = _props.sortable;\n\n\n if (sortable) {\n return children ? _react2.default.Children.map(children, function (child) {\n return _react2.default.cloneElement(child, {\n className: _this2.getColumnClass(child.props),\n onClick: _this2.handleClickColumn\n });\n }) : columns.map(function (column) {\n return _react2.default.createElement(\n _TableHeader2.default,\n {\n key: column.name,\n className: _this2.getColumnClass(column),\n name: column.name,\n numeric: column.numeric,\n tooltip: column.tooltip,\n onClick: _this2.handleClickColumn\n },\n column.label\n );\n });\n }\n return children;\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n rows = _props2.rows,\n data = _props2.data,\n otherProps = _objectWithoutProperties(_props2, ['rows', 'data']);\n\n var realRows = this.state && this.state.rows || rows || data;\n\n // remove unwanted props\n delete otherProps.sortable;\n\n return _react2.default.createElement(\n Component,\n _extends({ rows: realRows }, otherProps),\n this.renderTableHeaders()\n );\n }\n }]);\n\n return Sortable;\n }(_react2.default.Component);\n\n Sortable.propTypes = propTypes;\n return Sortable;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/DataTable/Sortable.js\n// module id = 347\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UndecoratedTable = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _clamp = require('clamp');\n\nvar _clamp2 = _interopRequireDefault(_clamp);\n\nvar _shadows = require('../utils/shadows');\n\nvar _shadows2 = _interopRequireDefault(_shadows);\n\nvar _TableHeader = require('./TableHeader');\n\nvar _TableHeader2 = _interopRequireDefault(_TableHeader);\n\nvar _Selectable = require('./Selectable');\n\nvar _Selectable2 = _interopRequireDefault(_Selectable);\n\nvar _Sortable = require('./Sortable');\n\nvar _Sortable2 = _interopRequireDefault(_Sortable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n className: _react.PropTypes.string,\n columns: function columns(props, propName, componentName) {\n return props[propName] && new Error(componentName + ': `' + propName + '` is deprecated, please use the component `TableHeader` instead.');\n },\n data: function data(props, propName, componentName) {\n return props[propName] && new Error(componentName + ': `' + propName + '` is deprecated, please use `rows` instead. `' + propName + '` will be removed in the next major release.');\n },\n rowKeyColumn: _react.PropTypes.string,\n rows: _react.PropTypes.arrayOf(_react.PropTypes.object).isRequired,\n shadow: _react.PropTypes.number\n};\n\nvar Table = function (_React$Component) {\n _inherits(Table, _React$Component);\n\n function Table() {\n _classCallCheck(this, Table);\n\n return _possibleConstructorReturn(this, (Table.__proto__ || Object.getPrototypeOf(Table)).apply(this, arguments));\n }\n\n _createClass(Table, [{\n key: 'renderCell',\n value: function renderCell(column, row, idx) {\n var className = !column.numeric ? 'mdl-data-table__cell--non-numeric' : '';\n return _react2.default.createElement(\n 'td',\n { key: column.name, className: className },\n column.cellFormatter ? column.cellFormatter(row[column.name], row, idx) : row[column.name]\n );\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n className = _props.className,\n columns = _props.columns,\n shadow = _props.shadow,\n children = _props.children,\n rowKeyColumn = _props.rowKeyColumn,\n rows = _props.rows,\n data = _props.data,\n otherProps = _objectWithoutProperties(_props, ['className', 'columns', 'shadow', 'children', 'rowKeyColumn', 'rows', 'data']);\n\n var realRows = rows || data;\n\n var hasShadow = typeof shadow !== 'undefined';\n var shadowLevel = (0, _clamp2.default)(shadow || 0, 0, _shadows2.default.length - 1);\n\n var classes = (0, _classnames2.default)('mdl-data-table', _defineProperty({}, _shadows2.default[shadowLevel], hasShadow), className);\n\n var columnChildren = !!children ? _react2.default.Children.toArray(children) : columns.map(function (column) {\n return _react2.default.createElement(\n _TableHeader2.default,\n {\n key: column.name,\n className: column.className,\n name: column.name,\n numeric: column.numeric,\n tooltip: column.tooltip\n },\n column.label\n );\n });\n return _react2.default.createElement(\n 'table',\n _extends({ className: classes }, otherProps),\n _react2.default.createElement(\n 'thead',\n null,\n _react2.default.createElement(\n 'tr',\n null,\n columnChildren\n )\n ),\n _react2.default.createElement(\n 'tbody',\n null,\n realRows.map(function (row, idx) {\n var _ref = row.mdlRowProps || {},\n mdlRowPropsClassName = _ref.className,\n remainingMdlRowProps = _objectWithoutProperties(_ref, ['className']);\n\n return _react2.default.createElement(\n 'tr',\n _extends({\n key: row[rowKeyColumn] || row.key || idx,\n className: (0, _classnames2.default)(row.className, mdlRowPropsClassName)\n }, remainingMdlRowProps),\n columnChildren.map(function (child) {\n return _this2.renderCell(child.props, row, idx);\n })\n );\n })\n )\n );\n }\n }]);\n\n return Table;\n}(_react2.default.Component);\n\nTable.propTypes = propTypes;\n\nexports.default = (0, _Sortable2.default)((0, _Selectable2.default)(Table));\nvar UndecoratedTable = exports.UndecoratedTable = Table;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/DataTable/Table.js\n// module id = 348\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _TableHeader = require('./TableHeader');\n\nObject.defineProperty(exports, 'TableHeader', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_TableHeader).default;\n }\n});\n\nvar _Table = require('./Table');\n\nObject.defineProperty(exports, 'Table', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Table).default;\n }\n});\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Table).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/DataTable/index.js\n// module id = 349\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n className: _react.PropTypes.string,\n onCancel: _react.PropTypes.func,\n open: _react.PropTypes.bool\n};\n\nvar defaultProps = {\n onCancel: function onCancel(e) {\n return e.preventDefault();\n }\n};\n\nvar Dialog = function (_React$Component) {\n _inherits(Dialog, _React$Component);\n\n function Dialog() {\n _classCallCheck(this, Dialog);\n\n return _possibleConstructorReturn(this, (Dialog.__proto__ || Object.getPrototypeOf(Dialog)).apply(this, arguments));\n }\n\n _createClass(Dialog, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.dialogRef.addEventListener('cancel', this.props.onCancel);\n if (this.props.open) {\n (0, _reactDom.findDOMNode)(this).showModal();\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.open !== prevProps.open) {\n if (this.props.open) {\n (0, _reactDom.findDOMNode)(this).showModal();\n\n // display the dialog at the right location\n // needed for the polyfill, otherwise it's not at the right position\n var windowHeight = window.innerHeight;\n if (this.dialogRef) {\n var dialogHeight = this.dialogRef.clientHeight;\n this.dialogRef.style.position = 'fixed';\n this.dialogRef.style.top = (windowHeight - dialogHeight) / 2 + 'px';\n }\n } else {\n (0, _reactDom.findDOMNode)(this).close();\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.dialogRef.removeEventListener('cancel', this.props.onCancel);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n // We cannot set the `open` prop on the Dialog if we manage its state manually with `showModal`,\n // this the disabled eslint rule\n // eslint-disable-next-line no-unused-vars\n var _props = this.props,\n className = _props.className,\n open = _props.open,\n onCancel = _props.onCancel,\n children = _props.children,\n otherProps = _objectWithoutProperties(_props, ['className', 'open', 'onCancel', 'children']);\n\n var classes = (0, _classnames2.default)('mdl-dialog', className);\n\n return _react2.default.createElement(\n 'dialog',\n _extends({ ref: function ref(c) {\n return _this2.dialogRef = c;\n }, className: classes }, otherProps),\n children\n );\n }\n }]);\n\n return Dialog;\n}(_react2.default.Component);\n\nDialog.propTypes = propTypes;\nDialog.defaultProps = defaultProps;\n\nexports.default = Dialog;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Dialog/Dialog.js\n// module id = 350\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DialogActions = function DialogActions(props) {\n var className = props.className,\n fullWidth = props.fullWidth,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'fullWidth', 'children']);\n\n var classes = (0, _classnames2.default)('mdl-dialog__actions', {\n 'mdl-dialog__actions--full-width': fullWidth\n }, className);\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: classes }, otherProps),\n children\n );\n};\n\nDialogActions.propTypes = {\n className: _react.PropTypes.string,\n fullWidth: _react.PropTypes.bool\n};\n\nexports.default = DialogActions;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Dialog/DialogActions.js\n// module id = 351\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DialogTitle = function DialogTitle(props) {\n var className = props.className,\n component = props.component,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'component', 'children']);\n\n return _react2.default.createElement(component || 'h4', _extends({\n className: (0, _classnames2.default)('mdl-dialog__title', className)\n }, otherProps), children);\n};\n\nDialogTitle.propTypes = {\n className: _react.PropTypes.string,\n component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.func])\n};\n\nexports.default = DialogTitle;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Dialog/DialogTitle.js\n// module id = 352\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DialogActions = exports.DialogContent = exports.DialogTitle = exports.Dialog = undefined;\n\nvar _Dialog = require('./Dialog');\n\nObject.defineProperty(exports, 'Dialog', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Dialog).default;\n }\n});\n\nvar _DialogTitle = require('./DialogTitle');\n\nObject.defineProperty(exports, 'DialogTitle', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_DialogTitle).default;\n }\n});\n\nvar _DialogActions = require('./DialogActions');\n\nObject.defineProperty(exports, 'DialogActions', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_DialogActions).default;\n }\n});\n\nvar _basicClassCreator = require('../utils/basicClassCreator');\n\nvar _basicClassCreator2 = _interopRequireDefault(_basicClassCreator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar DialogContent = exports.DialogContent = (0, _basicClassCreator2.default)('DialogContent', 'mdl-dialog__content');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Dialog/index.js\n// module id = 353\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _Button = require('./Button');\n\nvar _Button2 = _interopRequireDefault(_Button);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar FABButton = function FABButton(props) {\n var mini = props.mini,\n className = props.className,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['mini', 'className', 'children']);\n\n var classes = (0, _classnames2.default)('mdl-button--fab', {\n 'mdl-button--mini-fab': mini\n }, className);\n\n return _react2.default.createElement(\n _Button2.default,\n _extends({ className: classes }, otherProps),\n children\n );\n};\n\nFABButton.propTypes = {\n className: _react.PropTypes.string,\n mini: _react.PropTypes.bool\n};\n\nexports.default = FABButton;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/FABButton.js\n// module id = 354\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _cloneChildren = require('../utils/cloneChildren');\n\nvar _cloneChildren2 = _interopRequireDefault(_cloneChildren);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar DropDownSection = function DropDownSection(props) {\n var className = props.className,\n size = props.size,\n title = props.title,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'size', 'title', 'children']);\n\n var classes = (0, _classnames2.default)(_defineProperty({}, 'mdl-' + size + '-footer__drop-down-section', true), className);\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: classes }, otherProps),\n _react2.default.createElement('input', { className: 'mdl-' + size + '-footer__heading-checkbox', type: 'checkbox', defaultChecked: true }),\n _react2.default.createElement(\n 'h1',\n { className: 'mdl-' + size + '-footer__heading' },\n title\n ),\n (0, _cloneChildren2.default)(children, { size: size })\n );\n};\n\nDropDownSection.propTypes = {\n className: _react.PropTypes.string,\n size: _react.PropTypes.oneOf(['mini', 'mega']),\n title: _react.PropTypes.node.isRequired\n};\nDropDownSection.defaultProps = {\n size: 'mega'\n};\n\nexports.default = DropDownSection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Footer/DropDownSection.js\n// module id = 355\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _cloneChildren = require('../utils/cloneChildren');\n\nvar _cloneChildren2 = _interopRequireDefault(_cloneChildren);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar Footer = function Footer(props) {\n var className = props.className,\n size = props.size,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'size', 'children']);\n\n var classes = (0, _classnames2.default)(_defineProperty({}, 'mdl-' + size + '-footer', true), className);\n\n return _react2.default.createElement(\n 'footer',\n _extends({ className: classes }, otherProps),\n (0, _cloneChildren2.default)(children, { size: size })\n );\n};\n\nFooter.propTypes = {\n className: _react.PropTypes.string,\n size: _react.PropTypes.oneOf(['mini', 'mega'])\n};\nFooter.defaultProps = {\n size: 'mega'\n};\n\nexports.default = Footer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Footer/Footer.js\n// module id = 356\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar LinkList = function LinkList(props) {\n var className = props.className,\n size = props.size,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'size', 'children']);\n\n var classes = (0, _classnames2.default)(_defineProperty({}, 'mdl-' + size + '-footer__link-list', true), className);\n\n return _react2.default.createElement(\n 'ul',\n _extends({ className: classes }, otherProps),\n _react2.default.Children.map(children, function (child) {\n return _react2.default.createElement(\n 'li',\n null,\n child\n );\n })\n );\n};\n\nLinkList.propTypes = {\n className: _react.PropTypes.string,\n size: _react.PropTypes.oneOf(['mini', 'mega'])\n};\nLinkList.defaultProps = {\n size: 'mega'\n};\n\nexports.default = LinkList;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Footer/LinkList.js\n// module id = 357\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _cloneChildren = require('../utils/cloneChildren');\n\nvar _cloneChildren2 = _interopRequireDefault(_cloneChildren);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar Section = function Section(props) {\n var className = props.className,\n logo = props.logo,\n size = props.size,\n type = props.type,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'logo', 'size', 'type', 'children']);\n\n var classes = (0, _classnames2.default)(_defineProperty({}, 'mdl-' + size + '-footer__' + type + '-section', true), className);\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: classes }, otherProps),\n logo ? _react2.default.createElement(\n 'div',\n { className: 'mdl-logo' },\n logo\n ) : null,\n (0, _cloneChildren2.default)(children, { size: size })\n );\n};\n\nSection.propTypes = {\n className: _react.PropTypes.string,\n logo: _react.PropTypes.node,\n size: _react.PropTypes.oneOf(['mini', 'mega']),\n type: _react.PropTypes.oneOf(['top', 'middle', 'bottom', 'left', 'right'])\n};\nSection.defaultProps = {\n size: 'mega',\n type: 'left'\n};\n\nexports.default = Section;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Footer/Section.js\n// module id = 358\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Footer = require('./Footer');\n\nObject.defineProperty(exports, 'Footer', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Footer).default;\n }\n});\n\nvar _Section = require('./Section');\n\nObject.defineProperty(exports, 'FooterSection', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Section).default;\n }\n});\n\nvar _DropDownSection = require('./DropDownSection');\n\nObject.defineProperty(exports, 'FooterDropDownSection', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_DropDownSection).default;\n }\n});\n\nvar _LinkList = require('./LinkList');\n\nObject.defineProperty(exports, 'FooterLinkList', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_LinkList).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Footer/index.js\n// module id = 359\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _clamp = require('clamp');\n\nvar _clamp2 = _interopRequireDefault(_clamp);\n\nvar _shadows = require('../utils/shadows');\n\nvar _shadows2 = _interopRequireDefault(_shadows);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n align: _react.PropTypes.oneOf(['top', 'middle', 'bottom', 'stretch']),\n className: _react.PropTypes.string,\n col: _react.PropTypes.number,\n component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.func]),\n phone: _react.PropTypes.number,\n tablet: _react.PropTypes.number,\n offset: _react.PropTypes.number,\n offsetDesktop: _react.PropTypes.number,\n offsetTablet: _react.PropTypes.number,\n offsetPhone: _react.PropTypes.number,\n hideDesktop: _react.PropTypes.bool,\n hidePhone: _react.PropTypes.bool,\n hideTablet: _react.PropTypes.bool,\n shadow: _react.PropTypes.number\n};\n\nfunction isDefined(data) {\n return typeof data !== 'undefined';\n}\n\nvar Cell = function Cell(props) {\n var _classNames;\n\n var align = props.align,\n className = props.className,\n children = props.children,\n col = props.col,\n phone = props.phone,\n tablet = props.tablet,\n component = props.component,\n hideDesktop = props.hideDesktop,\n hidePhone = props.hidePhone,\n hideTablet = props.hideTablet,\n shadow = props.shadow,\n offset = props.offset,\n offsetDesktop = props.offsetDesktop,\n offsetTablet = props.offsetTablet,\n offsetPhone = props.offsetPhone,\n otherProps = _objectWithoutProperties(props, ['align', 'className', 'children', 'col', 'phone', 'tablet', 'component', 'hideDesktop', 'hidePhone', 'hideTablet', 'shadow', 'offset', 'offsetDesktop', 'offsetTablet', 'offsetPhone']);\n\n var hasShadow = isDefined(shadow);\n var shadowLevel = (0, _clamp2.default)(shadow || 0, 0, _shadows2.default.length - 1);\n\n var classes = (0, _classnames2.default)('mdl-cell', (_classNames = {}, _defineProperty(_classNames, 'mdl-cell--' + col + '-col', isDefined(col)), _defineProperty(_classNames, 'mdl-cell--' + phone + '-col-phone', isDefined(phone)), _defineProperty(_classNames, 'mdl-cell--' + tablet + '-col-tablet', isDefined(tablet)), _defineProperty(_classNames, 'mdl-cell--' + align, isDefined(align)), _defineProperty(_classNames, 'mdl-cell--' + offset + '-offset', isDefined(offset)), _defineProperty(_classNames, 'mdl-cell--' + offsetDesktop + '-offset-desktop', isDefined(offsetDesktop)), _defineProperty(_classNames, 'mdl-cell--' + offsetTablet + '-offset-tablet', isDefined(offsetTablet)), _defineProperty(_classNames, 'mdl-cell--' + offsetPhone + '-offset-phone', isDefined(offsetPhone)), _defineProperty(_classNames, 'mdl-cell--hide-desktop', hideDesktop), _defineProperty(_classNames, 'mdl-cell--hide-phone', hidePhone), _defineProperty(_classNames, 'mdl-cell--hide-tablet', hideTablet), _defineProperty(_classNames, _shadows2.default[shadowLevel], hasShadow), _classNames), className);\n\n return _react2.default.createElement(component || 'div', _extends({\n className: classes\n }, otherProps), children);\n};\n\nCell.propTypes = propTypes;\n\nexports.default = Cell;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Grid/Cell.js\n// module id = 360\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _clamp = require('clamp');\n\nvar _clamp2 = _interopRequireDefault(_clamp);\n\nvar _shadows = require('../utils/shadows');\n\nvar _shadows2 = _interopRequireDefault(_shadows);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n className: _react.PropTypes.string,\n component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.func]),\n noSpacing: _react.PropTypes.bool,\n shadow: _react.PropTypes.number\n};\n\nvar Grid = function Grid(props) {\n var noSpacing = props.noSpacing,\n className = props.className,\n children = props.children,\n component = props.component,\n shadow = props.shadow,\n otherProps = _objectWithoutProperties(props, ['noSpacing', 'className', 'children', 'component', 'shadow']);\n\n var hasShadow = typeof shadow !== 'undefined';\n var shadowLevel = (0, _clamp2.default)(shadow || 0, 0, _shadows2.default.length - 1);\n\n var classes = (0, _classnames2.default)('mdl-grid', _defineProperty({\n 'mdl-grid--no-spacing': noSpacing\n }, _shadows2.default[shadowLevel], hasShadow), className);\n\n return _react2.default.createElement(component || 'div', _extends({\n className: classes\n }, otherProps), children);\n};\n\nGrid.propTypes = propTypes;\n\nexports.default = Grid;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Grid/Grid.js\n// module id = 361\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Grid = require('./Grid');\n\nObject.defineProperty(exports, 'default', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Grid).default;\n }\n});\nObject.defineProperty(exports, 'Grid', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Grid).default;\n }\n});\n\nvar _Cell = require('./Cell');\n\nObject.defineProperty(exports, 'Cell', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Cell).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Grid/index.js\n// module id = 362\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _Button = require('./Button');\n\nvar _Button2 = _interopRequireDefault(_Button);\n\nvar _Icon = require('./Icon');\n\nvar _Icon2 = _interopRequireDefault(_Icon);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar IconButton = function IconButton(props) {\n var className = props.className,\n name = props.name,\n otherProps = _objectWithoutProperties(props, ['className', 'name']);\n\n var classes = (0, _classnames2.default)('mdl-button--icon', className);\n\n return _react2.default.createElement(\n _Button2.default,\n _extends({ className: classes }, otherProps),\n _react2.default.createElement(_Icon2.default, { name: name })\n );\n};\n\nIconButton.propTypes = {\n className: _react.PropTypes.string,\n name: _react.PropTypes.string.isRequired\n};\n\nexports.default = IconButton;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/IconButton.js\n// module id = 363\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _Icon = require('./Icon');\n\nvar _Icon2 = _interopRequireDefault(_Icon);\n\nvar _mdlUpgrade = require('./utils/mdlUpgrade');\n\nvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n checked: _react.PropTypes.bool,\n className: _react.PropTypes.string,\n disabled: _react.PropTypes.bool,\n name: _react.PropTypes.string.isRequired,\n onChange: _react.PropTypes.func,\n ripple: _react.PropTypes.bool\n};\n\nvar IconToggle = function (_React$Component) {\n _inherits(IconToggle, _React$Component);\n\n function IconToggle() {\n _classCallCheck(this, IconToggle);\n\n return _possibleConstructorReturn(this, (IconToggle.__proto__ || Object.getPrototypeOf(IconToggle)).apply(this, arguments));\n }\n\n _createClass(IconToggle, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.disabled !== prevProps.disabled) {\n var fnName = this.props.disabled ? 'disable' : 'enable';\n (0, _reactDom.findDOMNode)(this).MaterialIconToggle[fnName]();\n }\n if (this.props.checked !== prevProps.checked) {\n var _fnName = this.props.checked ? 'check' : 'uncheck';\n (0, _reactDom.findDOMNode)(this).MaterialIconToggle[_fnName]();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n name = _props.name,\n ripple = _props.ripple,\n inputProps = _objectWithoutProperties(_props, ['className', 'name', 'ripple']);\n\n var classes = (0, _classnames2.default)('mdl-icon-toggle mdl-js-icon-toggle', {\n 'mdl-js-ripple-effect': ripple\n }, className);\n\n return _react2.default.createElement(\n 'label',\n { className: classes },\n _react2.default.createElement('input', _extends({\n type: 'checkbox',\n className: 'mdl-icon-toggle__input'\n }, inputProps)),\n _react2.default.createElement(_Icon2.default, { className: 'mdl-icon-toggle__label', name: name })\n );\n }\n }]);\n\n return IconToggle;\n}(_react2.default.Component);\n\nIconToggle.propTypes = propTypes;\n\nexports.default = (0, _mdlUpgrade2.default)(IconToggle, true);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/IconToggle.js\n// module id = 364\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar Content = function Content(props) {\n var children = props.children,\n className = props.className,\n component = props.component,\n otherProps = _objectWithoutProperties(props, ['children', 'className', 'component']);\n\n var classes = (0, _classnames2.default)('mdl-layout__content', className);\n\n return _react2.default.createElement(component || 'div', _extends({\n className: classes\n }, otherProps), children);\n};\n\nContent.propTypes = {\n className: _react.PropTypes.string,\n component: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.element, _react.PropTypes.func])\n};\n\nexports.default = Content;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Layout/Content.js\n// module id = 365\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar Drawer = function Drawer(props) {\n var className = props.className,\n title = props.title,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'title', 'children']);\n\n var classes = (0, _classnames2.default)('mdl-layout__drawer', className);\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: classes }, otherProps),\n title ? _react2.default.createElement(\n 'span',\n { className: 'mdl-layout-title' },\n title\n ) : null,\n children\n );\n};\nDrawer.propTypes = {\n className: _react.PropTypes.string,\n title: _react.PropTypes.node\n};\n\nexports.default = Drawer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Layout/Drawer.js\n// module id = 366\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _HeaderRow = require('./HeaderRow');\n\nvar _HeaderRow2 = _interopRequireDefault(_HeaderRow);\n\nvar _HeaderTabs = require('./HeaderTabs');\n\nvar _HeaderTabs2 = _interopRequireDefault(_HeaderTabs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar Header = function Header(props) {\n var className = props.className,\n scroll = props.scroll,\n seamed = props.seamed,\n title = props.title,\n transparent = props.transparent,\n waterfall = props.waterfall,\n hideTop = props.hideTop,\n hideSpacer = props.hideSpacer,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'scroll', 'seamed', 'title', 'transparent', 'waterfall', 'hideTop', 'hideSpacer', 'children']);\n\n var classes = (0, _classnames2.default)('mdl-layout__header', {\n 'mdl-layout__header--scroll': scroll,\n 'mdl-layout__header--seamed': seamed,\n 'mdl-layout__header--transparent': transparent,\n 'mdl-layout__header--waterfall': waterfall,\n 'mdl-layout__header--waterfall-hide-top': waterfall && hideTop\n }, className);\n\n var isRowOrTab = false;\n _react2.default.Children.forEach(children, function (child) {\n if (child && (child.type === _HeaderRow2.default || child.type === _HeaderTabs2.default)) {\n isRowOrTab = true;\n }\n });\n\n return _react2.default.createElement(\n 'header',\n _extends({ className: classes }, otherProps),\n isRowOrTab ? children : _react2.default.createElement(\n _HeaderRow2.default,\n { title: title, hideSpacer: hideSpacer },\n children\n )\n );\n};\nHeader.propTypes = {\n className: _react.PropTypes.string,\n scroll: _react.PropTypes.bool,\n seamed: _react.PropTypes.bool,\n title: _react.PropTypes.node,\n transparent: _react.PropTypes.bool,\n waterfall: _react.PropTypes.bool,\n hideTop: _react.PropTypes.bool,\n hideSpacer: _react.PropTypes.bool\n};\n\nexports.default = Header;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Layout/Header.js\n// module id = 367\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _mdlUpgrade = require('../utils/mdlUpgrade');\n\nvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n className: _react.PropTypes.string,\n fixedDrawer: _react.PropTypes.bool,\n fixedHeader: _react.PropTypes.bool,\n fixedTabs: _react.PropTypes.bool\n};\n\n// eslint-disable-next-line react/prefer-stateless-function\n\nvar Layout = function (_React$Component) {\n _inherits(Layout, _React$Component);\n\n function Layout() {\n _classCallCheck(this, Layout);\n\n return _possibleConstructorReturn(this, (Layout.__proto__ || Object.getPrototypeOf(Layout)).apply(this, arguments));\n }\n\n _createClass(Layout, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n fixedDrawer = _props.fixedDrawer,\n fixedHeader = _props.fixedHeader,\n fixedTabs = _props.fixedTabs,\n otherProps = _objectWithoutProperties(_props, ['className', 'fixedDrawer', 'fixedHeader', 'fixedTabs']);\n\n var classes = (0, _classnames2.default)('mdl-layout mdl-js-layout', {\n 'mdl-layout--fixed-drawer': fixedDrawer,\n 'mdl-layout--fixed-header': fixedHeader,\n 'mdl-layout--fixed-tabs': fixedTabs\n }, className);\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: classes }, otherProps),\n _react2.default.createElement(\n 'div',\n { className: 'mdl-layout__inner-container' },\n this.props.children\n )\n );\n }\n }]);\n\n return Layout;\n}(_react2.default.Component);\n\nLayout.propTypes = propTypes;\n\nexports.default = (0, _mdlUpgrade2.default)(Layout, true);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Layout/Layout.js\n// module id = 368\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _cloneChildren = require('../utils/cloneChildren');\n\nvar _cloneChildren2 = _interopRequireDefault(_cloneChildren);\n\nvar _Spacer = require('./Spacer');\n\nvar _Spacer2 = _interopRequireDefault(_Spacer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar Navigation = function Navigation(props) {\n var className = props.className,\n children = props.children,\n otherProps = _objectWithoutProperties(props, ['className', 'children']);\n\n var classes = (0, _classnames2.default)('mdl-navigation', className);\n\n return _react2.default.createElement(\n 'nav',\n _extends({ className: classes }, otherProps),\n (0, _cloneChildren2.default)(children, function (child) {\n return {\n className: (0, _classnames2.default)({ 'mdl-navigation__link': child.type !== _Spacer2.default }, child.props.className)\n };\n })\n );\n};\nNavigation.propTypes = {\n className: _react.PropTypes.string\n};\n\nexports.default = Navigation;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Layout/Navigation.js\n// module id = 369\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Layout = require('./Layout');\n\nObject.defineProperty(exports, 'Layout', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Layout).default;\n }\n});\n\nvar _Content = require('./Content');\n\nObject.defineProperty(exports, 'Content', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Content).default;\n }\n});\n\nvar _Drawer = require('./Drawer');\n\nObject.defineProperty(exports, 'Drawer', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Drawer).default;\n }\n});\n\nvar _Header = require('./Header');\n\nObject.defineProperty(exports, 'Header', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Header).default;\n }\n});\n\nvar _HeaderRow = require('./HeaderRow');\n\nObject.defineProperty(exports, 'HeaderRow', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_HeaderRow).default;\n }\n});\n\nvar _HeaderTabs = require('./HeaderTabs');\n\nObject.defineProperty(exports, 'HeaderTabs', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_HeaderTabs).default;\n }\n});\n\nvar _Navigation = require('./Navigation');\n\nObject.defineProperty(exports, 'Navigation', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Navigation).default;\n }\n});\n\nvar _Spacer = require('./Spacer');\n\nObject.defineProperty(exports, 'Spacer', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Spacer).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Layout/index.js\n// module id = 370\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _ListItemContent = require('./ListItemContent');\n\nvar _ListItemContent2 = _interopRequireDefault(_ListItemContent);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n children: _react.PropTypes.node,\n className: _react.PropTypes.string,\n twoLine: _react.PropTypes.bool,\n threeLine: _react.PropTypes.bool\n};\n\nvar ListItem = function ListItem(props) {\n var className = props.className,\n twoLine = props.twoLine,\n threeLine = props.threeLine,\n otherProps = _objectWithoutProperties(props, ['className', 'twoLine', 'threeLine']);\n\n var classes = (0, _classnames2.default)('mdl-list__item', {\n 'mdl-list__item--two-line': twoLine && !threeLine,\n 'mdl-list__item--three-line': !twoLine && threeLine\n }, className);\n\n var children = _react.Children.map(otherProps.children, function (child) {\n if (typeof child === 'string') {\n return _react2.default.createElement(\n _ListItemContent2.default,\n null,\n child\n );\n }\n if (child.type === _ListItemContent2.default) {\n return (0, _react.cloneElement)(child, {\n useBodyClass: !!threeLine\n });\n }\n return child;\n });\n\n return _react2.default.createElement(\n 'li',\n _extends({ className: classes }, otherProps),\n children\n );\n};\n\nListItem.propTypes = propTypes;\n\nexports.default = ListItem;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/List/ListItem.js\n// module id = 371\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar propTypes = {\n children: _react.PropTypes.node,\n className: _react.PropTypes.string,\n info: _react.PropTypes.string\n};\n\nvar ListItemAction = function ListItemAction(props) {\n var children = props.children,\n className = props.className,\n info = props.info,\n otherProps = _objectWithoutProperties(props, ['children', 'className', 'info']);\n\n var classes = (0, _classnames2.default)('mdl-list__item-secondary-content', className);\n\n return _react2.default.createElement(\n 'span',\n _extends({ className: classes }, otherProps),\n info && _react2.default.createElement(\n 'span',\n { className: 'mdl-list__item-secondary-info' },\n info\n ),\n _react2.default.createElement(\n 'span',\n { className: 'mdl-list__item-secondary-action' },\n children\n )\n );\n};\n\nListItemAction.propTypes = propTypes;\n\nexports.default = ListItemAction;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/List/ListItemAction.js\n// module id = 372\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ListItemContent = exports.ListItemAction = exports.ListItem = exports.List = undefined;\n\nvar _ListItem = require('./ListItem');\n\nObject.defineProperty(exports, 'ListItem', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ListItem).default;\n }\n});\n\nvar _ListItemAction = require('./ListItemAction');\n\nObject.defineProperty(exports, 'ListItemAction', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ListItemAction).default;\n }\n});\n\nvar _ListItemContent = require('./ListItemContent');\n\nObject.defineProperty(exports, 'ListItemContent', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_ListItemContent).default;\n }\n});\n\nvar _basicClassCreator = require('../utils/basicClassCreator');\n\nvar _basicClassCreator2 = _interopRequireDefault(_basicClassCreator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar List = exports.List = (0, _basicClassCreator2.default)('List', 'mdl-list', 'ul');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/List/index.js\n// module id = 373\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MenuItem = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _basicClassCreator = require('./utils/basicClassCreator');\n\nvar _basicClassCreator2 = _interopRequireDefault(_basicClassCreator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n align: _react.PropTypes.oneOf(['left', 'right']),\n className: _react.PropTypes.string,\n ripple: _react.PropTypes.bool,\n target: _react.PropTypes.string.isRequired,\n valign: _react.PropTypes.oneOf(['bottom', 'top'])\n};\n\nvar defaultProps = {\n align: 'left',\n valign: 'bottom'\n};\n\n// eslint-disable-next-line react/prefer-stateless-function\n\nvar Menu = function (_React$Component) {\n _inherits(Menu, _React$Component);\n\n function Menu() {\n _classCallCheck(this, Menu);\n\n return _possibleConstructorReturn(this, (Menu.__proto__ || Object.getPrototypeOf(Menu)).apply(this, arguments));\n }\n\n _createClass(Menu, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n window.componentHandler.upgradeElements((0, _reactDom.findDOMNode)(this));\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var elt = (0, _reactDom.findDOMNode)(this);\n\n window.componentHandler.downgradeElements(elt);\n\n var parent = elt.parentElement;\n var grandparent = parent && parent.parentElement;\n\n if (parent && grandparent && parent.classList.contains('mdl-menu__container')) {\n grandparent.replaceChild(elt, parent);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _classNames;\n\n var _props = this.props,\n align = _props.align,\n children = _props.children,\n className = _props.className,\n ripple = _props.ripple,\n target = _props.target,\n valign = _props.valign,\n otherProps = _objectWithoutProperties(_props, ['align', 'children', 'className', 'ripple', 'target', 'valign']);\n\n var classes = (0, _classnames2.default)('mdl-menu mdl-js-menu', (_classNames = {}, _defineProperty(_classNames, 'mdl-menu--' + valign + '-' + align, true), _defineProperty(_classNames, 'mdl-js-ripple-effect', ripple), _classNames), className);\n\n return _react2.default.createElement(\n 'ul',\n _extends({ className: classes, 'data-mdl-for': target }, otherProps),\n children\n );\n }\n }]);\n\n return Menu;\n}(_react2.default.Component);\n\nMenu.propTypes = propTypes;\nMenu.defaultProps = defaultProps;\n\nexports.default = Menu;\nvar MenuItem = exports.MenuItem = (0, _basicClassCreator2.default)('MenuItem', 'mdl-menu__item', 'li');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Menu.js\n// module id = 374\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _mdlUpgrade = require('./utils/mdlUpgrade');\n\nvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n buffer: _react.PropTypes.number,\n className: _react.PropTypes.string,\n indeterminate: _react.PropTypes.bool,\n progress: _react.PropTypes.number\n};\n\nvar ProgressBar = function (_React$Component) {\n _inherits(ProgressBar, _React$Component);\n\n function ProgressBar() {\n _classCallCheck(this, ProgressBar);\n\n return _possibleConstructorReturn(this, (ProgressBar.__proto__ || Object.getPrototypeOf(ProgressBar)).apply(this, arguments));\n }\n\n _createClass(ProgressBar, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.setProgress(this.props.progress);\n this.setBuffer(this.props.buffer);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.setProgress(this.props.progress);\n this.setBuffer(this.props.buffer);\n }\n }, {\n key: 'setProgress',\n value: function setProgress(progress) {\n if (!this.props.indeterminate && progress !== undefined) {\n (0, _reactDom.findDOMNode)(this).MaterialProgress.setProgress(progress);\n }\n }\n }, {\n key: 'setBuffer',\n value: function setBuffer(buffer) {\n if (buffer !== undefined) {\n (0, _reactDom.findDOMNode)(this).MaterialProgress.setBuffer(buffer);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n indeterminate = _props.indeterminate,\n buffer = _props.buffer,\n progress = _props.progress,\n otherProps = _objectWithoutProperties(_props, ['className', 'indeterminate', 'buffer', 'progress']);\n\n var classes = (0, _classnames2.default)('mdl-progress mdl-js-progress', {\n 'mdl-progress__indeterminate': indeterminate\n }, className);\n\n return _react2.default.createElement('div', _extends({ className: classes }, otherProps));\n }\n }]);\n\n return ProgressBar;\n}(_react2.default.Component);\n\nProgressBar.propTypes = propTypes;\n\nexports.default = (0, _mdlUpgrade2.default)(ProgressBar);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/ProgressBar.js\n// module id = 375\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Radio = require('./Radio');\n\nvar _Radio2 = _interopRequireDefault(_Radio);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar RadioGroup = function RadioGroup(props) {\n var name = props.name,\n value = props.value,\n children = props.children,\n container = props.container,\n childContainer = props.childContainer,\n onChange = props.onChange,\n otherProps = _objectWithoutProperties(props, ['name', 'value', 'children', 'container', 'childContainer', 'onChange']);\n\n var hasOnChange = typeof onChange === 'function';\n var checked = hasOnChange ? 'checked' : 'defaultChecked';\n\n return _react2.default.createElement(container, otherProps, _react2.default.Children.map(children, function (child) {\n var _extends2;\n\n var clonedChild = _react2.default.cloneElement(child, _extends((_extends2 = {}, _defineProperty(_extends2, checked, child.props.value === value), _defineProperty(_extends2, 'name', name), _defineProperty(_extends2, 'onChange', onChange), _extends2), otherProps));\n\n return childContainer ? _react2.default.createElement(childContainer, {}, clonedChild) : clonedChild;\n }));\n};\n\nRadioGroup.propTypes = {\n childContainer: _react.PropTypes.string,\n children: _react.PropTypes.arrayOf(function (props, propName, componentName) {\n var prop = props[propName];\n return prop.type !== _Radio2.default && new Error('\\'' + componentName + '\\' only accepts \\'Radio\\' as children.');\n }),\n container: _react.PropTypes.string,\n name: _react.PropTypes.string.isRequired,\n onChange: _react.PropTypes.func,\n value: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number]).isRequired\n};\n\nRadioGroup.defaultProps = {\n container: 'div'\n};\n\nexports.default = RadioGroup;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/RadioGroup.js\n// module id = 376\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _mdlUpgrade = require('./utils/mdlUpgrade');\n\nvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n className: _react.PropTypes.string,\n max: _react.PropTypes.number.isRequired,\n min: _react.PropTypes.number.isRequired,\n onChange: _react.PropTypes.func,\n value: _react.PropTypes.number\n};\n\nvar Slider = function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n function Slider() {\n _classCallCheck(this, Slider);\n\n return _possibleConstructorReturn(this, (Slider.__proto__ || Object.getPrototypeOf(Slider)).apply(this, arguments));\n }\n\n _createClass(Slider, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (typeof this.props.value !== 'undefined') {\n (0, _reactDom.findDOMNode)(this).MaterialSlider.change(this.props.value);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n otherProps = _objectWithoutProperties(_props, ['className']);\n\n var classes = (0, _classnames2.default)('mdl-slider mdl-js-slider', className);\n\n return _react2.default.createElement('input', _extends({\n className: classes,\n type: 'range'\n }, otherProps));\n }\n }]);\n\n return Slider;\n}(_react2.default.Component);\n\nSlider.propTypes = propTypes;\n\nexports.default = (0, _mdlUpgrade2.default)(Slider);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Slider.js\n// module id = 377\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// This component doesn't use the javascript from MDL.\n// This is the expected behavior and the reason is because it's not written in\n// a way to make it easy to use with React.\nvar ANIMATION_LENGTH = 250;\n\nvar propTypes = {\n action: _react.PropTypes.string,\n active: _react.PropTypes.bool.isRequired,\n className: _react.PropTypes.string,\n onActionClick: _react.PropTypes.func,\n onTimeout: _react.PropTypes.func.isRequired,\n timeout: _react.PropTypes.number\n};\n\nvar defaultProps = {\n timeout: 2750\n};\n\nvar Snackbar = function (_React$Component) {\n _inherits(Snackbar, _React$Component);\n\n function Snackbar(props) {\n _classCallCheck(this, Snackbar);\n\n var _this = _possibleConstructorReturn(this, (Snackbar.__proto__ || Object.getPrototypeOf(Snackbar)).call(this, props));\n\n _this.clearTimer = _this.clearTimer.bind(_this);\n _this.timeoutId = null;\n _this.clearTimeoutId = null;\n _this.state = {\n open: false\n };\n return _this;\n }\n\n _createClass(Snackbar, [{\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n this.setState({\n open: nextProps.active\n });\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n }\n\n if (this.props.active) {\n this.timeoutId = setTimeout(this.clearTimer, this.props.timeout);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = null;\n }\n if (this.clearTimeoutId) {\n clearTimeout(this.clearTimeoutId);\n this.clearTimeoutId = null;\n }\n }\n }, {\n key: 'clearTimer',\n value: function clearTimer() {\n var _this2 = this;\n\n this.timeoutId = null;\n this.setState({ open: false });\n\n this.clearTimeoutId = setTimeout(function () {\n _this2.clearTimeoutId = null;\n _this2.props.onTimeout();\n }, ANIMATION_LENGTH);\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n action = _props.action,\n active = _props.active,\n className = _props.className,\n children = _props.children,\n onActionClick = _props.onActionClick,\n otherProps = _objectWithoutProperties(_props, ['action', 'active', 'className', 'children', 'onActionClick']);\n\n var open = this.state.open;\n\n\n var classes = (0, _classnames2.default)('mdl-snackbar', {\n 'mdl-snackbar--active': open\n }, className);\n\n delete otherProps.onTimeout;\n delete otherProps.timeout;\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: classes, 'aria-hidden': !open }, otherProps),\n _react2.default.createElement(\n 'div',\n { className: 'mdl-snackbar__text' },\n active && children\n ),\n active && action && _react2.default.createElement(\n 'button',\n { className: 'mdl-snackbar__action', type: 'button', onClick: onActionClick },\n action\n )\n );\n }\n }]);\n\n return Snackbar;\n}(_react2.default.Component);\n\nSnackbar.propTypes = propTypes;\nSnackbar.defaultProps = defaultProps;\n\nexports.default = Snackbar;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Snackbar/index.js\n// module id = 378\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _mdlUpgrade = require('./utils/mdlUpgrade');\n\nvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n className: _react.PropTypes.string,\n singleColor: _react.PropTypes.bool\n};\n\n// eslint-disable-next-line react/prefer-stateless-function\n\nvar Spinner = function (_React$Component) {\n _inherits(Spinner, _React$Component);\n\n function Spinner() {\n _classCallCheck(this, Spinner);\n\n return _possibleConstructorReturn(this, (Spinner.__proto__ || Object.getPrototypeOf(Spinner)).apply(this, arguments));\n }\n\n _createClass(Spinner, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n singleColor = _props.singleColor,\n otherProps = _objectWithoutProperties(_props, ['className', 'singleColor']);\n\n var classes = (0, _classnames2.default)('mdl-spinner mdl-js-spinner is-active', {\n 'mdl-spinner--single-color': singleColor\n }, className);\n\n return _react2.default.createElement('div', _extends({ className: classes }, otherProps));\n }\n }]);\n\n return Spinner;\n}(_react2.default.Component);\n\nSpinner.propTypes = propTypes;\n\nexports.default = (0, _mdlUpgrade2.default)(Spinner);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Spinner.js\n// module id = 379\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _mdlUpgrade = require('./utils/mdlUpgrade');\n\nvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n checked: _react.PropTypes.bool,\n className: _react.PropTypes.string,\n disabled: _react.PropTypes.bool,\n onChange: _react.PropTypes.func,\n ripple: _react.PropTypes.bool\n};\n\nvar Switch = function (_React$Component) {\n _inherits(Switch, _React$Component);\n\n function Switch() {\n _classCallCheck(this, Switch);\n\n return _possibleConstructorReturn(this, (Switch.__proto__ || Object.getPrototypeOf(Switch)).apply(this, arguments));\n }\n\n _createClass(Switch, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.disabled !== prevProps.disabled) {\n var fnName = this.props.disabled ? 'disable' : 'enable';\n (0, _reactDom.findDOMNode)(this).MaterialSwitch[fnName]();\n }\n if (this.props.checked !== prevProps.checked) {\n var _fnName = this.props.checked ? 'on' : 'off';\n (0, _reactDom.findDOMNode)(this).MaterialSwitch[_fnName]();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n className = _props.className,\n ripple = _props.ripple,\n children = _props.children,\n inputProps = _objectWithoutProperties(_props, ['className', 'ripple', 'children']);\n\n var classes = (0, _classnames2.default)('mdl-switch mdl-js-switch', {\n 'mdl-js-ripple-effect': ripple\n }, className);\n\n return _react2.default.createElement(\n 'label',\n { className: classes },\n _react2.default.createElement('input', _extends({\n type: 'checkbox',\n className: 'mdl-switch__input'\n }, inputProps)),\n _react2.default.createElement(\n 'span',\n { className: 'mdl-switch__label' },\n children\n )\n );\n }\n }]);\n\n return Switch;\n}(_react2.default.Component);\n\nSwitch.propTypes = propTypes;\n\nexports.default = (0, _mdlUpgrade2.default)(Switch, true);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Switch.js\n// module id = 380\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _Tab = require('./Tab');\n\nvar _Tab2 = _interopRequireDefault(_Tab);\n\nvar _TabBar = require('./TabBar');\n\nvar _TabBar2 = _interopRequireDefault(_TabBar);\n\nvar _mdlUpgrade = require('../utils/mdlUpgrade');\n\nvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar TabPropType = function TabPropType(props, propName, componentName) {\n var prop = props[propName];\n return prop.type !== _Tab2.default && new Error('\\'' + componentName + '\\' only accepts \\'Tab\\' as children.');\n};\n\nvar propTypes = {\n activeTab: _react.PropTypes.number,\n children: _react.PropTypes.oneOfType([TabPropType, _react.PropTypes.arrayOf(TabPropType)]),\n className: _react.PropTypes.string,\n onChange: _react.PropTypes.func,\n tabBarProps: _react.PropTypes.object,\n ripple: _react.PropTypes.bool\n};\n\nvar Tabs = function Tabs(props) {\n var activeTab = props.activeTab,\n className = props.className,\n onChange = props.onChange,\n children = props.children,\n tabBarProps = props.tabBarProps,\n ripple = props.ripple,\n otherProps = _objectWithoutProperties(props, ['activeTab', 'className', 'onChange', 'children', 'tabBarProps', 'ripple']);\n\n var classes = (0, _classnames2.default)('mdl-tabs mdl-js-tabs', {\n 'mdl-js-ripple-effect': ripple\n }, className);\n\n return _react2.default.createElement(\n 'div',\n _extends({ className: classes }, otherProps),\n _react2.default.createElement(\n _TabBar2.default,\n _extends({ cssPrefix: 'mdl-tabs', activeTab: activeTab, onChange: onChange }, tabBarProps),\n children\n )\n );\n};\n\nTabs.propTypes = propTypes;\n\nexports.default = (0, _mdlUpgrade2.default)(Tabs, true);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Tabs/Tabs.js\n// module id = 381\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Tabs = require('./Tabs');\n\nObject.defineProperty(exports, 'Tabs', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Tabs).default;\n }\n});\n\nvar _TabBar = require('./TabBar');\n\nObject.defineProperty(exports, 'TabBar', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_TabBar).default;\n }\n});\n\nvar _Tab = require('./Tab');\n\nObject.defineProperty(exports, 'Tab', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Tab).default;\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Tabs/index.js\n// module id = 382\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _mdlUpgrade = require('./utils/mdlUpgrade');\n\nvar _mdlUpgrade2 = _interopRequireDefault(_mdlUpgrade);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar propTypes = {\n className: _react.PropTypes.string,\n disabled: _react.PropTypes.bool,\n error: _react.PropTypes.node,\n expandable: _react.PropTypes.bool,\n expandableIcon: _react.PropTypes.string,\n floatingLabel: _react.PropTypes.bool,\n id: _react.PropTypes.string,\n inputClassName: _react.PropTypes.string,\n label: _react.PropTypes.string.isRequired,\n maxRows: _react.PropTypes.number,\n onChange: _react.PropTypes.func,\n pattern: _react.PropTypes.string,\n required: _react.PropTypes.bool,\n rows: _react.PropTypes.number,\n style: _react.PropTypes.object,\n value: _react.PropTypes.oneOfType([_react.PropTypes.string, _react.PropTypes.number])\n};\n\nvar Textfield = function (_React$Component) {\n _inherits(Textfield, _React$Component);\n\n function Textfield() {\n _classCallCheck(this, Textfield);\n\n return _possibleConstructorReturn(this, (Textfield.__proto__ || Object.getPrototypeOf(Textfield)).apply(this, arguments));\n }\n\n _createClass(Textfield, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.error && !this.props.pattern) {\n this.setAsInvalid();\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.props.required !== prevProps.required || this.props.pattern !== prevProps.pattern || this.props.error !== prevProps.error) {\n (0, _reactDom.findDOMNode)(this).MaterialTextfield.checkValidity();\n }\n if (this.props.disabled !== prevProps.disabled) {\n (0, _reactDom.findDOMNode)(this).MaterialTextfield.checkDisabled();\n }\n if (this.props.value !== prevProps.value && this.inputRef !== document.activeElement) {\n (0, _reactDom.findDOMNode)(this).MaterialTextfield.change(this.props.value);\n }\n if (this.props.error && !this.props.pattern) {\n // Every time the input gets updated by MDL (checkValidity() or change())\n // its invalid class gets reset. We have to put it again if the input is specifically set as \"invalid\"\n this.setAsInvalid();\n }\n }\n }, {\n key: 'setAsInvalid',\n value: function setAsInvalid() {\n var elt = (0, _reactDom.findDOMNode)(this);\n if (elt.className.indexOf('is-invalid') < 0) {\n elt.className = (0, _classnames2.default)(elt.className, 'is-invalid');\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n className = _props.className,\n inputClassName = _props.inputClassName,\n id = _props.id,\n error = _props.error,\n expandable = _props.expandable,\n expandableIcon = _props.expandableIcon,\n floatingLabel = _props.floatingLabel,\n label = _props.label,\n maxRows = _props.maxRows,\n rows = _props.rows,\n style = _props.style,\n children = _props.children,\n otherProps = _objectWithoutProperties(_props, ['className', 'inputClassName', 'id', 'error', 'expandable', 'expandableIcon', 'floatingLabel', 'label', 'maxRows', 'rows', 'style', 'children']);\n\n var hasRows = !!rows;\n var customId = id || 'textfield-' + label.replace(/[^a-z0-9]/gi, '');\n var inputTag = hasRows || maxRows > 1 ? 'textarea' : 'input';\n\n var inputProps = _extends({\n className: (0, _classnames2.default)('mdl-textfield__input', inputClassName),\n id: customId,\n rows: rows,\n ref: function ref(c) {\n return _this2.inputRef = c;\n }\n }, otherProps);\n\n var input = _react2.default.createElement(inputTag, inputProps);\n var labelContainer = _react2.default.createElement(\n 'label',\n { className: 'mdl-textfield__label', htmlFor: customId },\n label\n );\n var errorContainer = !!error && _react2.default.createElement(\n 'span',\n { className: 'mdl-textfield__error' },\n error\n );\n\n var containerClasses = (0, _classnames2.default)('mdl-textfield mdl-js-textfield', {\n 'mdl-textfield--floating-label': floatingLabel,\n 'mdl-textfield--expandable': expandable\n }, className);\n\n return expandable ? _react2.default.createElement(\n 'div',\n { className: containerClasses, style: style },\n _react2.default.createElement(\n 'label',\n { className: 'mdl-button mdl-js-button mdl-button--icon', htmlFor: customId },\n _react2.default.createElement(\n 'i',\n { className: 'material-icons' },\n expandableIcon\n )\n ),\n _react2.default.createElement(\n 'div',\n { className: 'mdl-textfield__expandable-holder' },\n input,\n labelContainer,\n errorContainer\n ),\n children\n ) : _react2.default.createElement(\n 'div',\n { className: containerClasses, style: style },\n input,\n labelContainer,\n errorContainer,\n children\n );\n }\n }]);\n\n return Textfield;\n}(_react2.default.Component);\n\nTextfield.propTypes = propTypes;\n\nexports.default = (0, _mdlUpgrade2.default)(Textfield);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/Textfield.js\n// module id = 383\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getColorClass = getColorClass;\nexports.getTextColorClass = getTextColorClass;\n// see https://github.com/google/material-design-lite/blob/master/src/palette/_palette.scss\n// for the color and level possibilities\n\nfunction getColorClass(color, level) {\n var lvlClass = level ? '-' + level : '';\n return 'mdl-color--' + color + lvlClass;\n}\n\nfunction getTextColorClass(color, level) {\n var lvlClass = level ? '-' + level : '';\n return 'mdl-color-text--' + color + lvlClass;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-mdl/lib/utils/palette.js\n// module id = 384\n// module chunks = 0","var React = require('react');\nvar ReactDOM = require('react-dom');\nvar ExecutionEnvironment = require('exenv');\nvar ModalPortal = React.createFactory(require('./ModalPortal'));\nvar ariaAppHider = require('../helpers/ariaAppHider');\nvar elementClass = require('element-class');\nvar renderSubtreeIntoContainer = require(\"react-dom\").unstable_renderSubtreeIntoContainer;\nvar Assign = require('lodash.assign');\n\nvar SafeHTMLElement = ExecutionEnvironment.canUseDOM ? window.HTMLElement : {};\nvar AppElement = ExecutionEnvironment.canUseDOM ? document.body : {appendChild: function() {}};\n\nfunction getParentElement(parentSelector) {\n return parentSelector();\n}\n\nvar Modal = React.createClass({\n\n displayName: 'Modal',\n statics: {\n setAppElement: function(element) {\n AppElement = ariaAppHider.setElement(element);\n },\n injectCSS: function() {\n \"production\" !== process.env.NODE_ENV\n && console.warn('React-Modal: injectCSS has been deprecated ' +\n 'and no longer has any effect. It will be removed in a later version');\n }\n },\n\n propTypes: {\n isOpen: React.PropTypes.bool.isRequired,\n style: React.PropTypes.shape({\n content: React.PropTypes.object,\n overlay: React.PropTypes.object\n }),\n portalClassName: React.PropTypes.string,\n appElement: React.PropTypes.instanceOf(SafeHTMLElement),\n onAfterOpen: React.PropTypes.func,\n onRequestClose: React.PropTypes.func,\n closeTimeoutMS: React.PropTypes.number,\n ariaHideApp: React.PropTypes.bool,\n shouldCloseOnOverlayClick: React.PropTypes.bool,\n parentSelector: React.PropTypes.func,\n role: React.PropTypes.string,\n contentLabel: React.PropTypes.string.isRequired\n },\n\n getDefaultProps: function () {\n return {\n isOpen: false,\n portalClassName: 'ReactModalPortal',\n ariaHideApp: true,\n closeTimeoutMS: 0,\n shouldCloseOnOverlayClick: true,\n parentSelector: function () { return document.body; }\n };\n },\n\n componentDidMount: function() {\n this.node = document.createElement('div');\n this.node.className = this.props.portalClassName;\n\n var parent = getParentElement(this.props.parentSelector);\n parent.appendChild(this.node);\n this.renderPortal(this.props);\n },\n\n componentWillReceiveProps: function(newProps) {\n var currentParent = getParentElement(this.props.parentSelector);\n var newParent = getParentElement(newProps.parentSelector);\n\n if(newParent !== currentParent) {\n currentParent.removeChild(this.node);\n newParent.appendChild(this.node);\n }\n\n this.renderPortal(newProps);\n },\n\n componentWillUnmount: function() {\n if (this.props.ariaHideApp) {\n ariaAppHider.show(this.props.appElement);\n }\n\n ReactDOM.unmountComponentAtNode(this.node);\n var parent = getParentElement(this.props.parentSelector);\n parent.removeChild(this.node);\n elementClass(document.body).remove('ReactModal__Body--open');\n },\n\n renderPortal: function(props) {\n if (props.isOpen) {\n elementClass(document.body).add('ReactModal__Body--open');\n } else {\n elementClass(document.body).remove('ReactModal__Body--open');\n }\n\n if (props.ariaHideApp) {\n ariaAppHider.toggle(props.isOpen, props.appElement);\n }\n\n this.portal = renderSubtreeIntoContainer(this, ModalPortal(Assign({}, props, {defaultStyles: Modal.defaultStyles})), this.node);\n },\n\n render: function () {\n return React.DOM.noscript();\n }\n});\n\nModal.defaultStyles = {\n overlay: {\n position : 'fixed',\n top : 0,\n left : 0,\n right : 0,\n bottom : 0,\n backgroundColor : 'rgba(255, 255, 255, 0.75)'\n },\n content: {\n position : 'absolute',\n top : '40px',\n left : '40px',\n right : '40px',\n bottom : '40px',\n border : '1px solid #ccc',\n background : '#fff',\n overflow : 'auto',\n WebkitOverflowScrolling : 'touch',\n borderRadius : '4px',\n outline : 'none',\n padding : '20px'\n }\n}\n\nmodule.exports = Modal\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/components/Modal.js\n// module id = 385\n// module chunks = 0","var React = require('react');\nvar div = React.DOM.div;\nvar focusManager = require('../helpers/focusManager');\nvar scopeTab = require('../helpers/scopeTab');\nvar Assign = require('lodash.assign');\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n overlay: {\n base: 'ReactModal__Overlay',\n afterOpen: 'ReactModal__Overlay--after-open',\n beforeClose: 'ReactModal__Overlay--before-close'\n },\n content: {\n base: 'ReactModal__Content',\n afterOpen: 'ReactModal__Content--after-open',\n beforeClose: 'ReactModal__Content--before-close'\n }\n};\n\nvar ModalPortal = module.exports = React.createClass({\n\n displayName: 'ModalPortal',\n shouldClose: null,\n\n getDefaultProps: function() {\n return {\n style: {\n overlay: {},\n content: {}\n }\n };\n },\n\n getInitialState: function() {\n return {\n afterOpen: false,\n beforeClose: false\n };\n },\n\n componentDidMount: function() {\n // Focus needs to be set when mounting and already open\n if (this.props.isOpen) {\n this.setFocusAfterRender(true);\n this.open();\n }\n },\n\n componentWillUnmount: function() {\n clearTimeout(this.closeTimer);\n },\n\n componentWillReceiveProps: function(newProps) {\n // Focus only needs to be set once when the modal is being opened\n if (!this.props.isOpen && newProps.isOpen) {\n this.setFocusAfterRender(true);\n this.open();\n } else if (this.props.isOpen && !newProps.isOpen) {\n this.close();\n }\n },\n\n componentDidUpdate: function () {\n if (this.focusAfterRender) {\n this.focusContent();\n this.setFocusAfterRender(false);\n }\n },\n\n setFocusAfterRender: function (focus) {\n this.focusAfterRender = focus;\n },\n\n open: function() {\n if (this.state.afterOpen && this.state.beforeClose) {\n clearTimeout(this.closeTimer);\n this.setState({ beforeClose: false });\n } else {\n focusManager.setupScopedFocus(this.node);\n focusManager.markForFocusLater();\n this.setState({isOpen: true}, function() {\n this.setState({afterOpen: true});\n\n if (this.props.isOpen && this.props.onAfterOpen) {\n this.props.onAfterOpen();\n }\n }.bind(this));\n }\n },\n\n close: function() {\n if (!this.ownerHandlesClose())\n return;\n if (this.props.closeTimeoutMS > 0)\n this.closeWithTimeout();\n else\n this.closeWithoutTimeout();\n },\n\n focusContent: function() {\n // Don't steal focus from inner elements\n if (!this.contentHasFocus()) {\n this.refs.content.focus();\n }\n },\n\n closeWithTimeout: function() {\n this.setState({beforeClose: true}, function() {\n this.closeTimer = setTimeout(this.closeWithoutTimeout, this.props.closeTimeoutMS);\n }.bind(this));\n },\n\n closeWithoutTimeout: function() {\n this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n }, this.afterClose);\n },\n\n afterClose: function() {\n focusManager.returnFocus();\n focusManager.teardownScopedFocus();\n },\n\n handleKeyDown: function(event) {\n if (event.keyCode == 9 /*tab*/) scopeTab(this.refs.content, event);\n if (event.keyCode == 27 /*esc*/) {\n event.preventDefault();\n this.requestClose(event);\n }\n },\n\n handleOverlayMouseDown: function(event) {\n if (this.shouldClose === null) {\n this.shouldClose = true;\n }\n },\n\n handleOverlayMouseUp: function(event) {\n if (this.shouldClose && this.props.shouldCloseOnOverlayClick) {\n if (this.ownerHandlesClose())\n this.requestClose(event);\n else\n this.focusContent();\n }\n this.shouldClose = null;\n },\n\n handleContentMouseDown: function(event) {\n this.shouldClose = false;\n },\n\n handleContentMouseUp: function(event) {\n this.shouldClose = false;\n },\n\n requestClose: function(event) {\n if (this.ownerHandlesClose())\n this.props.onRequestClose(event);\n },\n\n ownerHandlesClose: function() {\n return this.props.onRequestClose;\n },\n\n shouldBeClosed: function() {\n return !this.props.isOpen && !this.state.beforeClose;\n },\n\n contentHasFocus: function() {\n return document.activeElement === this.refs.content || this.refs.content.contains(document.activeElement);\n },\n\n buildClassName: function(which, additional) {\n var className = CLASS_NAMES[which].base;\n if (this.state.afterOpen)\n className += ' '+CLASS_NAMES[which].afterOpen;\n if (this.state.beforeClose)\n className += ' '+CLASS_NAMES[which].beforeClose;\n return additional ? className + ' ' + additional : className;\n },\n\n render: function() {\n var contentStyles = (this.props.className) ? {} : this.props.defaultStyles.content;\n var overlayStyles = (this.props.overlayClassName) ? {} : this.props.defaultStyles.overlay;\n\n return this.shouldBeClosed() ? div() : (\n div({\n ref: \"overlay\",\n className: this.buildClassName('overlay', this.props.overlayClassName),\n style: Assign({}, overlayStyles, this.props.style.overlay || {}),\n onMouseDown: this.handleOverlayMouseDown,\n onMouseUp: this.handleOverlayMouseUp\n },\n div({\n ref: \"content\",\n style: Assign({}, contentStyles, this.props.style.content || {}),\n className: this.buildClassName('content', this.props.className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentMouseDown,\n onMouseUp: this.handleContentMouseUp,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n },\n this.props.children\n )\n )\n );\n }\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/components/ModalPortal.js\n// module id = 386\n// module chunks = 0","var _element = typeof document !== 'undefined' ? document.body : null;\n\nfunction setElement(element) {\n if (typeof element === 'string') {\n var el = document.querySelectorAll(element);\n element = 'length' in el ? el[0] : el;\n }\n _element = element || _element;\n return _element;\n}\n\nfunction hide(appElement) {\n validateElement(appElement);\n (appElement || _element).setAttribute('aria-hidden', 'true');\n}\n\nfunction show(appElement) {\n validateElement(appElement);\n (appElement || _element).removeAttribute('aria-hidden');\n}\n\nfunction toggle(shouldHide, appElement) {\n if (shouldHide)\n hide(appElement);\n else\n show(appElement);\n}\n\nfunction validateElement(appElement) {\n if (!appElement && !_element)\n throw new Error('react-modal: You must set an element with `Modal.setAppElement(el)` to make this accessible');\n}\n\nfunction resetForTesting() {\n _element = document.body;\n}\n\nexports.toggle = toggle;\nexports.setElement = setElement;\nexports.show = show;\nexports.hide = hide;\nexports.resetForTesting = resetForTesting;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/ariaAppHider.js\n// module id = 387\n// module chunks = 0","var findTabbable = require('../helpers/tabbable');\nvar modalElement = null;\nvar focusLaterElement = null;\nvar needToFocus = false;\n\nfunction handleBlur(event) {\n needToFocus = true;\n}\n\nfunction handleFocus(event) {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation \n // is that the document.body gets focus, and then we focus our element right \n // after, seems fine.\n setTimeout(function() {\n if (modalElement.contains(document.activeElement))\n return;\n var el = (findTabbable(modalElement)[0] || modalElement);\n el.focus();\n }, 0);\n }\n}\n\nexports.markForFocusLater = function() {\n focusLaterElement = document.activeElement;\n};\n\nexports.returnFocus = function() {\n try {\n focusLaterElement.focus();\n }\n catch (e) {\n console.warn('You tried to return focus to '+focusLaterElement+' but it is not in the DOM anymore');\n }\n focusLaterElement = null;\n};\n\nexports.setupScopedFocus = function(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener('blur', handleBlur, false);\n document.addEventListener('focus', handleFocus, true);\n } else {\n window.attachEvent('onBlur', handleBlur);\n document.attachEvent('onFocus', handleFocus);\n }\n};\n\nexports.teardownScopedFocus = function() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener('blur', handleBlur);\n document.removeEventListener('focus', handleFocus);\n } else {\n window.detachEvent('onBlur', handleBlur);\n document.detachEvent('onFocus', handleFocus);\n }\n};\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/focusManager.js\n// module id = 388\n// module chunks = 0","var findTabbable = require('../helpers/tabbable');\n\nmodule.exports = function(node, event) {\n var tabbable = findTabbable(node);\n if (!tabbable.length) {\n event.preventDefault();\n return;\n }\n var finalTabbable = tabbable[event.shiftKey ? 0 : tabbable.length - 1];\n var leavingFinalTabbable = (\n finalTabbable === document.activeElement ||\n // handle immediate shift+tab after opening with mouse\n node === document.activeElement\n );\n if (!leavingFinalTabbable) return;\n event.preventDefault();\n var target = tabbable[event.shiftKey ? tabbable.length - 1 : 0];\n target.focus();\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/helpers/scopeTab.js\n// module id = 389\n// module chunks = 0","module.exports = require('./components/Modal');\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-modal/lib/index.js\n// module id = 390\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports[\"default\"] = undefined;\n\nvar _react = require('react');\n\nvar _storeShape = require('../utils/storeShape');\n\nvar _storeShape2 = _interopRequireDefault(_storeShape);\n\nvar _warning = require('../utils/warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar didWarnAboutReceivingStore = false;\nfunction warnAboutReceivingStore() {\n if (didWarnAboutReceivingStore) {\n return;\n }\n didWarnAboutReceivingStore = true;\n\n (0, _warning2[\"default\"])('<Provider> does not support changing `store` on the fly. ' + 'It is most likely that you see this error because you updated to ' + 'Redux 2.x and React Redux 2.x which no longer hot reload reducers ' + 'automatically. See https://github.com/reactjs/react-redux/releases/' + 'tag/v2.0.0 for the migration instructions.');\n}\n\nvar Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n Provider.prototype.getChildContext = function getChildContext() {\n return { store: this.store };\n };\n\n function Provider(props, context) {\n _classCallCheck(this, Provider);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\n _this.store = props.store;\n return _this;\n }\n\n Provider.prototype.render = function render() {\n return _react.Children.only(this.props.children);\n };\n\n return Provider;\n}(_react.Component);\n\nexports[\"default\"] = Provider;\n\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.prototype.componentWillReceiveProps = function (nextProps) {\n var store = this.store;\n var nextStore = nextProps.store;\n\n\n if (store !== nextStore) {\n warnAboutReceivingStore();\n }\n };\n}\n\nProvider.propTypes = {\n store: _storeShape2[\"default\"].isRequired,\n children: _react.PropTypes.element.isRequired\n};\nProvider.childContextTypes = {\n store: _storeShape2[\"default\"].isRequired\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-redux/lib/components/Provider.js\n// module id = 391\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports[\"default\"] = connect;\n\nvar _react = require('react');\n\nvar _storeShape = require('../utils/storeShape');\n\nvar _storeShape2 = _interopRequireDefault(_storeShape);\n\nvar _shallowEqual = require('../utils/shallowEqual');\n\nvar _shallowEqual2 = _interopRequireDefault(_shallowEqual);\n\nvar _wrapActionCreators = require('../utils/wrapActionCreators');\n\nvar _wrapActionCreators2 = _interopRequireDefault(_wrapActionCreators);\n\nvar _warning = require('../utils/warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _isPlainObject = require('lodash/isPlainObject');\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nvar _hoistNonReactStatics = require('hoist-non-react-statics');\n\nvar _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar defaultMapStateToProps = function defaultMapStateToProps(state) {\n return {};\n}; // eslint-disable-line no-unused-vars\nvar defaultMapDispatchToProps = function defaultMapDispatchToProps(dispatch) {\n return { dispatch: dispatch };\n};\nvar defaultMergeProps = function defaultMergeProps(stateProps, dispatchProps, parentProps) {\n return _extends({}, parentProps, stateProps, dispatchProps);\n};\n\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n\nvar errorObject = { value: null };\nfunction tryCatch(fn, ctx) {\n try {\n return fn.apply(ctx);\n } catch (e) {\n errorObject.value = e;\n return errorObject;\n }\n}\n\n// Helps track hot reloading.\nvar nextVersion = 0;\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var shouldSubscribe = Boolean(mapStateToProps);\n var mapState = mapStateToProps || defaultMapStateToProps;\n\n var mapDispatch = void 0;\n if (typeof mapDispatchToProps === 'function') {\n mapDispatch = mapDispatchToProps;\n } else if (!mapDispatchToProps) {\n mapDispatch = defaultMapDispatchToProps;\n } else {\n mapDispatch = (0, _wrapActionCreators2[\"default\"])(mapDispatchToProps);\n }\n\n var finalMergeProps = mergeProps || defaultMergeProps;\n var _options$pure = options.pure,\n pure = _options$pure === undefined ? true : _options$pure,\n _options$withRef = options.withRef,\n withRef = _options$withRef === undefined ? false : _options$withRef;\n\n var checkMergedEquals = pure && finalMergeProps !== defaultMergeProps;\n\n // Helps track hot reloading.\n var version = nextVersion++;\n\n return function wrapWithConnect(WrappedComponent) {\n var connectDisplayName = 'Connect(' + getDisplayName(WrappedComponent) + ')';\n\n function checkStateShape(props, methodName) {\n if (!(0, _isPlainObject2[\"default\"])(props)) {\n (0, _warning2[\"default\"])(methodName + '() in ' + connectDisplayName + ' must return a plain object. ' + ('Instead received ' + props + '.'));\n }\n }\n\n function computeMergedProps(stateProps, dispatchProps, parentProps) {\n var mergedProps = finalMergeProps(stateProps, dispatchProps, parentProps);\n if (process.env.NODE_ENV !== 'production') {\n checkStateShape(mergedProps, 'mergeProps');\n }\n return mergedProps;\n }\n\n var Connect = function (_Component) {\n _inherits(Connect, _Component);\n\n Connect.prototype.shouldComponentUpdate = function shouldComponentUpdate() {\n return !pure || this.haveOwnPropsChanged || this.hasStoreStateChanged;\n };\n\n function Connect(props, context) {\n _classCallCheck(this, Connect);\n\n var _this = _possibleConstructorReturn(this, _Component.call(this, props, context));\n\n _this.version = version;\n _this.store = props.store || context.store;\n\n (0, _invariant2[\"default\"])(_this.store, 'Could not find \"store\" in either the context or ' + ('props of \"' + connectDisplayName + '\". ') + 'Either wrap the root component in a <Provider>, ' + ('or explicitly pass \"store\" as a prop to \"' + connectDisplayName + '\".'));\n\n var storeState = _this.store.getState();\n _this.state = { storeState: storeState };\n _this.clearCache();\n return _this;\n }\n\n Connect.prototype.computeStateProps = function computeStateProps(store, props) {\n if (!this.finalMapStateToProps) {\n return this.configureFinalMapState(store, props);\n }\n\n var state = store.getState();\n var stateProps = this.doStatePropsDependOnOwnProps ? this.finalMapStateToProps(state, props) : this.finalMapStateToProps(state);\n\n if (process.env.NODE_ENV !== 'production') {\n checkStateShape(stateProps, 'mapStateToProps');\n }\n return stateProps;\n };\n\n Connect.prototype.configureFinalMapState = function configureFinalMapState(store, props) {\n var mappedState = mapState(store.getState(), props);\n var isFactory = typeof mappedState === 'function';\n\n this.finalMapStateToProps = isFactory ? mappedState : mapState;\n this.doStatePropsDependOnOwnProps = this.finalMapStateToProps.length !== 1;\n\n if (isFactory) {\n return this.computeStateProps(store, props);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n checkStateShape(mappedState, 'mapStateToProps');\n }\n return mappedState;\n };\n\n Connect.prototype.computeDispatchProps = function computeDispatchProps(store, props) {\n if (!this.finalMapDispatchToProps) {\n return this.configureFinalMapDispatch(store, props);\n }\n\n var dispatch = store.dispatch;\n\n var dispatchProps = this.doDispatchPropsDependOnOwnProps ? this.finalMapDispatchToProps(dispatch, props) : this.finalMapDispatchToProps(dispatch);\n\n if (process.env.NODE_ENV !== 'production') {\n checkStateShape(dispatchProps, 'mapDispatchToProps');\n }\n return dispatchProps;\n };\n\n Connect.prototype.configureFinalMapDispatch = function configureFinalMapDispatch(store, props) {\n var mappedDispatch = mapDispatch(store.dispatch, props);\n var isFactory = typeof mappedDispatch === 'function';\n\n this.finalMapDispatchToProps = isFactory ? mappedDispatch : mapDispatch;\n this.doDispatchPropsDependOnOwnProps = this.finalMapDispatchToProps.length !== 1;\n\n if (isFactory) {\n return this.computeDispatchProps(store, props);\n }\n\n if (process.env.NODE_ENV !== 'production') {\n checkStateShape(mappedDispatch, 'mapDispatchToProps');\n }\n return mappedDispatch;\n };\n\n Connect.prototype.updateStatePropsIfNeeded = function updateStatePropsIfNeeded() {\n var nextStateProps = this.computeStateProps(this.store, this.props);\n if (this.stateProps && (0, _shallowEqual2[\"default\"])(nextStateProps, this.stateProps)) {\n return false;\n }\n\n this.stateProps = nextStateProps;\n return true;\n };\n\n Connect.prototype.updateDispatchPropsIfNeeded = function updateDispatchPropsIfNeeded() {\n var nextDispatchProps = this.computeDispatchProps(this.store, this.props);\n if (this.dispatchProps && (0, _shallowEqual2[\"default\"])(nextDispatchProps, this.dispatchProps)) {\n return false;\n }\n\n this.dispatchProps = nextDispatchProps;\n return true;\n };\n\n Connect.prototype.updateMergedPropsIfNeeded = function updateMergedPropsIfNeeded() {\n var nextMergedProps = computeMergedProps(this.stateProps, this.dispatchProps, this.props);\n if (this.mergedProps && checkMergedEquals && (0, _shallowEqual2[\"default\"])(nextMergedProps, this.mergedProps)) {\n return false;\n }\n\n this.mergedProps = nextMergedProps;\n return true;\n };\n\n Connect.prototype.isSubscribed = function isSubscribed() {\n return typeof this.unsubscribe === 'function';\n };\n\n Connect.prototype.trySubscribe = function trySubscribe() {\n if (shouldSubscribe && !this.unsubscribe) {\n this.unsubscribe = this.store.subscribe(this.handleChange.bind(this));\n this.handleChange();\n }\n };\n\n Connect.prototype.tryUnsubscribe = function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n };\n\n Connect.prototype.componentDidMount = function componentDidMount() {\n this.trySubscribe();\n };\n\n Connect.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (!pure || !(0, _shallowEqual2[\"default\"])(nextProps, this.props)) {\n this.haveOwnPropsChanged = true;\n }\n };\n\n Connect.prototype.componentWillUnmount = function componentWillUnmount() {\n this.tryUnsubscribe();\n this.clearCache();\n };\n\n Connect.prototype.clearCache = function clearCache() {\n this.dispatchProps = null;\n this.stateProps = null;\n this.mergedProps = null;\n this.haveOwnPropsChanged = true;\n this.hasStoreStateChanged = true;\n this.haveStatePropsBeenPrecalculated = false;\n this.statePropsPrecalculationError = null;\n this.renderedElement = null;\n this.finalMapDispatchToProps = null;\n this.finalMapStateToProps = null;\n };\n\n Connect.prototype.handleChange = function handleChange() {\n if (!this.unsubscribe) {\n return;\n }\n\n var storeState = this.store.getState();\n var prevStoreState = this.state.storeState;\n if (pure && prevStoreState === storeState) {\n return;\n }\n\n if (pure && !this.doStatePropsDependOnOwnProps) {\n var haveStatePropsChanged = tryCatch(this.updateStatePropsIfNeeded, this);\n if (!haveStatePropsChanged) {\n return;\n }\n if (haveStatePropsChanged === errorObject) {\n this.statePropsPrecalculationError = errorObject.value;\n }\n this.haveStatePropsBeenPrecalculated = true;\n }\n\n this.hasStoreStateChanged = true;\n this.setState({ storeState: storeState });\n };\n\n Connect.prototype.getWrappedInstance = function getWrappedInstance() {\n (0, _invariant2[\"default\"])(withRef, 'To access the wrapped instance, you need to specify ' + '{ withRef: true } as the fourth argument of the connect() call.');\n\n return this.refs.wrappedInstance;\n };\n\n Connect.prototype.render = function render() {\n var haveOwnPropsChanged = this.haveOwnPropsChanged,\n hasStoreStateChanged = this.hasStoreStateChanged,\n haveStatePropsBeenPrecalculated = this.haveStatePropsBeenPrecalculated,\n statePropsPrecalculationError = this.statePropsPrecalculationError,\n renderedElement = this.renderedElement;\n\n\n this.haveOwnPropsChanged = false;\n this.hasStoreStateChanged = false;\n this.haveStatePropsBeenPrecalculated = false;\n this.statePropsPrecalculationError = null;\n\n if (statePropsPrecalculationError) {\n throw statePropsPrecalculationError;\n }\n\n var shouldUpdateStateProps = true;\n var shouldUpdateDispatchProps = true;\n if (pure && renderedElement) {\n shouldUpdateStateProps = hasStoreStateChanged || haveOwnPropsChanged && this.doStatePropsDependOnOwnProps;\n shouldUpdateDispatchProps = haveOwnPropsChanged && this.doDispatchPropsDependOnOwnProps;\n }\n\n var haveStatePropsChanged = false;\n var haveDispatchPropsChanged = false;\n if (haveStatePropsBeenPrecalculated) {\n haveStatePropsChanged = true;\n } else if (shouldUpdateStateProps) {\n haveStatePropsChanged = this.updateStatePropsIfNeeded();\n }\n if (shouldUpdateDispatchProps) {\n haveDispatchPropsChanged = this.updateDispatchPropsIfNeeded();\n }\n\n var haveMergedPropsChanged = true;\n if (haveStatePropsChanged || haveDispatchPropsChanged || haveOwnPropsChanged) {\n haveMergedPropsChanged = this.updateMergedPropsIfNeeded();\n } else {\n haveMergedPropsChanged = false;\n }\n\n if (!haveMergedPropsChanged && renderedElement) {\n return renderedElement;\n }\n\n if (withRef) {\n this.renderedElement = (0, _react.createElement)(WrappedComponent, _extends({}, this.mergedProps, {\n ref: 'wrappedInstance'\n }));\n } else {\n this.renderedElement = (0, _react.createElement)(WrappedComponent, this.mergedProps);\n }\n\n return this.renderedElement;\n };\n\n return Connect;\n }(_react.Component);\n\n Connect.displayName = connectDisplayName;\n Connect.WrappedComponent = WrappedComponent;\n Connect.contextTypes = {\n store: _storeShape2[\"default\"]\n };\n Connect.propTypes = {\n store: _storeShape2[\"default\"]\n };\n\n if (process.env.NODE_ENV !== 'production') {\n Connect.prototype.componentWillUpdate = function componentWillUpdate() {\n if (this.version === version) {\n return;\n }\n\n // We are hot reloading!\n this.version = version;\n this.trySubscribe();\n this.clearCache();\n };\n }\n\n return (0, _hoistNonReactStatics2[\"default\"])(Connect, WrappedComponent);\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-redux/lib/components/connect.js\n// module id = 392\n// module chunks = 0","\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = shallowEqual;\nfunction shallowEqual(objA, objB) {\n if (objA === objB) {\n return true;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n var hasOwn = Object.prototype.hasOwnProperty;\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwn.call(objB, keysA[i]) || objA[keysA[i]] !== objB[keysA[i]]) {\n return false;\n }\n }\n\n return true;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-redux/lib/utils/shallowEqual.js\n// module id = 393\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports[\"default\"] = wrapActionCreators;\n\nvar _redux = require('redux');\n\nfunction wrapActionCreators(actionCreators) {\n return function (dispatch) {\n return (0, _redux.bindActionCreators)(actionCreators, dispatch);\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-redux/lib/utils/wrapActionCreators.js\n// module id = 394\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Link = require('./Link');\n\nvar _Link2 = _interopRequireDefault(_Link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * An <IndexLink> is used to link to an <IndexRoute>.\n */\nvar IndexLink = _react2.default.createClass({\n displayName: 'IndexLink',\n render: function render() {\n return _react2.default.createElement(_Link2.default, _extends({}, this.props, { onlyActiveOnIndex: true }));\n }\n});\n\nexports.default = IndexLink;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/IndexLink.js\n// module id = 395\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _Redirect = require('./Redirect');\n\nvar _Redirect2 = _interopRequireDefault(_Redirect);\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n string = _React$PropTypes.string,\n object = _React$PropTypes.object;\n\n/**\n * An <IndexRedirect> is used to redirect from an indexRoute.\n */\n/* eslint-disable react/require-render-return */\n\nvar IndexRedirect = _react2.default.createClass({\n displayName: 'IndexRedirect',\n\n\n statics: {\n createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {\n /* istanbul ignore else: sanity check */\n if (parentRoute) {\n parentRoute.indexRoute = _Redirect2.default.createRouteFromReactElement(element);\n } else {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'An <IndexRedirect> does not make sense at the root of your route config') : void 0;\n }\n }\n },\n\n propTypes: {\n to: string.isRequired,\n query: object,\n state: object,\n onEnter: _InternalPropTypes.falsy,\n children: _InternalPropTypes.falsy\n },\n\n /* istanbul ignore next: sanity check */\n render: function render() {\n !false ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<IndexRedirect> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n }\n});\n\nexports.default = IndexRedirect;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/IndexRedirect.js\n// module id = 396\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar func = _react2.default.PropTypes.func;\n\n/**\n * An <IndexRoute> is used to specify its parent's <Route indexRoute> in\n * a JSX route config.\n */\n/* eslint-disable react/require-render-return */\n\nvar IndexRoute = _react2.default.createClass({\n displayName: 'IndexRoute',\n\n\n statics: {\n createRouteFromReactElement: function createRouteFromReactElement(element, parentRoute) {\n /* istanbul ignore else: sanity check */\n if (parentRoute) {\n parentRoute.indexRoute = (0, _RouteUtils.createRouteFromReactElement)(element);\n } else {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(false, 'An <IndexRoute> does not make sense at the root of your route config') : void 0;\n }\n }\n },\n\n propTypes: {\n path: _InternalPropTypes.falsy,\n component: _InternalPropTypes.component,\n components: _InternalPropTypes.components,\n getComponent: func,\n getComponents: func\n },\n\n /* istanbul ignore next: sanity check */\n render: function render() {\n !false ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<IndexRoute> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n }\n});\n\nexports.default = IndexRoute;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/IndexRoute.js\n// module id = 397\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n string = _React$PropTypes.string,\n func = _React$PropTypes.func;\n\n/**\n * A <Route> is used to declare which components are rendered to the\n * page when the URL matches a given pattern.\n *\n * Routes are arranged in a nested tree structure. When a new URL is\n * requested, the tree is searched depth-first to find a route whose\n * path matches the URL. When one is found, all routes in the tree\n * that lead to it are considered \"active\" and their components are\n * rendered into the DOM, nested in the same order as in the tree.\n */\n/* eslint-disable react/require-render-return */\n\nvar Route = _react2.default.createClass({\n displayName: 'Route',\n\n\n statics: {\n createRouteFromReactElement: _RouteUtils.createRouteFromReactElement\n },\n\n propTypes: {\n path: string,\n component: _InternalPropTypes.component,\n components: _InternalPropTypes.components,\n getComponent: func,\n getComponents: func\n },\n\n /* istanbul ignore next: sanity check */\n render: function render() {\n !false ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, '<Route> elements are for router configuration only and should not be rendered') : (0, _invariant2.default)(false) : void 0;\n }\n});\n\nexports.default = Route;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/Route.js\n// module id = 398\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _createTransitionManager2 = require('./createTransitionManager');\n\nvar _createTransitionManager3 = _interopRequireDefault(_createTransitionManager2);\n\nvar _InternalPropTypes = require('./InternalPropTypes');\n\nvar _RouterContext = require('./RouterContext');\n\nvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _RouterUtils = require('./RouterUtils');\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nvar _React$PropTypes = _react2.default.PropTypes,\n func = _React$PropTypes.func,\n object = _React$PropTypes.object;\n\n/**\n * A <Router> is a high-level API for automatically setting up\n * a router that renders a <RouterContext> with all the props\n * it needs each time the URL changes.\n */\n\nvar Router = _react2.default.createClass({\n displayName: 'Router',\n\n\n propTypes: {\n history: object,\n children: _InternalPropTypes.routes,\n routes: _InternalPropTypes.routes, // alias for children\n render: func,\n createElement: func,\n onError: func,\n onUpdate: func,\n\n // PRIVATE: For client-side rehydration of server match.\n matchContext: object\n },\n\n getDefaultProps: function getDefaultProps() {\n return {\n render: function render(props) {\n return _react2.default.createElement(_RouterContext2.default, props);\n }\n };\n },\n getInitialState: function getInitialState() {\n return {\n location: null,\n routes: null,\n params: null,\n components: null\n };\n },\n handleError: function handleError(error) {\n if (this.props.onError) {\n this.props.onError.call(this, error);\n } else {\n // Throw errors by default so we don't silently swallow them!\n throw error; // This error probably occurred in getChildRoutes or getComponents.\n }\n },\n createRouterObject: function createRouterObject(state) {\n var matchContext = this.props.matchContext;\n\n if (matchContext) {\n return matchContext.router;\n }\n\n var history = this.props.history;\n\n return (0, _RouterUtils.createRouterObject)(history, this.transitionManager, state);\n },\n createTransitionManager: function createTransitionManager() {\n var matchContext = this.props.matchContext;\n\n if (matchContext) {\n return matchContext.transitionManager;\n }\n\n var history = this.props.history;\n var _props = this.props,\n routes = _props.routes,\n children = _props.children;\n\n\n !history.getCurrentLocation ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'You have provided a history object created with history v2.x or ' + 'earlier. This version of React Router is only compatible with v3 ' + 'history objects. Please upgrade to history v3.x.') : (0, _invariant2.default)(false) : void 0;\n\n return (0, _createTransitionManager3.default)(history, (0, _RouteUtils.createRoutes)(routes || children));\n },\n componentWillMount: function componentWillMount() {\n var _this = this;\n\n this.transitionManager = this.createTransitionManager();\n this.router = this.createRouterObject(this.state);\n\n this._unlisten = this.transitionManager.listen(function (error, state) {\n if (error) {\n _this.handleError(error);\n } else {\n // Keep the identity of this.router because of a caveat in ContextUtils:\n // they only work if the object identity is preserved.\n (0, _RouterUtils.assignRouterState)(_this.router, state);\n _this.setState(state, _this.props.onUpdate);\n }\n });\n },\n\n\n /* istanbul ignore next: sanity check */\n componentWillReceiveProps: function componentWillReceiveProps(nextProps) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(nextProps.history === this.props.history, 'You cannot change <Router history>; it will be ignored') : void 0;\n\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)((nextProps.routes || nextProps.children) === (this.props.routes || this.props.children), 'You cannot change <Router routes>; it will be ignored') : void 0;\n },\n componentWillUnmount: function componentWillUnmount() {\n if (this._unlisten) this._unlisten();\n },\n render: function render() {\n var _state = this.state,\n location = _state.location,\n routes = _state.routes,\n params = _state.params,\n components = _state.components;\n\n var _props2 = this.props,\n createElement = _props2.createElement,\n render = _props2.render,\n props = _objectWithoutProperties(_props2, ['createElement', 'render']);\n\n if (location == null) return null; // Async match\n\n // Only forward non-Router-specific props to routing context, as those are\n // the only ones that might be custom routing context props.\n Object.keys(Router.propTypes).forEach(function (propType) {\n return delete props[propType];\n });\n\n return render(_extends({}, props, {\n router: this.router,\n location: location,\n routes: routes,\n params: params,\n components: components,\n createElement: createElement\n }));\n }\n});\n\nexports.default = Router;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/Router.js\n// module id = 399\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports.runEnterHooks = runEnterHooks;\nexports.runChangeHooks = runChangeHooks;\nexports.runLeaveHooks = runLeaveHooks;\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar PendingHooks = function PendingHooks() {\n var _this = this;\n\n _classCallCheck(this, PendingHooks);\n\n this.hooks = [];\n\n this.add = function (hook) {\n return _this.hooks.push(hook);\n };\n\n this.remove = function (hook) {\n return _this.hooks = _this.hooks.filter(function (h) {\n return h !== hook;\n });\n };\n\n this.has = function (hook) {\n return _this.hooks.indexOf(hook) !== -1;\n };\n\n this.clear = function () {\n return _this.hooks = [];\n };\n};\n\nvar enterHooks = new PendingHooks();\nvar changeHooks = new PendingHooks();\n\nfunction createTransitionHook(hook, route, asyncArity, pendingHooks) {\n var isSync = hook.length < asyncArity;\n\n var transitionHook = function transitionHook() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n hook.apply(route, args);\n\n if (isSync) {\n var callback = args[args.length - 1];\n // Assume hook executes synchronously and\n // automatically call the callback.\n callback();\n }\n };\n\n pendingHooks.add(transitionHook);\n\n return transitionHook;\n}\n\nfunction getEnterHooks(routes) {\n return routes.reduce(function (hooks, route) {\n if (route.onEnter) hooks.push(createTransitionHook(route.onEnter, route, 3, enterHooks));\n return hooks;\n }, []);\n}\n\nfunction getChangeHooks(routes) {\n return routes.reduce(function (hooks, route) {\n if (route.onChange) hooks.push(createTransitionHook(route.onChange, route, 4, changeHooks));\n return hooks;\n }, []);\n}\n\nfunction runTransitionHooks(length, iter, callback) {\n if (!length) {\n callback();\n return;\n }\n\n var redirectInfo = void 0;\n function replace(location) {\n redirectInfo = location;\n }\n\n (0, _AsyncUtils.loopAsync)(length, function (index, next, done) {\n iter(index, replace, function (error) {\n if (error || redirectInfo) {\n done(error, redirectInfo); // No need to continue.\n } else {\n next();\n }\n });\n }, callback);\n}\n\n/**\n * Runs all onEnter hooks in the given array of routes in order\n * with onEnter(nextState, replace, callback) and calls\n * callback(error, redirectInfo) when finished. The first hook\n * to use replace short-circuits the loop.\n *\n * If a hook needs to run asynchronously, it may use the callback\n * function. However, doing so will cause the transition to pause,\n * which could lead to a non-responsive UI if the hook is slow.\n */\nfunction runEnterHooks(routes, nextState, callback) {\n enterHooks.clear();\n var hooks = getEnterHooks(routes);\n return runTransitionHooks(hooks.length, function (index, replace, next) {\n var wrappedNext = function wrappedNext() {\n if (enterHooks.has(hooks[index])) {\n next();\n enterHooks.remove(hooks[index]);\n }\n };\n hooks[index](nextState, replace, wrappedNext);\n }, callback);\n}\n\n/**\n * Runs all onChange hooks in the given array of routes in order\n * with onChange(prevState, nextState, replace, callback) and calls\n * callback(error, redirectInfo) when finished. The first hook\n * to use replace short-circuits the loop.\n *\n * If a hook needs to run asynchronously, it may use the callback\n * function. However, doing so will cause the transition to pause,\n * which could lead to a non-responsive UI if the hook is slow.\n */\nfunction runChangeHooks(routes, state, nextState, callback) {\n changeHooks.clear();\n var hooks = getChangeHooks(routes);\n return runTransitionHooks(hooks.length, function (index, replace, next) {\n var wrappedNext = function wrappedNext() {\n if (changeHooks.has(hooks[index])) {\n next();\n changeHooks.remove(hooks[index]);\n }\n };\n hooks[index](state, nextState, replace, wrappedNext);\n }, callback);\n}\n\n/**\n * Runs all onLeave hooks in the given array of routes in order.\n */\nfunction runLeaveHooks(routes, prevState) {\n for (var i = 0, len = routes.length; i < len; ++i) {\n if (routes[i].onLeave) routes[i].onLeave.call(routes[i], prevState);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/TransitionUtils.js\n// module id = 400\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _RouterContext = require('./RouterContext');\n\nvar _RouterContext2 = _interopRequireDefault(_RouterContext);\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n if (process.env.NODE_ENV !== 'production') {\n middlewares.forEach(function (middleware, index) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(middleware.renderRouterContext || middleware.renderRouteComponent, 'The middleware specified at index ' + index + ' does not appear to be ' + 'a valid React Router middleware.') : void 0;\n });\n }\n\n var withContext = middlewares.map(function (middleware) {\n return middleware.renderRouterContext;\n }).filter(Boolean);\n var withComponent = middlewares.map(function (middleware) {\n return middleware.renderRouteComponent;\n }).filter(Boolean);\n\n var makeCreateElement = function makeCreateElement() {\n var baseCreateElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _react.createElement;\n return function (Component, props) {\n return withComponent.reduceRight(function (previous, renderRouteComponent) {\n return renderRouteComponent(previous, props);\n }, baseCreateElement(Component, props));\n };\n };\n\n return function (renderProps) {\n return withContext.reduceRight(function (previous, renderRouterContext) {\n return renderRouterContext(previous, renderProps);\n }, _react2.default.createElement(_RouterContext2.default, _extends({}, renderProps, {\n createElement: makeCreateElement(renderProps.createElement)\n })));\n };\n};\n\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/applyRouterMiddleware.js\n// module id = 401\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _createBrowserHistory = require('history/lib/createBrowserHistory');\n\nvar _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);\n\nvar _createRouterHistory = require('./createRouterHistory');\n\nvar _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _createRouterHistory2.default)(_createBrowserHistory2.default);\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/browserHistory.js\n// module id = 402\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _PatternUtils = require('./PatternUtils');\n\nfunction routeParamsChanged(route, prevState, nextState) {\n if (!route.path) return false;\n\n var paramNames = (0, _PatternUtils.getParamNames)(route.path);\n\n return paramNames.some(function (paramName) {\n return prevState.params[paramName] !== nextState.params[paramName];\n });\n}\n\n/**\n * Returns an object of { leaveRoutes, changeRoutes, enterRoutes } determined by\n * the change from prevState to nextState. We leave routes if either\n * 1) they are not in the next state or 2) they are in the next state\n * but their params have changed (i.e. /users/123 => /users/456).\n *\n * leaveRoutes are ordered starting at the leaf route of the tree\n * we're leaving up to the common parent route. enterRoutes are ordered\n * from the top of the tree we're entering down to the leaf route.\n *\n * changeRoutes are any routes that didn't leave or enter during\n * the transition.\n */\nfunction computeChangedRoutes(prevState, nextState) {\n var prevRoutes = prevState && prevState.routes;\n var nextRoutes = nextState.routes;\n\n var leaveRoutes = void 0,\n changeRoutes = void 0,\n enterRoutes = void 0;\n if (prevRoutes) {\n (function () {\n var parentIsLeaving = false;\n leaveRoutes = prevRoutes.filter(function (route) {\n if (parentIsLeaving) {\n return true;\n } else {\n var isLeaving = nextRoutes.indexOf(route) === -1 || routeParamsChanged(route, prevState, nextState);\n if (isLeaving) parentIsLeaving = true;\n return isLeaving;\n }\n });\n\n // onLeave hooks start at the leaf route.\n leaveRoutes.reverse();\n\n enterRoutes = [];\n changeRoutes = [];\n\n nextRoutes.forEach(function (route) {\n var isNew = prevRoutes.indexOf(route) === -1;\n var paramsChanged = leaveRoutes.indexOf(route) !== -1;\n\n if (isNew || paramsChanged) enterRoutes.push(route);else changeRoutes.push(route);\n });\n })();\n } else {\n leaveRoutes = [];\n changeRoutes = [];\n enterRoutes = nextRoutes;\n }\n\n return {\n leaveRoutes: leaveRoutes,\n changeRoutes: changeRoutes,\n enterRoutes: enterRoutes\n };\n}\n\nexports.default = computeChangedRoutes;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/computeChangedRoutes.js\n// module id = 403\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _PromiseUtils = require('./PromiseUtils');\n\nfunction getComponentsForRoute(nextState, route, callback) {\n if (route.component || route.components) {\n callback(null, route.component || route.components);\n return;\n }\n\n var getComponent = route.getComponent || route.getComponents;\n if (getComponent) {\n var componentReturn = getComponent.call(route, nextState, callback);\n if ((0, _PromiseUtils.isPromise)(componentReturn)) componentReturn.then(function (component) {\n return callback(null, component);\n }, callback);\n } else {\n callback();\n }\n}\n\n/**\n * Asynchronously fetches all components needed for the given router\n * state and calls callback(error, components) when finished.\n *\n * Note: This operation may finish synchronously if no routes have an\n * asynchronous getComponents method.\n */\nfunction getComponents(nextState, callback) {\n (0, _AsyncUtils.mapAsync)(nextState.routes, function (route, index, callback) {\n getComponentsForRoute(nextState, route, callback);\n }, callback);\n}\n\nexports.default = getComponents;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/getComponents.js\n// module id = 404\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _PatternUtils = require('./PatternUtils');\n\n/**\n * Extracts an object of params the given route cares about from\n * the given params object.\n */\nfunction getRouteParams(route, params) {\n var routeParams = {};\n\n if (!route.path) return routeParams;\n\n (0, _PatternUtils.getParamNames)(route.path).forEach(function (p) {\n if (Object.prototype.hasOwnProperty.call(params, p)) {\n routeParams[p] = params[p];\n }\n });\n\n return routeParams;\n}\n\nexports.default = getRouteParams;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/getRouteParams.js\n// module id = 405\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _createHashHistory = require('history/lib/createHashHistory');\n\nvar _createHashHistory2 = _interopRequireDefault(_createHashHistory);\n\nvar _createRouterHistory = require('./createRouterHistory');\n\nvar _createRouterHistory2 = _interopRequireDefault(_createRouterHistory);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _createRouterHistory2.default)(_createHashHistory2.default);\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/hashHistory.js\n// module id = 406\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = isActive;\n\nvar _PatternUtils = require('./PatternUtils');\n\nfunction deepEqual(a, b) {\n if (a == b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return deepEqual(item, b[index]);\n });\n }\n\n if ((typeof a === 'undefined' ? 'undefined' : _typeof(a)) === 'object') {\n for (var p in a) {\n if (!Object.prototype.hasOwnProperty.call(a, p)) {\n continue;\n }\n\n if (a[p] === undefined) {\n if (b[p] !== undefined) {\n return false;\n }\n } else if (!Object.prototype.hasOwnProperty.call(b, p)) {\n return false;\n } else if (!deepEqual(a[p], b[p])) {\n return false;\n }\n }\n\n return true;\n }\n\n return String(a) === String(b);\n}\n\n/**\n * Returns true if the current pathname matches the supplied one, net of\n * leading and trailing slash normalization. This is sufficient for an\n * indexOnly route match.\n */\nfunction pathIsActive(pathname, currentPathname) {\n // Normalize leading slash for consistency. Leading slash on pathname has\n // already been normalized in isActive. See caveat there.\n if (currentPathname.charAt(0) !== '/') {\n currentPathname = '/' + currentPathname;\n }\n\n // Normalize the end of both path names too. Maybe `/foo/` shouldn't show\n // `/foo` as active, but in this case, we would already have failed the\n // match.\n if (pathname.charAt(pathname.length - 1) !== '/') {\n pathname += '/';\n }\n if (currentPathname.charAt(currentPathname.length - 1) !== '/') {\n currentPathname += '/';\n }\n\n return currentPathname === pathname;\n}\n\n/**\n * Returns true if the given pathname matches the active routes and params.\n */\nfunction routeIsActive(pathname, routes, params) {\n var remainingPathname = pathname,\n paramNames = [],\n paramValues = [];\n\n // for...of would work here but it's probably slower post-transpilation.\n for (var i = 0, len = routes.length; i < len; ++i) {\n var route = routes[i];\n var pattern = route.path || '';\n\n if (pattern.charAt(0) === '/') {\n remainingPathname = pathname;\n paramNames = [];\n paramValues = [];\n }\n\n if (remainingPathname !== null && pattern) {\n var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);\n if (matched) {\n remainingPathname = matched.remainingPathname;\n paramNames = [].concat(paramNames, matched.paramNames);\n paramValues = [].concat(paramValues, matched.paramValues);\n } else {\n remainingPathname = null;\n }\n\n if (remainingPathname === '') {\n // We have an exact match on the route. Just check that all the params\n // match.\n // FIXME: This doesn't work on repeated params.\n return paramNames.every(function (paramName, index) {\n return String(paramValues[index]) === String(params[paramName]);\n });\n }\n }\n }\n\n return false;\n}\n\n/**\n * Returns true if all key/value pairs in the given query are\n * currently active.\n */\nfunction queryIsActive(query, activeQuery) {\n if (activeQuery == null) return query == null;\n\n if (query == null) return true;\n\n return deepEqual(query, activeQuery);\n}\n\n/**\n * Returns true if a <Link> to the given pathname/query combination is\n * currently active.\n */\nfunction isActive(_ref, indexOnly, currentLocation, routes, params) {\n var pathname = _ref.pathname,\n query = _ref.query;\n\n if (currentLocation == null) return false;\n\n // TODO: This is a bit ugly. It keeps around support for treating pathnames\n // without preceding slashes as absolute paths, but possibly also works\n // around the same quirks with basenames as in matchRoutes.\n if (pathname.charAt(0) !== '/') {\n pathname = '/' + pathname;\n }\n\n if (!pathIsActive(pathname, currentLocation.pathname)) {\n // The path check is necessary and sufficient for indexOnly, but otherwise\n // we still need to check the routes.\n if (indexOnly || !routeIsActive(pathname, routes, params)) {\n return false;\n }\n }\n\n return queryIsActive(query, currentLocation.query);\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/isActive.js\n// module id = 407\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _Actions = require('history/lib/Actions');\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _createMemoryHistory = require('./createMemoryHistory');\n\nvar _createMemoryHistory2 = _interopRequireDefault(_createMemoryHistory);\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _RouteUtils = require('./RouteUtils');\n\nvar _RouterUtils = require('./RouterUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n/**\n * A high-level API to be used for server-side rendering.\n *\n * This function matches a location to a set of routes and calls\n * callback(error, redirectLocation, renderProps) when finished.\n *\n * Note: You probably don't want to use this in a browser unless you're using\n * server-side rendering with async routes.\n */\nfunction match(_ref, callback) {\n var history = _ref.history,\n routes = _ref.routes,\n location = _ref.location,\n options = _objectWithoutProperties(_ref, ['history', 'routes', 'location']);\n\n !(history || location) ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'match needs a history or a location') : (0, _invariant2.default)(false) : void 0;\n\n history = history ? history : (0, _createMemoryHistory2.default)(options);\n var transitionManager = (0, _createTransitionManager2.default)(history, (0, _RouteUtils.createRoutes)(routes));\n\n if (location) {\n // Allow match({ location: '/the/path', ... })\n location = history.createLocation(location);\n } else {\n location = history.getCurrentLocation();\n }\n\n transitionManager.match(location, function (error, redirectLocation, nextState) {\n var renderProps = void 0;\n\n if (nextState) {\n var router = (0, _RouterUtils.createRouterObject)(history, transitionManager, nextState);\n renderProps = _extends({}, nextState, {\n router: router,\n matchContext: { transitionManager: transitionManager, router: router }\n });\n }\n\n callback(error, redirectLocation && history.createLocation(redirectLocation, _Actions.REPLACE), renderProps);\n });\n}\n\nexports.default = match;\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/match.js\n// module id = 408\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.default = matchRoutes;\n\nvar _AsyncUtils = require('./AsyncUtils');\n\nvar _PromiseUtils = require('./PromiseUtils');\n\nvar _PatternUtils = require('./PatternUtils');\n\nvar _routerWarning = require('./routerWarning');\n\nvar _routerWarning2 = _interopRequireDefault(_routerWarning);\n\nvar _RouteUtils = require('./RouteUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getChildRoutes(route, location, paramNames, paramValues, callback) {\n if (route.childRoutes) {\n return [null, route.childRoutes];\n }\n if (!route.getChildRoutes) {\n return [];\n }\n\n var sync = true,\n result = void 0;\n\n var partialNextState = {\n location: location,\n params: createParams(paramNames, paramValues)\n };\n\n var childRoutesReturn = route.getChildRoutes(partialNextState, function (error, childRoutes) {\n childRoutes = !error && (0, _RouteUtils.createRoutes)(childRoutes);\n if (sync) {\n result = [error, childRoutes];\n return;\n }\n\n callback(error, childRoutes);\n });\n\n if ((0, _PromiseUtils.isPromise)(childRoutesReturn)) childRoutesReturn.then(function (childRoutes) {\n return callback(null, (0, _RouteUtils.createRoutes)(childRoutes));\n }, callback);\n\n sync = false;\n return result; // Might be undefined.\n}\n\nfunction getIndexRoute(route, location, paramNames, paramValues, callback) {\n if (route.indexRoute) {\n callback(null, route.indexRoute);\n } else if (route.getIndexRoute) {\n var partialNextState = {\n location: location,\n params: createParams(paramNames, paramValues)\n };\n\n var indexRoutesReturn = route.getIndexRoute(partialNextState, function (error, indexRoute) {\n callback(error, !error && (0, _RouteUtils.createRoutes)(indexRoute)[0]);\n });\n\n if ((0, _PromiseUtils.isPromise)(indexRoutesReturn)) indexRoutesReturn.then(function (indexRoute) {\n return callback(null, (0, _RouteUtils.createRoutes)(indexRoute)[0]);\n }, callback);\n } else if (route.childRoutes) {\n (function () {\n var pathless = route.childRoutes.filter(function (childRoute) {\n return !childRoute.path;\n });\n\n (0, _AsyncUtils.loopAsync)(pathless.length, function (index, next, done) {\n getIndexRoute(pathless[index], location, paramNames, paramValues, function (error, indexRoute) {\n if (error || indexRoute) {\n var routes = [pathless[index]].concat(Array.isArray(indexRoute) ? indexRoute : [indexRoute]);\n done(error, routes);\n } else {\n next();\n }\n });\n }, function (err, routes) {\n callback(null, routes);\n });\n })();\n } else {\n callback();\n }\n}\n\nfunction assignParams(params, paramNames, paramValues) {\n return paramNames.reduce(function (params, paramName, index) {\n var paramValue = paramValues && paramValues[index];\n\n if (Array.isArray(params[paramName])) {\n params[paramName].push(paramValue);\n } else if (paramName in params) {\n params[paramName] = [params[paramName], paramValue];\n } else {\n params[paramName] = paramValue;\n }\n\n return params;\n }, params);\n}\n\nfunction createParams(paramNames, paramValues) {\n return assignParams({}, paramNames, paramValues);\n}\n\nfunction matchRouteDeep(route, location, remainingPathname, paramNames, paramValues, callback) {\n var pattern = route.path || '';\n\n if (pattern.charAt(0) === '/') {\n remainingPathname = location.pathname;\n paramNames = [];\n paramValues = [];\n }\n\n // Only try to match the path if the route actually has a pattern, and if\n // we're not just searching for potential nested absolute paths.\n if (remainingPathname !== null && pattern) {\n try {\n var matched = (0, _PatternUtils.matchPattern)(pattern, remainingPathname);\n if (matched) {\n remainingPathname = matched.remainingPathname;\n paramNames = [].concat(paramNames, matched.paramNames);\n paramValues = [].concat(paramValues, matched.paramValues);\n } else {\n remainingPathname = null;\n }\n } catch (error) {\n callback(error);\n }\n\n // By assumption, pattern is non-empty here, which is the prerequisite for\n // actually terminating a match.\n if (remainingPathname === '') {\n var _ret2 = function () {\n var match = {\n routes: [route],\n params: createParams(paramNames, paramValues)\n };\n\n getIndexRoute(route, location, paramNames, paramValues, function (error, indexRoute) {\n if (error) {\n callback(error);\n } else {\n if (Array.isArray(indexRoute)) {\n var _match$routes;\n\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(indexRoute.every(function (route) {\n return !route.path;\n }), 'Index routes should not have paths') : void 0;\n (_match$routes = match.routes).push.apply(_match$routes, indexRoute);\n } else if (indexRoute) {\n process.env.NODE_ENV !== 'production' ? (0, _routerWarning2.default)(!indexRoute.path, 'Index routes should not have paths') : void 0;\n match.routes.push(indexRoute);\n }\n\n callback(null, match);\n }\n });\n\n return {\n v: void 0\n };\n }();\n\n if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === \"object\") return _ret2.v;\n }\n }\n\n if (remainingPathname != null || route.childRoutes) {\n // Either a) this route matched at least some of the path or b)\n // we don't have to load this route's children asynchronously. In\n // either case continue checking for matches in the subtree.\n var onChildRoutes = function onChildRoutes(error, childRoutes) {\n if (error) {\n callback(error);\n } else if (childRoutes) {\n // Check the child routes to see if any of them match.\n matchRoutes(childRoutes, location, function (error, match) {\n if (error) {\n callback(error);\n } else if (match) {\n // A child route matched! Augment the match and pass it up the stack.\n match.routes.unshift(route);\n callback(null, match);\n } else {\n callback();\n }\n }, remainingPathname, paramNames, paramValues);\n } else {\n callback();\n }\n };\n\n var result = getChildRoutes(route, location, paramNames, paramValues, onChildRoutes);\n if (result) {\n onChildRoutes.apply(undefined, result);\n }\n } else {\n callback();\n }\n}\n\n/**\n * Asynchronously matches the given location to a set of routes and calls\n * callback(error, state) when finished. The state object will have the\n * following properties:\n *\n * - routes An array of routes that matched, in hierarchical order\n * - params An object of URL parameters\n *\n * Note: This operation may finish synchronously if no routes have an\n * asynchronous getChildRoutes method.\n */\nfunction matchRoutes(routes, location, callback, remainingPathname) {\n var paramNames = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var paramValues = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n\n if (remainingPathname === undefined) {\n // TODO: This is a little bit ugly, but it works around a quirk in history\n // that strips the leading slash from pathnames when using basenames with\n // trailing slashes.\n if (location.pathname.charAt(0) !== '/') {\n location = _extends({}, location, {\n pathname: '/' + location.pathname\n });\n }\n remainingPathname = location.pathname;\n }\n\n (0, _AsyncUtils.loopAsync)(routes.length, function (index, next, done) {\n matchRouteDeep(routes[index], location, remainingPathname, paramNames, paramValues, function (error, match) {\n if (error || match) {\n done(error, match);\n } else {\n next();\n }\n });\n }, callback);\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/matchRoutes.js\n// module id = 409\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.default = withRouter;\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _hoistNonReactStatics = require('hoist-non-react-statics');\n\nvar _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics);\n\nvar _ContextUtils = require('./ContextUtils');\n\nvar _PropTypes = require('./PropTypes');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n}\n\nfunction withRouter(WrappedComponent, options) {\n var withRef = options && options.withRef;\n\n var WithRouter = _react2.default.createClass({\n displayName: 'WithRouter',\n\n mixins: [(0, _ContextUtils.ContextSubscriber)('router')],\n\n contextTypes: { router: _PropTypes.routerShape },\n propTypes: { router: _PropTypes.routerShape },\n\n getWrappedInstance: function getWrappedInstance() {\n !withRef ? process.env.NODE_ENV !== 'production' ? (0, _invariant2.default)(false, 'To access the wrapped instance, you need to specify ' + '`{ withRef: true }` as the second argument of the withRouter() call.') : (0, _invariant2.default)(false) : void 0;\n\n return this.wrappedInstance;\n },\n render: function render() {\n var _this = this;\n\n var router = this.props.router || this.context.router;\n var params = router.params,\n location = router.location,\n routes = router.routes;\n\n var props = _extends({}, this.props, { router: router, params: params, location: location, routes: routes });\n\n if (withRef) {\n props.ref = function (c) {\n _this.wrappedInstance = c;\n };\n }\n\n return _react2.default.createElement(WrappedComponent, props);\n }\n });\n\n WithRouter.displayName = 'withRouter(' + getDisplayName(WrappedComponent) + ')';\n WithRouter.WrappedComponent = WrappedComponent;\n\n return (0, _hoistNonReactStatics2.default)(WithRouter, WrappedComponent);\n}\nmodule.exports = exports['default'];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react-router/lib/withRouter.js\n// module id = 410\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = ('' + key).replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n\n return '$' + escapedString;\n}\n\n/**\n * Unescape and unwrap key for human-readable display\n *\n * @param {string} key to unescape.\n * @return {string} the unescaped key.\n */\nfunction unescape(key) {\n var unescapeRegex = /(=0|=2)/g;\n var unescaperLookup = {\n '=0': '=',\n '=2': ':'\n };\n var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);\n\n return ('' + keySubstring).replace(unescapeRegex, function (match) {\n return unescaperLookup[match];\n });\n}\n\nvar KeyEscapeUtils = {\n escape: escape,\n unescape: unescape\n};\n\nmodule.exports = KeyEscapeUtils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/KeyEscapeUtils.js\n// module id = 411\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Static poolers. Several custom versions for each potential number of\n * arguments. A completely generic pooler is easy to implement, but would\n * require accessing the `arguments` object. In each of these, `this` refers to\n * the Class itself, not an instance. If any others are needed, simply add them\n * here, or in their own files.\n */\nvar oneArgumentPooler = function (copyFieldsFrom) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, copyFieldsFrom);\n return instance;\n } else {\n return new Klass(copyFieldsFrom);\n }\n};\n\nvar twoArgumentPooler = function (a1, a2) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2);\n return instance;\n } else {\n return new Klass(a1, a2);\n }\n};\n\nvar threeArgumentPooler = function (a1, a2, a3) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3);\n return instance;\n } else {\n return new Klass(a1, a2, a3);\n }\n};\n\nvar fourArgumentPooler = function (a1, a2, a3, a4) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4);\n }\n};\n\nvar fiveArgumentPooler = function (a1, a2, a3, a4, a5) {\n var Klass = this;\n if (Klass.instancePool.length) {\n var instance = Klass.instancePool.pop();\n Klass.call(instance, a1, a2, a3, a4, a5);\n return instance;\n } else {\n return new Klass(a1, a2, a3, a4, a5);\n }\n};\n\nvar standardReleaser = function (instance) {\n var Klass = this;\n !(instance instanceof Klass) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;\n instance.destructor();\n if (Klass.instancePool.length < Klass.poolSize) {\n Klass.instancePool.push(instance);\n }\n};\n\nvar DEFAULT_POOL_SIZE = 10;\nvar DEFAULT_POOLER = oneArgumentPooler;\n\n/**\n * Augments `CopyConstructor` to be a poolable class, augmenting only the class\n * itself (statically) not adding any prototypical fields. Any CopyConstructor\n * you give this may have a `poolSize` property, and will look for a\n * prototypical `destructor` on instances.\n *\n * @param {Function} CopyConstructor Constructor that can be used to reset.\n * @param {Function} pooler Customizable pooler.\n */\nvar addPoolingTo = function (CopyConstructor, pooler) {\n // Casting as any so that flow ignores the actual implementation and trusts\n // it to match the type we declared\n var NewKlass = CopyConstructor;\n NewKlass.instancePool = [];\n NewKlass.getPooled = pooler || DEFAULT_POOLER;\n if (!NewKlass.poolSize) {\n NewKlass.poolSize = DEFAULT_POOL_SIZE;\n }\n NewKlass.release = standardReleaser;\n return NewKlass;\n};\n\nvar PooledClass = {\n addPoolingTo: addPoolingTo,\n oneArgumentPooler: oneArgumentPooler,\n twoArgumentPooler: twoArgumentPooler,\n threeArgumentPooler: threeArgumentPooler,\n fourArgumentPooler: fourArgumentPooler,\n fiveArgumentPooler: fiveArgumentPooler\n};\n\nmodule.exports = PooledClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/PooledClass.js\n// module id = 412\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar PooledClass = require('./PooledClass');\nvar ReactElement = require('./ReactElement');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar traverseAllChildren = require('./traverseAllChildren');\n\nvar twoArgumentPooler = PooledClass.twoArgumentPooler;\nvar fourArgumentPooler = PooledClass.fourArgumentPooler;\n\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction escapeUserProvidedKey(text) {\n return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * traversal. Allows avoiding binding callbacks.\n *\n * @constructor ForEachBookKeeping\n * @param {!function} forEachFunction Function to perform traversal with.\n * @param {?*} forEachContext Context to perform context with.\n */\nfunction ForEachBookKeeping(forEachFunction, forEachContext) {\n this.func = forEachFunction;\n this.context = forEachContext;\n this.count = 0;\n}\nForEachBookKeeping.prototype.destructor = function () {\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(ForEachBookKeeping, twoArgumentPooler);\n\nfunction forEachSingleChild(bookKeeping, child, name) {\n var func = bookKeeping.func,\n context = bookKeeping.context;\n\n func.call(context, child, bookKeeping.count++);\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n if (children == null) {\n return children;\n }\n var traverseContext = ForEachBookKeeping.getPooled(forEachFunc, forEachContext);\n traverseAllChildren(children, forEachSingleChild, traverseContext);\n ForEachBookKeeping.release(traverseContext);\n}\n\n/**\n * PooledClass representing the bookkeeping associated with performing a child\n * mapping. Allows avoiding binding callbacks.\n *\n * @constructor MapBookKeeping\n * @param {!*} mapResult Object containing the ordered map of results.\n * @param {!function} mapFunction Function to perform mapping with.\n * @param {?*} mapContext Context to perform mapping with.\n */\nfunction MapBookKeeping(mapResult, keyPrefix, mapFunction, mapContext) {\n this.result = mapResult;\n this.keyPrefix = keyPrefix;\n this.func = mapFunction;\n this.context = mapContext;\n this.count = 0;\n}\nMapBookKeeping.prototype.destructor = function () {\n this.result = null;\n this.keyPrefix = null;\n this.func = null;\n this.context = null;\n this.count = 0;\n};\nPooledClass.addPoolingTo(MapBookKeeping, fourArgumentPooler);\n\nfunction mapSingleChildIntoContext(bookKeeping, child, childKey) {\n var result = bookKeeping.result,\n keyPrefix = bookKeeping.keyPrefix,\n func = bookKeeping.func,\n context = bookKeeping.context;\n\n\n var mappedChild = func.call(context, child, bookKeeping.count++);\n if (Array.isArray(mappedChild)) {\n mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, emptyFunction.thatReturnsArgument);\n } else if (mappedChild != null) {\n if (ReactElement.isValidElement(mappedChild)) {\n mappedChild = ReactElement.cloneAndReplaceKey(mappedChild,\n // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);\n }\n result.push(mappedChild);\n }\n}\n\nfunction mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {\n var escapedPrefix = '';\n if (prefix != null) {\n escapedPrefix = escapeUserProvidedKey(prefix) + '/';\n }\n var traverseContext = MapBookKeeping.getPooled(array, escapedPrefix, func, context);\n traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);\n MapBookKeeping.release(traverseContext);\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map\n *\n * The provided mapFunction(child, key, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, func, context);\n return result;\n}\n\nfunction forEachSingleChildDummy(traverseContext, child, name) {\n return null;\n}\n\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\nfunction countChildren(children, context) {\n return traverseAllChildren(children, forEachSingleChildDummy, null);\n}\n\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray\n */\nfunction toArray(children) {\n var result = [];\n mapIntoWithKeyPrefixInternal(children, result, null, emptyFunction.thatReturnsArgument);\n return result;\n}\n\nvar ReactChildren = {\n forEach: forEachChildren,\n map: mapChildren,\n mapIntoWithKeyPrefixInternal: mapIntoWithKeyPrefixInternal,\n count: countChildren,\n toArray: toArray\n};\n\nmodule.exports = ReactChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactChildren.js\n// module id = 413\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant'),\n _assign = require('object-assign');\n\nvar ReactComponent = require('./ReactComponent');\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\nvar invariant = require('fbjs/lib/invariant');\nvar warning = require('fbjs/lib/warning');\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\n/**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n\nvar injectedMixins = [];\n\n/**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return <div>Hello World</div>;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\nvar ReactClassInterface = {\n\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return <div>Hello, {name}!</div>;\n * }\n *\n * @return {ReactComponent}\n * @nosideeffects\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n\n};\n\n/**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\nvar RESERVED_SPEC_KEYS = {\n displayName: function (Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function (Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function (Constructor, childContextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign({}, Constructor.childContextTypes, childContextTypes);\n },\n contextTypes: function (Constructor, contextTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign({}, Constructor.contextTypes, contextTypes);\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function (Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(Constructor.getDefaultProps, getDefaultProps);\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function (Constructor, propTypes) {\n if (process.env.NODE_ENV !== 'production') {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function (Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function () {} };\n\nfunction validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an invariant so components\n // don't show up in prod but only in __DEV__\n process.env.NODE_ENV !== 'production' ? warning(typeof typeDef[propName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'React.PropTypes.', Constructor.displayName || 'ReactClass', ReactPropTypeLocationNames[location], propName) : void 0;\n }\n }\n}\n\nfunction validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name) ? ReactClassInterface[name] : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n !(specPolicy === 'OVERRIDE_BASE') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0;\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n !(specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0;\n }\n}\n\n/**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\nfunction mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (process.env.NODE_ENV !== 'production') {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n process.env.NODE_ENV !== 'production' ? warning(isMixinValid, '%s: You\\'re attempting to include a mixin that is either null ' + 'or not an object. Check the mixins included by the component, ' + 'as well as any mixins they include themselves. ' + 'Expected object but got %s.', Constructor.displayName || 'ReactClass', spec === null ? null : typeofSpec) : void 0;\n }\n\n return;\n }\n\n !(typeof spec !== 'function') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0;\n !!ReactElement.isValidElement(spec) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You\\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind = isFunction && !isReactClassMethod && !isAlreadyDefined && spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n !(isReactClassMethod && (specPolicy === 'DEFINE_MANY_MERGED' || specPolicy === 'DEFINE_MANY')) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (process.env.NODE_ENV !== 'production') {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n}\n\nfunction mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n !!isReserved ? process.env.NODE_ENV !== 'production' ? invariant(false, '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.', name) : _prodInvariant('78', name) : void 0;\n\n var isInherited = name in Constructor;\n !!isInherited ? process.env.NODE_ENV !== 'production' ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0;\n Constructor[name] = property;\n }\n}\n\n/**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\nfunction mergeIntoWithNoDuplicateKeys(one, two) {\n !(one && two && typeof one === 'object' && typeof two === 'object') ? process.env.NODE_ENV !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n !(one[key] === undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, '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.', key) : _prodInvariant('81', key) : void 0;\n one[key] = two[key];\n }\n }\n return one;\n}\n\n/**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n}\n\n/**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\nfunction createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n}\n\n/**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\nfunction bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (process.env.NODE_ENV !== 'production') {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function (newThis) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): React component methods may only be bound to the ' + 'component instance. See %s', componentName) : void 0;\n } else if (!args.length) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'bind(): You are binding a component method to the component. ' + 'React does this for you automatically in a high-performance ' + 'way, so you can safely remove this call. See %s', componentName) : void 0;\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n}\n\n/**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\nfunction bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n}\n\n/**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\nvar ReactClassMixin = {\n\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function (newState, callback) {\n this.updater.enqueueReplaceState(this, newState);\n if (callback) {\n this.updater.enqueueCallback(this, callback, 'replaceState');\n }\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function () {\n return this.updater.isMounted(this);\n }\n};\n\nvar ReactClassComponent = function () {};\n_assign(ReactClassComponent.prototype, ReactComponent.prototype, ReactClassMixin);\n\n/**\n * Module for creating composite components.\n *\n * @class ReactClass\n */\nvar ReactClass = {\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n createClass: function (spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function (props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(this instanceof Constructor, 'Something is calling a React component directly. Use a factory or ' + 'JSX instead. See: https://fb.me/react-legacyfactory') : void 0;\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (process.env.NODE_ENV !== 'production') {\n // We allow auto-mocks to proceed as if they're returning null.\n if (initialState === undefined && this.getInitialState._isMockFunction) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n !(typeof initialState === 'object' && !Array.isArray(initialState)) ? process.env.NODE_ENV !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, spec);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n !Constructor.prototype.render ? process.env.NODE_ENV !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;\n\n if (process.env.NODE_ENV !== 'production') {\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', spec.displayName || 'A component') : void 0;\n process.env.NODE_ENV !== 'production' ? warning(!Constructor.prototype.componentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', spec.displayName || 'A component') : void 0;\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n },\n\n injection: {\n injectMixin: function (mixin) {\n injectedMixins.push(mixin);\n }\n }\n\n};\n\nmodule.exports = ReactClass;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactClass.js\n// module id = 414\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactElement = require('./ReactElement');\n\n/**\n * Create a factory that creates HTML tag elements.\n *\n * @private\n */\nvar createDOMFactory = ReactElement.createFactory;\nif (process.env.NODE_ENV !== 'production') {\n var ReactElementValidator = require('./ReactElementValidator');\n createDOMFactory = ReactElementValidator.createFactory;\n}\n\n/**\n * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.\n * This is also accessible via `React.DOM`.\n *\n * @public\n */\nvar ReactDOMFactories = {\n a: createDOMFactory('a'),\n abbr: createDOMFactory('abbr'),\n address: createDOMFactory('address'),\n area: createDOMFactory('area'),\n article: createDOMFactory('article'),\n aside: createDOMFactory('aside'),\n audio: createDOMFactory('audio'),\n b: createDOMFactory('b'),\n base: createDOMFactory('base'),\n bdi: createDOMFactory('bdi'),\n bdo: createDOMFactory('bdo'),\n big: createDOMFactory('big'),\n blockquote: createDOMFactory('blockquote'),\n body: createDOMFactory('body'),\n br: createDOMFactory('br'),\n button: createDOMFactory('button'),\n canvas: createDOMFactory('canvas'),\n caption: createDOMFactory('caption'),\n cite: createDOMFactory('cite'),\n code: createDOMFactory('code'),\n col: createDOMFactory('col'),\n colgroup: createDOMFactory('colgroup'),\n data: createDOMFactory('data'),\n datalist: createDOMFactory('datalist'),\n dd: createDOMFactory('dd'),\n del: createDOMFactory('del'),\n details: createDOMFactory('details'),\n dfn: createDOMFactory('dfn'),\n dialog: createDOMFactory('dialog'),\n div: createDOMFactory('div'),\n dl: createDOMFactory('dl'),\n dt: createDOMFactory('dt'),\n em: createDOMFactory('em'),\n embed: createDOMFactory('embed'),\n fieldset: createDOMFactory('fieldset'),\n figcaption: createDOMFactory('figcaption'),\n figure: createDOMFactory('figure'),\n footer: createDOMFactory('footer'),\n form: createDOMFactory('form'),\n h1: createDOMFactory('h1'),\n h2: createDOMFactory('h2'),\n h3: createDOMFactory('h3'),\n h4: createDOMFactory('h4'),\n h5: createDOMFactory('h5'),\n h6: createDOMFactory('h6'),\n head: createDOMFactory('head'),\n header: createDOMFactory('header'),\n hgroup: createDOMFactory('hgroup'),\n hr: createDOMFactory('hr'),\n html: createDOMFactory('html'),\n i: createDOMFactory('i'),\n iframe: createDOMFactory('iframe'),\n img: createDOMFactory('img'),\n input: createDOMFactory('input'),\n ins: createDOMFactory('ins'),\n kbd: createDOMFactory('kbd'),\n keygen: createDOMFactory('keygen'),\n label: createDOMFactory('label'),\n legend: createDOMFactory('legend'),\n li: createDOMFactory('li'),\n link: createDOMFactory('link'),\n main: createDOMFactory('main'),\n map: createDOMFactory('map'),\n mark: createDOMFactory('mark'),\n menu: createDOMFactory('menu'),\n menuitem: createDOMFactory('menuitem'),\n meta: createDOMFactory('meta'),\n meter: createDOMFactory('meter'),\n nav: createDOMFactory('nav'),\n noscript: createDOMFactory('noscript'),\n object: createDOMFactory('object'),\n ol: createDOMFactory('ol'),\n optgroup: createDOMFactory('optgroup'),\n option: createDOMFactory('option'),\n output: createDOMFactory('output'),\n p: createDOMFactory('p'),\n param: createDOMFactory('param'),\n picture: createDOMFactory('picture'),\n pre: createDOMFactory('pre'),\n progress: createDOMFactory('progress'),\n q: createDOMFactory('q'),\n rp: createDOMFactory('rp'),\n rt: createDOMFactory('rt'),\n ruby: createDOMFactory('ruby'),\n s: createDOMFactory('s'),\n samp: createDOMFactory('samp'),\n script: createDOMFactory('script'),\n section: createDOMFactory('section'),\n select: createDOMFactory('select'),\n small: createDOMFactory('small'),\n source: createDOMFactory('source'),\n span: createDOMFactory('span'),\n strong: createDOMFactory('strong'),\n style: createDOMFactory('style'),\n sub: createDOMFactory('sub'),\n summary: createDOMFactory('summary'),\n sup: createDOMFactory('sup'),\n table: createDOMFactory('table'),\n tbody: createDOMFactory('tbody'),\n td: createDOMFactory('td'),\n textarea: createDOMFactory('textarea'),\n tfoot: createDOMFactory('tfoot'),\n th: createDOMFactory('th'),\n thead: createDOMFactory('thead'),\n time: createDOMFactory('time'),\n title: createDOMFactory('title'),\n tr: createDOMFactory('tr'),\n track: createDOMFactory('track'),\n u: createDOMFactory('u'),\n ul: createDOMFactory('ul'),\n 'var': createDOMFactory('var'),\n video: createDOMFactory('video'),\n wbr: createDOMFactory('wbr'),\n\n // SVG\n circle: createDOMFactory('circle'),\n clipPath: createDOMFactory('clipPath'),\n defs: createDOMFactory('defs'),\n ellipse: createDOMFactory('ellipse'),\n g: createDOMFactory('g'),\n image: createDOMFactory('image'),\n line: createDOMFactory('line'),\n linearGradient: createDOMFactory('linearGradient'),\n mask: createDOMFactory('mask'),\n path: createDOMFactory('path'),\n pattern: createDOMFactory('pattern'),\n polygon: createDOMFactory('polygon'),\n polyline: createDOMFactory('polyline'),\n radialGradient: createDOMFactory('radialGradient'),\n rect: createDOMFactory('rect'),\n stop: createDOMFactory('stop'),\n svg: createDOMFactory('svg'),\n text: createDOMFactory('text'),\n tspan: createDOMFactory('tspan')\n};\n\nmodule.exports = ReactDOMFactories;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactDOMFactories.js\n// module id = 415\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar ReactElement = require('./ReactElement');\nvar ReactPropTypeLocationNames = require('./ReactPropTypeLocationNames');\nvar ReactPropTypesSecret = require('./ReactPropTypesSecret');\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar getIteratorFn = require('./getIteratorFn');\nvar warning = require('fbjs/lib/warning');\n\n/**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\nvar ANONYMOUS = '<<anonymous>>';\n\nvar ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker\n};\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n/*eslint-disable no-self-compare*/\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n}\n/*eslint-enable no-self-compare*/\n\n/**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\nfunction PropTypeError(message) {\n this.message = message;\n this.stack = '';\n}\n// Make `instanceof Error` still work for returned errors.\nPropTypeError.prototype = Error.prototype;\n\nfunction createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (process.env.NODE_ENV !== 'production') {\n if (secret !== ReactPropTypesSecret && typeof console !== 'undefined') {\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey]) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'You are manually calling a React.PropTypes validation ' + 'function for the `%s` prop on `%s`. This is deprecated ' + 'and will not work in production with the next major version. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', propFullName, componentName) : void 0;\n manualPropTypeCallCache[cacheKey] = true;\n }\n }\n }\n if (props[propName] == null) {\n var locationName = ReactPropTypeLocationNames[location];\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + locationName + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n}\n\nfunction createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n var locationName = ReactPropTypeLocationNames[location];\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturns(null));\n}\n\nfunction createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var locationName = ReactPropTypeLocationNames[location];\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactElement.isValidElement(propValue)) {\n var locationName = ReactPropTypeLocationNames[location];\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var locationName = ReactPropTypeLocationNames[location];\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n var locationName = ReactPropTypeLocationNames[location];\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n var locationName = ReactPropTypeLocationNames[location];\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n var locationName = ReactPropTypeLocationNames[location];\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n var locationName = ReactPropTypeLocationNames[location];\n return new PropTypeError('Invalid ' + locationName + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n}\n\nfunction isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || ReactElement.isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n}\n\nfunction isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n}\n\n// Equivalent of `typeof` but with special handling for array and regexp.\nfunction getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n}\n\n// This handles more types than `getPropType`. Only used for error messages.\n// See `createPrimitiveTypeChecker`.\nfunction getPreciseType(propValue) {\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n}\n\n// Returns class name of the object, if any.\nfunction getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n}\n\nmodule.exports = ReactPropTypes;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactPropTypes.js\n// module id = 416\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * \n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactPropTypesSecret.js\n// module id = 417\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _assign = require('object-assign');\n\nvar ReactComponent = require('./ReactComponent');\nvar ReactNoopUpdateQueue = require('./ReactNoopUpdateQueue');\n\nvar emptyObject = require('fbjs/lib/emptyObject');\n\n/**\n * Base class helpers for the updating state of a component.\n */\nfunction ReactPureComponent(props, context, updater) {\n // Duplicated from ReactComponent.\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n // We initialize the default updater but the real one gets injected by the\n // renderer.\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nfunction ComponentDummy() {}\nComponentDummy.prototype = ReactComponent.prototype;\nReactPureComponent.prototype = new ComponentDummy();\nReactPureComponent.prototype.constructor = ReactPureComponent;\n// Avoid an extra prototype jump for these methods.\n_assign(ReactPureComponent.prototype, ReactComponent.prototype);\nReactPureComponent.prototype.isPureReactComponent = true;\n\nmodule.exports = ReactPureComponent;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactPureComponent.js\n// module id = 418\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nmodule.exports = '15.4.1';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/ReactVersion.js\n// module id = 419\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactElement = require('./ReactElement');\n\nvar invariant = require('fbjs/lib/invariant');\n\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://facebook.github.io/react/docs/top-level-api.html#react.children.only\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\nfunction onlyChild(children) {\n !ReactElement.isValidElement(children) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'React.Children.only expected to receive a single React element child.') : _prodInvariant('143') : void 0;\n return children;\n}\n\nmodule.exports = onlyChild;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/onlyChild.js\n// module id = 420\n// module chunks = 0","/**\n * Copyright 2013-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n */\n\n'use strict';\n\nvar _prodInvariant = require('./reactProdInvariant');\n\nvar ReactCurrentOwner = require('./ReactCurrentOwner');\nvar REACT_ELEMENT_TYPE = require('./ReactElementSymbol');\n\nvar getIteratorFn = require('./getIteratorFn');\nvar invariant = require('fbjs/lib/invariant');\nvar KeyEscapeUtils = require('./KeyEscapeUtils');\nvar warning = require('fbjs/lib/warning');\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n\n/**\n * This is inlined from ReactElement since this file is shared between\n * isomorphic and renderers. We could extract this to a\n *\n */\n\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\nvar didWarnAboutMaps = false;\n\n/**\n * Generate a key string that identifies a component within a set.\n *\n * @param {*} component A component that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\nfunction getComponentKey(component, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (component && typeof component === 'object' && component.key != null) {\n // Explicit key\n return KeyEscapeUtils.escape(component.key);\n }\n // Implicit key determined by the index in the set\n return index.toString(36);\n}\n\n/**\n * @param {?*} children Children tree container.\n * @param {!string} nameSoFar Name of the key path so far.\n * @param {!function} callback Callback to invoke with each child found.\n * @param {?*} traverseContext Used to pass information throughout the traversal\n * process.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n if (children === null || type === 'string' || type === 'number' ||\n // The following is inlined from ReactElement. This means we can optimize\n // some checks. React Fiber also inlines this logic for similar purposes.\n type === 'object' && children.$$typeof === REACT_ELEMENT_TYPE) {\n callback(traverseContext, children,\n // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows.\n nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getComponentKey(child, i);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n if (iteratorFn) {\n var iterator = iteratorFn.call(children);\n var step;\n if (iteratorFn !== children.entries) {\n var ii = 0;\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getComponentKey(child, ii++);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n } else {\n if (process.env.NODE_ENV !== 'production') {\n var mapsAsChildrenAddendum = '';\n if (ReactCurrentOwner.current) {\n var mapsAsChildrenOwnerName = ReactCurrentOwner.current.getName();\n if (mapsAsChildrenOwnerName) {\n mapsAsChildrenAddendum = ' Check the render method of `' + mapsAsChildrenOwnerName + '`.';\n }\n }\n process.env.NODE_ENV !== 'production' ? warning(didWarnAboutMaps, 'Using Maps as children is not yet fully supported. It is an ' + 'experimental feature that might be removed. Convert it to a ' + 'sequence / iterable of keyed ReactElements instead.%s', mapsAsChildrenAddendum) : void 0;\n didWarnAboutMaps = true;\n }\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n child = entry[1];\n nextName = nextNamePrefix + KeyEscapeUtils.escape(entry[0]) + SUBSEPARATOR + getComponentKey(child, 0);\n subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);\n }\n }\n }\n } else if (type === 'object') {\n var addendum = '';\n if (process.env.NODE_ENV !== 'production') {\n addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';\n if (children._isReactElement) {\n addendum = ' It looks like you\\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';\n }\n if (ReactCurrentOwner.current) {\n var name = ReactCurrentOwner.current.getName();\n if (name) {\n addendum += ' Check the render method of `' + name + '`.';\n }\n }\n }\n var childrenString = String(children);\n !false ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : _prodInvariant('31', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : void 0;\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Traverses children that are typically specified as `props.children`, but\n * might also be specified through attributes:\n *\n * - `traverseAllChildren(this.props.children, ...)`\n * - `traverseAllChildren(this.props.leftPanelChildren, ...)`\n *\n * The `traverseContext` is an optional argument that is passed through the\n * entire traversal. It can be used to store accumulations or anything else that\n * the callback might find relevant.\n *\n * @param {?*} children Children tree object.\n * @param {!function} callback To invoke upon traversing each child.\n * @param {?*} traverseContext Context for traversal.\n * @return {!number} The number of children in this subtree.\n */\nfunction traverseAllChildren(children, callback, traverseContext) {\n if (children == null) {\n return 0;\n }\n\n return traverseAllChildrenImpl(children, '', callback, traverseContext);\n}\n\nmodule.exports = traverseAllChildren;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/react/lib/traverseAllChildren.js\n// module id = 421\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nfunction createThunkMiddleware(extraArgument) {\n return function (_ref) {\n var dispatch = _ref.dispatch;\n var getState = _ref.getState;\n return function (next) {\n return function (action) {\n if (typeof action === 'function') {\n return action(dispatch, getState, extraArgument);\n }\n\n return next(action);\n };\n };\n };\n}\n\nvar thunk = createThunkMiddleware();\nthunk.withExtraArgument = createThunkMiddleware;\n\nexports['default'] = thunk;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux-thunk/lib/index.js\n// module id = 422\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports['default'] = applyMiddleware;\n\nvar _compose = require('./compose');\n\nvar _compose2 = _interopRequireDefault(_compose);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function (reducer, preloadedState, enhancer) {\n var store = createStore(reducer, preloadedState, enhancer);\n var _dispatch = store.dispatch;\n var chain = [];\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch(action) {\n return _dispatch(action);\n }\n };\n chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = _compose2['default'].apply(undefined, chain)(store.dispatch);\n\n return _extends({}, store, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/lib/applyMiddleware.js\n// module id = 423\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports['default'] = bindActionCreators;\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(undefined, arguments));\n };\n}\n\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass a single function as the first argument,\n * and get a function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?');\n }\n\n var keys = Object.keys(actionCreators);\n var boundActionCreators = {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var actionCreator = actionCreators[key];\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/lib/bindActionCreators.js\n// module id = 424\n// module chunks = 0","'use strict';\n\nexports.__esModule = true;\nexports['default'] = combineReducers;\n\nvar _createStore = require('./createStore');\n\nvar _isPlainObject = require('lodash/isPlainObject');\n\nvar _isPlainObject2 = _interopRequireDefault(_isPlainObject);\n\nvar _warning = require('./utils/warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction getUndefinedStateErrorMessage(key, action) {\n var actionType = action && action.type;\n var actionName = actionType && '\"' + actionType.toString() + '\"' || 'an action';\n\n return 'Given action ' + actionName + ', reducer \"' + key + '\" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === _createStore.ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!(0, _isPlainObject2['default'])(inputState)) {\n return 'The ' + argumentName + ' has unexpected type of \"' + {}.toString.call(inputState).match(/\\s([a-z|A-Z]+)/)[1] + '\". Expected argument to be an object with the following ' + ('keys: \"' + reducerKeys.join('\", \"') + '\"');\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n\n if (unexpectedKeys.length > 0) {\n return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('\"' + unexpectedKeys.join('\", \"') + '\" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('\"' + reducerKeys.join('\", \"') + '\". Unexpected keys will be ignored.');\n }\n}\n\nfunction assertReducerSanity(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, { type: _createStore.ActionTypes.INIT });\n\n if (typeof initialState === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined.');\n }\n\n var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');\n if (typeof reducer(undefined, { type: type }) === 'undefined') {\n throw new Error('Reducer \"' + key + '\" returned undefined when probed with a random type. ' + ('Don\\'t try to handle ' + _createStore.ActionTypes.INIT + ' or other actions in \"redux/*\" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined.');\n }\n });\n}\n\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n (0, _warning2['default'])('No reducer provided for key \"' + key + '\"');\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n var finalReducerKeys = Object.keys(finalReducers);\n\n if (process.env.NODE_ENV !== 'production') {\n var unexpectedKeyCache = {};\n }\n\n var sanityError;\n try {\n assertReducerSanity(finalReducers);\n } catch (e) {\n sanityError = e;\n }\n\n return function combination() {\n var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n var action = arguments[1];\n\n if (sanityError) {\n throw sanityError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n (0, _warning2['default'])(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n for (var i = 0; i < finalReducerKeys.length; i++) {\n var key = finalReducerKeys[i];\n var reducer = finalReducers[key];\n var previousStateForKey = state[key];\n var nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === 'undefined') {\n var errorMessage = getUndefinedStateErrorMessage(key, action);\n throw new Error(errorMessage);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n return hasChanged ? nextState : state;\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/redux/lib/combineReducers.js\n// module id = 425\n// module chunks = 0","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/strict-uri-encode/index.js\n// module id = 426\n// module chunks = 0","module.exports = require('./lib/index');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/symbol-observable/index.js\n// module id = 427\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _ponyfill = require('./ponyfill');\n\nvar _ponyfill2 = _interopRequireDefault(_ponyfill);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar root; /* global window */\n\n\nif (typeof self !== 'undefined') {\n root = self;\n} else if (typeof window !== 'undefined') {\n root = window;\n} else if (typeof global !== 'undefined') {\n root = global;\n} else if (typeof module !== 'undefined') {\n root = module;\n} else {\n root = Function('return this')();\n}\n\nvar result = (0, _ponyfill2['default'])(root);\nexports['default'] = result;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/symbol-observable/lib/index.js\n// module id = 428\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports['default'] = symbolObservablePonyfill;\nfunction symbolObservablePonyfill(root) {\n\tvar result;\n\tvar _Symbol = root.Symbol;\n\n\tif (typeof _Symbol === 'function') {\n\t\tif (_Symbol.observable) {\n\t\t\tresult = _Symbol.observable;\n\t\t} else {\n\t\t\tresult = _Symbol('observable');\n\t\t\t_Symbol.observable = result;\n\t\t}\n\t} else {\n\t\tresult = '@@observable';\n\t}\n\n\treturn result;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/symbol-observable/lib/ponyfill.js\n// module id = 429\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/frontend/dist/favicon.ico b/frontend/dist/favicon.ico deleted file mode 100644 index a2bc43c660a81140395e12f5df4370fb45408120..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34494 zcmeHQTWl3Y7#<1~K_bLxL<87V&|;$UVvGj05`!^bAH2l)f)us*fCe#Wz)Mnz7+)xe z0UiJ)3gRsh6%zzSDG4nt_i_^fk#ZAg3zX8`+41{#&m8vb**&)9?CIIF|DSwkW@l&q z`Tv=3XJ=>UoFhap(N_!}ED)B6%05CoBZL?-#5tbTUx>9xD=Be~mm}Y}tArRmI&nNw zh||M`C@*)8%f<@v$%8_aK?kxzqmzz62<Y*OQcA=etKollgvwFdDWgL8!aldQSQ$Q` zbCA3(ua-@=4fL~}(h}lpznc4)KJV*$rt-R8C~$Q9w4JBCxBqm%P<ijUq+N+~lqcp8 z@c$Ap2+@F%h9aaD1Ma*Or*Q^DmB4U>VkP*5V9fFgw{zTicG><<abLVyj@yHsIjz)p z9QTgza^;71^+98!H(lH6)f03qzjz~D{fk}*RliyNNT~Yd;t8SZw`!Jzr+?~Dr7pIG zqyOb%W$ju+y6fn}%fp~!%1aW&M>~DW_0YYRvK<FXDH5d5n@)L2-1^PwWy-96RLMo- zl~wbpQtjs`%O;={`RJb9RsGI{g$kz12^@Y8JO>n!?u7oJ{Hdj#Bg#uQF}Mw~$^q{@ zDe#yc<}k?$;vmh#N`P`8IS->U9tkSX>3nT72V%j2+34q<5~{mR&3-6lF5sRQWQxl} zKiGDg+n(<9+(6GosEl1VJ~Gvj>6~nsW7n^Bb~UsMbN$h6|LqHM(*GS3gz|$tw6f>w zujqw2I!*mMKQH%QA9i6XAFy7k)BSums>kT!UB33U9a@2|Cn)r*UmkSYo^)t^T@AZi zzq#Z|rOfkG{B8Q^YP~u?l_d%CTc^AIH)h_ZRL2=A_7e2a{4;0u8}lB(v+}=G<t(Z@ zSM?jyhAFvqzEZNC>V93<ou&GH?|*bplr>dK9{p7*%cOc&0e86T*7aZJ{V&t~pVrH1 z@%}o`V}pH&bn5@_fbI&_9rz5x=eTW{1EF&u<F)H|-Dgb0J0Z~<=m!h}?swMif-0eP z3VK&G9!RcJjKG0Mm<OTrfX89J7cmEz1Iz*D0COP!I4}}(pl^caQF)wBHk0k!0I6Dz z?^Ml4cVrcoMT;Tr>f*5-*~N*Sw#|<1$~v;M-n|x*t+;Ay`4jc1jy1(uhjp&8o^+E~ zf7RAz%VxKpQ0;H2t97hr``vBsj&u75UpE%>$M@Yq3V$xN?x$-kl<_AQ?QgU<McRJn z{uRmgH>M7EHm^mLKjzX`wi9<qqR4;iP($+m9y$A8y|!Ih)&-~aqu2g&!&2Ixn3O2B zzwzdXGiZByp|uOxK~6-*{ulcy)p}wN*$jCY*g}y=*pK(-*1q+d$zI3;TINO=4f`kd zR@R<%+V*v@yErQL8&ij!Rn1L})aa1k0eU-O3*!0P{*wlp^0)c*xK`~A(Xe$faD}#= z!kpRP+2`NN0hT%E@%>igFLlb2&9IN;0PvLCZXHK@c<q1b`S<_VAI_cHt&H{~u*U+l z&>8^k_qMsNZFYw^_nDp9II}mz^#{HFL-qt=BhLK{(8i=m!0m23gW||{b)pP{tcza% z;WfqlTT|pd;XYvwFb9|e%z=F80464SFH!cxpt(`cr57ct)}fw$;>SL0xi1mE<Al8} zJ9K7m*>4}(r&SKT2PF4tQG!RPlNj6v%mL;AbAUO(9AFMG2bcrQ0p<X6fH}Y%D0mL^ zM;|W)E&_28@|Aoh-{-}}X&*ny_p_8PYrm|=9+MVhT4`%e@X^>~+8(1}+%aRrEv>o1 zs1|wrE4>HH_MPl7s_txZ@39O!PHmj@AHIjN7bZxjQFo8M|5De_{&W8`|M~h4d(3m| z=kbrne|`U<`+m^9DvWf#|K-8`f5xq+V%`6<?mZl5|IKBuZH=@4vTg<K{j?>H<DWWv za(8U~pL`9iKiEGKMr{zc{+B;~(4hN1cK%ls(Ql<6jI00Vl8N;Fr4)$`|10}js^fxQ zd(mr9vAO=`rmwZnH2#g#B#1-*oAaODr~O6vE>NP63*CR?{kxj*eJH)&xgLJ^iHrZn z%)5^$X`W8>_1_5T@0MuKWx@Bqx$ybD=y$!weiA;9(%Vl9+W*P{(%Q1p{as^v)}t-C zNhwJG@qJT#Kfe**$vX=FwETgH&H1GBh#;+C_-{<P;k;a3y$Syd^pAELA$?bSIzYd! znI=fj7ymo|{_m}uo9R7)IroWu=C?B%tnI5ds<vkOEhP8%FDbqpxGBwPR|3vo2}nT6 z!yj)pHk9?$`@d|x|E2#anggU<=PsAiqR6`f=t&{pyYv3P1LY0?KLJ%hIpFi}q-idv zB%sV7;B&wLaw+cj|1=gcxDA*C%mL;AbAUO(9AFMG2bcrQ0p<X6pwKyx%jfR2x>6Pd lqJ5y(KL#e;7@7#jB*Ga^*voXne$Ed-h#T!NtzmMM@E-=Q5N7}Y diff --git a/frontend/dist/index.html b/frontend/dist/index.html deleted file mode 100644 index 304cb46b06..0000000000 --- a/frontend/dist/index.html +++ /dev/null @@ -1,21 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="description" content="unleash"> - - <title>Unleash Admin - - - - - - - - -

- - - \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json index 3d0196ac8b..48a5450754 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,13 +1,17 @@ { "name": "unleash-frontend", "description": "unleash your features", - "version": "1.0.0-alpha.2", + "version": "2.0.0-alpha.1", "keywords": [ "unleash", "feature toggle", "feature", "toggle" ], + "files": [ + "index.js", + "dist/" + ], "repository": { "type": "git", "url": "ssh://git@github.com:finn-no/unleash.git"