From f82aa4c734dc022a84c9e769f688d2647f8716e4 Mon Sep 17 00:00:00 2001
From: adrien <adrien@malingrey.fr>
Date: Sun, 26 Sep 2021 01:43:44 +0200
Subject: [PATCH] Materialized

---
 css/icons.css                            |    23 +
 css/materialize.css                      |  9085 +++++++++++++++
 css/style.css                            |    10 +
 fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2 |   Bin 0 -> 110560 bytes
 nok.png => img/nok.png                   |   Bin
 ok.png => img/ok.png                     |   Bin
 wait.gif => img/wait.gif                 |   Bin
 index.php                                |    16 +-
 js/materialize.js                        | 12374 +++++++++++++++++++++
 script.js => js/script.js                |     4 +-
 siteNetworks.php                         |   139 +-
 sitesList.php                            |    48 +-
 style.css                                |    45 -
 13 files changed, 21611 insertions(+), 133 deletions(-)
 create mode 100644 css/icons.css
 create mode 100644 css/materialize.css
 create mode 100644 css/style.css
 create mode 100644 fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2
 rename nok.png => img/nok.png (100%)
 rename ok.png => img/ok.png (100%)
 rename wait.gif => img/wait.gif (100%)
 create mode 100644 js/materialize.js
 rename script.js => js/script.js (81%)
 delete mode 100644 style.css

diff --git a/css/icons.css b/css/icons.css
new file mode 100644
index 0000000..5725228
--- /dev/null
+++ b/css/icons.css
@@ -0,0 +1,23 @@
+/* fallback */
+@font-face {
+  font-family: 'Material Icons';
+  font-style: normal;
+  font-weight: 400;
+  src: url(../fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
+}
+
+.material-icons {
+  font-family: 'Material Icons';
+  font-weight: normal;
+  font-style: normal;
+  font-size: 24px;
+  line-height: 1;
+  letter-spacing: normal;
+  text-transform: none;
+  display: inline-block;
+  white-space: nowrap;
+  word-wrap: normal;
+  direction: ltr;
+  -moz-font-feature-settings: 'liga';
+  -moz-osx-font-smoothing: grayscale;
+}
diff --git a/css/materialize.css b/css/materialize.css
new file mode 100644
index 0000000..68bb261
--- /dev/null
+++ b/css/materialize.css
@@ -0,0 +1,9085 @@
+/*!
+ * Materialize v1.0.0 (http://materializecss.com)
+ * Copyright 2014-2017 Materialize
+ * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
+ */
+.materialize-red {
+  background-color: #e51c23 !important;
+}
+
+.materialize-red-text {
+  color: #e51c23 !important;
+}
+
+.materialize-red.lighten-5 {
+  background-color: #fdeaeb !important;
+}
+
+.materialize-red-text.text-lighten-5 {
+  color: #fdeaeb !important;
+}
+
+.materialize-red.lighten-4 {
+  background-color: #f8c1c3 !important;
+}
+
+.materialize-red-text.text-lighten-4 {
+  color: #f8c1c3 !important;
+}
+
+.materialize-red.lighten-3 {
+  background-color: #f3989b !important;
+}
+
+.materialize-red-text.text-lighten-3 {
+  color: #f3989b !important;
+}
+
+.materialize-red.lighten-2 {
+  background-color: #ee6e73 !important;
+}
+
+.materialize-red-text.text-lighten-2 {
+  color: #ee6e73 !important;
+}
+
+.materialize-red.lighten-1 {
+  background-color: #ea454b !important;
+}
+
+.materialize-red-text.text-lighten-1 {
+  color: #ea454b !important;
+}
+
+.materialize-red.darken-1 {
+  background-color: #d0181e !important;
+}
+
+.materialize-red-text.text-darken-1 {
+  color: #d0181e !important;
+}
+
+.materialize-red.darken-2 {
+  background-color: #b9151b !important;
+}
+
+.materialize-red-text.text-darken-2 {
+  color: #b9151b !important;
+}
+
+.materialize-red.darken-3 {
+  background-color: #a21318 !important;
+}
+
+.materialize-red-text.text-darken-3 {
+  color: #a21318 !important;
+}
+
+.materialize-red.darken-4 {
+  background-color: #8b1014 !important;
+}
+
+.materialize-red-text.text-darken-4 {
+  color: #8b1014 !important;
+}
+
+.red {
+  background-color: #F44336 !important;
+}
+
+.red-text {
+  color: #F44336 !important;
+}
+
+.red.lighten-5 {
+  background-color: #FFEBEE !important;
+}
+
+.red-text.text-lighten-5 {
+  color: #FFEBEE !important;
+}
+
+.red.lighten-4 {
+  background-color: #FFCDD2 !important;
+}
+
+.red-text.text-lighten-4 {
+  color: #FFCDD2 !important;
+}
+
+.red.lighten-3 {
+  background-color: #EF9A9A !important;
+}
+
+.red-text.text-lighten-3 {
+  color: #EF9A9A !important;
+}
+
+.red.lighten-2 {
+  background-color: #E57373 !important;
+}
+
+.red-text.text-lighten-2 {
+  color: #E57373 !important;
+}
+
+.red.lighten-1 {
+  background-color: #EF5350 !important;
+}
+
+.red-text.text-lighten-1 {
+  color: #EF5350 !important;
+}
+
+.red.darken-1 {
+  background-color: #E53935 !important;
+}
+
+.red-text.text-darken-1 {
+  color: #E53935 !important;
+}
+
+.red.darken-2 {
+  background-color: #D32F2F !important;
+}
+
+.red-text.text-darken-2 {
+  color: #D32F2F !important;
+}
+
+.red.darken-3 {
+  background-color: #C62828 !important;
+}
+
+.red-text.text-darken-3 {
+  color: #C62828 !important;
+}
+
+.red.darken-4 {
+  background-color: #B71C1C !important;
+}
+
+.red-text.text-darken-4 {
+  color: #B71C1C !important;
+}
+
+.red.accent-1 {
+  background-color: #FF8A80 !important;
+}
+
+.red-text.text-accent-1 {
+  color: #FF8A80 !important;
+}
+
+.red.accent-2 {
+  background-color: #FF5252 !important;
+}
+
+.red-text.text-accent-2 {
+  color: #FF5252 !important;
+}
+
+.red.accent-3 {
+  background-color: #FF1744 !important;
+}
+
+.red-text.text-accent-3 {
+  color: #FF1744 !important;
+}
+
+.red.accent-4 {
+  background-color: #D50000 !important;
+}
+
+.red-text.text-accent-4 {
+  color: #D50000 !important;
+}
+
+.pink {
+  background-color: #e91e63 !important;
+}
+
+.pink-text {
+  color: #e91e63 !important;
+}
+
+.pink.lighten-5 {
+  background-color: #fce4ec !important;
+}
+
+.pink-text.text-lighten-5 {
+  color: #fce4ec !important;
+}
+
+.pink.lighten-4 {
+  background-color: #f8bbd0 !important;
+}
+
+.pink-text.text-lighten-4 {
+  color: #f8bbd0 !important;
+}
+
+.pink.lighten-3 {
+  background-color: #f48fb1 !important;
+}
+
+.pink-text.text-lighten-3 {
+  color: #f48fb1 !important;
+}
+
+.pink.lighten-2 {
+  background-color: #f06292 !important;
+}
+
+.pink-text.text-lighten-2 {
+  color: #f06292 !important;
+}
+
+.pink.lighten-1 {
+  background-color: #ec407a !important;
+}
+
+.pink-text.text-lighten-1 {
+  color: #ec407a !important;
+}
+
+.pink.darken-1 {
+  background-color: #d81b60 !important;
+}
+
+.pink-text.text-darken-1 {
+  color: #d81b60 !important;
+}
+
+.pink.darken-2 {
+  background-color: #c2185b !important;
+}
+
+.pink-text.text-darken-2 {
+  color: #c2185b !important;
+}
+
+.pink.darken-3 {
+  background-color: #ad1457 !important;
+}
+
+.pink-text.text-darken-3 {
+  color: #ad1457 !important;
+}
+
+.pink.darken-4 {
+  background-color: #880e4f !important;
+}
+
+.pink-text.text-darken-4 {
+  color: #880e4f !important;
+}
+
+.pink.accent-1 {
+  background-color: #ff80ab !important;
+}
+
+.pink-text.text-accent-1 {
+  color: #ff80ab !important;
+}
+
+.pink.accent-2 {
+  background-color: #ff4081 !important;
+}
+
+.pink-text.text-accent-2 {
+  color: #ff4081 !important;
+}
+
+.pink.accent-3 {
+  background-color: #f50057 !important;
+}
+
+.pink-text.text-accent-3 {
+  color: #f50057 !important;
+}
+
+.pink.accent-4 {
+  background-color: #c51162 !important;
+}
+
+.pink-text.text-accent-4 {
+  color: #c51162 !important;
+}
+
+.purple {
+  background-color: #9c27b0 !important;
+}
+
+.purple-text {
+  color: #9c27b0 !important;
+}
+
+.purple.lighten-5 {
+  background-color: #f3e5f5 !important;
+}
+
+.purple-text.text-lighten-5 {
+  color: #f3e5f5 !important;
+}
+
+.purple.lighten-4 {
+  background-color: #e1bee7 !important;
+}
+
+.purple-text.text-lighten-4 {
+  color: #e1bee7 !important;
+}
+
+.purple.lighten-3 {
+  background-color: #ce93d8 !important;
+}
+
+.purple-text.text-lighten-3 {
+  color: #ce93d8 !important;
+}
+
+.purple.lighten-2 {
+  background-color: #ba68c8 !important;
+}
+
+.purple-text.text-lighten-2 {
+  color: #ba68c8 !important;
+}
+
+.purple.lighten-1 {
+  background-color: #ab47bc !important;
+}
+
+.purple-text.text-lighten-1 {
+  color: #ab47bc !important;
+}
+
+.purple.darken-1 {
+  background-color: #8e24aa !important;
+}
+
+.purple-text.text-darken-1 {
+  color: #8e24aa !important;
+}
+
+.purple.darken-2 {
+  background-color: #7b1fa2 !important;
+}
+
+.purple-text.text-darken-2 {
+  color: #7b1fa2 !important;
+}
+
+.purple.darken-3 {
+  background-color: #6a1b9a !important;
+}
+
+.purple-text.text-darken-3 {
+  color: #6a1b9a !important;
+}
+
+.purple.darken-4 {
+  background-color: #4a148c !important;
+}
+
+.purple-text.text-darken-4 {
+  color: #4a148c !important;
+}
+
+.purple.accent-1 {
+  background-color: #ea80fc !important;
+}
+
+.purple-text.text-accent-1 {
+  color: #ea80fc !important;
+}
+
+.purple.accent-2 {
+  background-color: #e040fb !important;
+}
+
+.purple-text.text-accent-2 {
+  color: #e040fb !important;
+}
+
+.purple.accent-3 {
+  background-color: #d500f9 !important;
+}
+
+.purple-text.text-accent-3 {
+  color: #d500f9 !important;
+}
+
+.purple.accent-4 {
+  background-color: #aa00ff !important;
+}
+
+.purple-text.text-accent-4 {
+  color: #aa00ff !important;
+}
+
+.deep-purple {
+  background-color: #673ab7 !important;
+}
+
+.deep-purple-text {
+  color: #673ab7 !important;
+}
+
+.deep-purple.lighten-5 {
+  background-color: #ede7f6 !important;
+}
+
+.deep-purple-text.text-lighten-5 {
+  color: #ede7f6 !important;
+}
+
+.deep-purple.lighten-4 {
+  background-color: #d1c4e9 !important;
+}
+
+.deep-purple-text.text-lighten-4 {
+  color: #d1c4e9 !important;
+}
+
+.deep-purple.lighten-3 {
+  background-color: #b39ddb !important;
+}
+
+.deep-purple-text.text-lighten-3 {
+  color: #b39ddb !important;
+}
+
+.deep-purple.lighten-2 {
+  background-color: #9575cd !important;
+}
+
+.deep-purple-text.text-lighten-2 {
+  color: #9575cd !important;
+}
+
+.deep-purple.lighten-1 {
+  background-color: #7e57c2 !important;
+}
+
+.deep-purple-text.text-lighten-1 {
+  color: #7e57c2 !important;
+}
+
+.deep-purple.darken-1 {
+  background-color: #5e35b1 !important;
+}
+
+.deep-purple-text.text-darken-1 {
+  color: #5e35b1 !important;
+}
+
+.deep-purple.darken-2 {
+  background-color: #512da8 !important;
+}
+
+.deep-purple-text.text-darken-2 {
+  color: #512da8 !important;
+}
+
+.deep-purple.darken-3 {
+  background-color: #4527a0 !important;
+}
+
+.deep-purple-text.text-darken-3 {
+  color: #4527a0 !important;
+}
+
+.deep-purple.darken-4 {
+  background-color: #311b92 !important;
+}
+
+.deep-purple-text.text-darken-4 {
+  color: #311b92 !important;
+}
+
+.deep-purple.accent-1 {
+  background-color: #b388ff !important;
+}
+
+.deep-purple-text.text-accent-1 {
+  color: #b388ff !important;
+}
+
+.deep-purple.accent-2 {
+  background-color: #7c4dff !important;
+}
+
+.deep-purple-text.text-accent-2 {
+  color: #7c4dff !important;
+}
+
+.deep-purple.accent-3 {
+  background-color: #651fff !important;
+}
+
+.deep-purple-text.text-accent-3 {
+  color: #651fff !important;
+}
+
+.deep-purple.accent-4 {
+  background-color: #6200ea !important;
+}
+
+.deep-purple-text.text-accent-4 {
+  color: #6200ea !important;
+}
+
+.indigo {
+  background-color: #3f51b5 !important;
+}
+
+.indigo-text {
+  color: #3f51b5 !important;
+}
+
+.indigo.lighten-5 {
+  background-color: #e8eaf6 !important;
+}
+
+.indigo-text.text-lighten-5 {
+  color: #e8eaf6 !important;
+}
+
+.indigo.lighten-4 {
+  background-color: #c5cae9 !important;
+}
+
+.indigo-text.text-lighten-4 {
+  color: #c5cae9 !important;
+}
+
+.indigo.lighten-3 {
+  background-color: #9fa8da !important;
+}
+
+.indigo-text.text-lighten-3 {
+  color: #9fa8da !important;
+}
+
+.indigo.lighten-2 {
+  background-color: #7986cb !important;
+}
+
+.indigo-text.text-lighten-2 {
+  color: #7986cb !important;
+}
+
+.indigo.lighten-1 {
+  background-color: #5c6bc0 !important;
+}
+
+.indigo-text.text-lighten-1 {
+  color: #5c6bc0 !important;
+}
+
+.indigo.darken-1 {
+  background-color: #3949ab !important;
+}
+
+.indigo-text.text-darken-1 {
+  color: #3949ab !important;
+}
+
+.indigo.darken-2 {
+  background-color: #303f9f !important;
+}
+
+.indigo-text.text-darken-2 {
+  color: #303f9f !important;
+}
+
+.indigo.darken-3 {
+  background-color: #283593 !important;
+}
+
+.indigo-text.text-darken-3 {
+  color: #283593 !important;
+}
+
+.indigo.darken-4 {
+  background-color: #1a237e !important;
+}
+
+.indigo-text.text-darken-4 {
+  color: #1a237e !important;
+}
+
+.indigo.accent-1 {
+  background-color: #8c9eff !important;
+}
+
+.indigo-text.text-accent-1 {
+  color: #8c9eff !important;
+}
+
+.indigo.accent-2 {
+  background-color: #536dfe !important;
+}
+
+.indigo-text.text-accent-2 {
+  color: #536dfe !important;
+}
+
+.indigo.accent-3 {
+  background-color: #3d5afe !important;
+}
+
+.indigo-text.text-accent-3 {
+  color: #3d5afe !important;
+}
+
+.indigo.accent-4 {
+  background-color: #304ffe !important;
+}
+
+.indigo-text.text-accent-4 {
+  color: #304ffe !important;
+}
+
+.blue {
+  background-color: #2196F3 !important;
+}
+
+.blue-text {
+  color: #2196F3 !important;
+}
+
+.blue.lighten-5 {
+  background-color: #E3F2FD !important;
+}
+
+.blue-text.text-lighten-5 {
+  color: #E3F2FD !important;
+}
+
+.blue.lighten-4 {
+  background-color: #BBDEFB !important;
+}
+
+.blue-text.text-lighten-4 {
+  color: #BBDEFB !important;
+}
+
+.blue.lighten-3 {
+  background-color: #90CAF9 !important;
+}
+
+.blue-text.text-lighten-3 {
+  color: #90CAF9 !important;
+}
+
+.blue.lighten-2 {
+  background-color: #64B5F6 !important;
+}
+
+.blue-text.text-lighten-2 {
+  color: #64B5F6 !important;
+}
+
+.blue.lighten-1 {
+  background-color: #42A5F5 !important;
+}
+
+.blue-text.text-lighten-1 {
+  color: #42A5F5 !important;
+}
+
+.blue.darken-1 {
+  background-color: #1E88E5 !important;
+}
+
+.blue-text.text-darken-1 {
+  color: #1E88E5 !important;
+}
+
+.blue.darken-2 {
+  background-color: #1976D2 !important;
+}
+
+.blue-text.text-darken-2 {
+  color: #1976D2 !important;
+}
+
+.blue.darken-3 {
+  background-color: #1565C0 !important;
+}
+
+.blue-text.text-darken-3 {
+  color: #1565C0 !important;
+}
+
+.blue.darken-4 {
+  background-color: #0D47A1 !important;
+}
+
+.blue-text.text-darken-4 {
+  color: #0D47A1 !important;
+}
+
+.blue.accent-1 {
+  background-color: #82B1FF !important;
+}
+
+.blue-text.text-accent-1 {
+  color: #82B1FF !important;
+}
+
+.blue.accent-2 {
+  background-color: #448AFF !important;
+}
+
+.blue-text.text-accent-2 {
+  color: #448AFF !important;
+}
+
+.blue.accent-3 {
+  background-color: #2979FF !important;
+}
+
+.blue-text.text-accent-3 {
+  color: #2979FF !important;
+}
+
+.blue.accent-4 {
+  background-color: #2962FF !important;
+}
+
+.blue-text.text-accent-4 {
+  color: #2962FF !important;
+}
+
+.light-blue {
+  background-color: #03a9f4 !important;
+}
+
+.light-blue-text {
+  color: #03a9f4 !important;
+}
+
+.light-blue.lighten-5 {
+  background-color: #e1f5fe !important;
+}
+
+.light-blue-text.text-lighten-5 {
+  color: #e1f5fe !important;
+}
+
+.light-blue.lighten-4 {
+  background-color: #b3e5fc !important;
+}
+
+.light-blue-text.text-lighten-4 {
+  color: #b3e5fc !important;
+}
+
+.light-blue.lighten-3 {
+  background-color: #81d4fa !important;
+}
+
+.light-blue-text.text-lighten-3 {
+  color: #81d4fa !important;
+}
+
+.light-blue.lighten-2 {
+  background-color: #4fc3f7 !important;
+}
+
+.light-blue-text.text-lighten-2 {
+  color: #4fc3f7 !important;
+}
+
+.light-blue.lighten-1 {
+  background-color: #29b6f6 !important;
+}
+
+.light-blue-text.text-lighten-1 {
+  color: #29b6f6 !important;
+}
+
+.light-blue.darken-1 {
+  background-color: #039be5 !important;
+}
+
+.light-blue-text.text-darken-1 {
+  color: #039be5 !important;
+}
+
+.light-blue.darken-2 {
+  background-color: #0288d1 !important;
+}
+
+.light-blue-text.text-darken-2 {
+  color: #0288d1 !important;
+}
+
+.light-blue.darken-3 {
+  background-color: #0277bd !important;
+}
+
+.light-blue-text.text-darken-3 {
+  color: #0277bd !important;
+}
+
+.light-blue.darken-4 {
+  background-color: #01579b !important;
+}
+
+.light-blue-text.text-darken-4 {
+  color: #01579b !important;
+}
+
+.light-blue.accent-1 {
+  background-color: #80d8ff !important;
+}
+
+.light-blue-text.text-accent-1 {
+  color: #80d8ff !important;
+}
+
+.light-blue.accent-2 {
+  background-color: #40c4ff !important;
+}
+
+.light-blue-text.text-accent-2 {
+  color: #40c4ff !important;
+}
+
+.light-blue.accent-3 {
+  background-color: #00b0ff !important;
+}
+
+.light-blue-text.text-accent-3 {
+  color: #00b0ff !important;
+}
+
+.light-blue.accent-4 {
+  background-color: #0091ea !important;
+}
+
+.light-blue-text.text-accent-4 {
+  color: #0091ea !important;
+}
+
+.cyan {
+  background-color: #00bcd4 !important;
+}
+
+.cyan-text {
+  color: #00bcd4 !important;
+}
+
+.cyan.lighten-5 {
+  background-color: #e0f7fa !important;
+}
+
+.cyan-text.text-lighten-5 {
+  color: #e0f7fa !important;
+}
+
+.cyan.lighten-4 {
+  background-color: #b2ebf2 !important;
+}
+
+.cyan-text.text-lighten-4 {
+  color: #b2ebf2 !important;
+}
+
+.cyan.lighten-3 {
+  background-color: #80deea !important;
+}
+
+.cyan-text.text-lighten-3 {
+  color: #80deea !important;
+}
+
+.cyan.lighten-2 {
+  background-color: #4dd0e1 !important;
+}
+
+.cyan-text.text-lighten-2 {
+  color: #4dd0e1 !important;
+}
+
+.cyan.lighten-1 {
+  background-color: #26c6da !important;
+}
+
+.cyan-text.text-lighten-1 {
+  color: #26c6da !important;
+}
+
+.cyan.darken-1 {
+  background-color: #00acc1 !important;
+}
+
+.cyan-text.text-darken-1 {
+  color: #00acc1 !important;
+}
+
+.cyan.darken-2 {
+  background-color: #0097a7 !important;
+}
+
+.cyan-text.text-darken-2 {
+  color: #0097a7 !important;
+}
+
+.cyan.darken-3 {
+  background-color: #00838f !important;
+}
+
+.cyan-text.text-darken-3 {
+  color: #00838f !important;
+}
+
+.cyan.darken-4 {
+  background-color: #006064 !important;
+}
+
+.cyan-text.text-darken-4 {
+  color: #006064 !important;
+}
+
+.cyan.accent-1 {
+  background-color: #84ffff !important;
+}
+
+.cyan-text.text-accent-1 {
+  color: #84ffff !important;
+}
+
+.cyan.accent-2 {
+  background-color: #18ffff !important;
+}
+
+.cyan-text.text-accent-2 {
+  color: #18ffff !important;
+}
+
+.cyan.accent-3 {
+  background-color: #00e5ff !important;
+}
+
+.cyan-text.text-accent-3 {
+  color: #00e5ff !important;
+}
+
+.cyan.accent-4 {
+  background-color: #00b8d4 !important;
+}
+
+.cyan-text.text-accent-4 {
+  color: #00b8d4 !important;
+}
+
+.teal {
+  background-color: #009688 !important;
+}
+
+.teal-text {
+  color: #009688 !important;
+}
+
+.teal.lighten-5 {
+  background-color: #e0f2f1 !important;
+}
+
+.teal-text.text-lighten-5 {
+  color: #e0f2f1 !important;
+}
+
+.teal.lighten-4 {
+  background-color: #b2dfdb !important;
+}
+
+.teal-text.text-lighten-4 {
+  color: #b2dfdb !important;
+}
+
+.teal.lighten-3 {
+  background-color: #80cbc4 !important;
+}
+
+.teal-text.text-lighten-3 {
+  color: #80cbc4 !important;
+}
+
+.teal.lighten-2 {
+  background-color: #4db6ac !important;
+}
+
+.teal-text.text-lighten-2 {
+  color: #4db6ac !important;
+}
+
+.teal.lighten-1 {
+  background-color: #26a69a !important;
+}
+
+.teal-text.text-lighten-1 {
+  color: #26a69a !important;
+}
+
+.teal.darken-1 {
+  background-color: #00897b !important;
+}
+
+.teal-text.text-darken-1 {
+  color: #00897b !important;
+}
+
+.teal.darken-2 {
+  background-color: #00796b !important;
+}
+
+.teal-text.text-darken-2 {
+  color: #00796b !important;
+}
+
+.teal.darken-3 {
+  background-color: #00695c !important;
+}
+
+.teal-text.text-darken-3 {
+  color: #00695c !important;
+}
+
+.teal.darken-4 {
+  background-color: #004d40 !important;
+}
+
+.teal-text.text-darken-4 {
+  color: #004d40 !important;
+}
+
+.teal.accent-1 {
+  background-color: #a7ffeb !important;
+}
+
+.teal-text.text-accent-1 {
+  color: #a7ffeb !important;
+}
+
+.teal.accent-2 {
+  background-color: #64ffda !important;
+}
+
+.teal-text.text-accent-2 {
+  color: #64ffda !important;
+}
+
+.teal.accent-3 {
+  background-color: #1de9b6 !important;
+}
+
+.teal-text.text-accent-3 {
+  color: #1de9b6 !important;
+}
+
+.teal.accent-4 {
+  background-color: #00bfa5 !important;
+}
+
+.teal-text.text-accent-4 {
+  color: #00bfa5 !important;
+}
+
+.green {
+  background-color: #4CAF50 !important;
+}
+
+.green-text {
+  color: #4CAF50 !important;
+}
+
+.green.lighten-5 {
+  background-color: #E8F5E9 !important;
+}
+
+.green-text.text-lighten-5 {
+  color: #E8F5E9 !important;
+}
+
+.green.lighten-4 {
+  background-color: #C8E6C9 !important;
+}
+
+.green-text.text-lighten-4 {
+  color: #C8E6C9 !important;
+}
+
+.green.lighten-3 {
+  background-color: #A5D6A7 !important;
+}
+
+.green-text.text-lighten-3 {
+  color: #A5D6A7 !important;
+}
+
+.green.lighten-2 {
+  background-color: #81C784 !important;
+}
+
+.green-text.text-lighten-2 {
+  color: #81C784 !important;
+}
+
+.green.lighten-1 {
+  background-color: #66BB6A !important;
+}
+
+.green-text.text-lighten-1 {
+  color: #66BB6A !important;
+}
+
+.green.darken-1 {
+  background-color: #43A047 !important;
+}
+
+.green-text.text-darken-1 {
+  color: #43A047 !important;
+}
+
+.green.darken-2 {
+  background-color: #388E3C !important;
+}
+
+.green-text.text-darken-2 {
+  color: #388E3C !important;
+}
+
+.green.darken-3 {
+  background-color: #2E7D32 !important;
+}
+
+.green-text.text-darken-3 {
+  color: #2E7D32 !important;
+}
+
+.green.darken-4 {
+  background-color: #1B5E20 !important;
+}
+
+.green-text.text-darken-4 {
+  color: #1B5E20 !important;
+}
+
+.green.accent-1 {
+  background-color: #B9F6CA !important;
+}
+
+.green-text.text-accent-1 {
+  color: #B9F6CA !important;
+}
+
+.green.accent-2 {
+  background-color: #69F0AE !important;
+}
+
+.green-text.text-accent-2 {
+  color: #69F0AE !important;
+}
+
+.green.accent-3 {
+  background-color: #00E676 !important;
+}
+
+.green-text.text-accent-3 {
+  color: #00E676 !important;
+}
+
+.green.accent-4 {
+  background-color: #00C853 !important;
+}
+
+.green-text.text-accent-4 {
+  color: #00C853 !important;
+}
+
+.light-green {
+  background-color: #8bc34a !important;
+}
+
+.light-green-text {
+  color: #8bc34a !important;
+}
+
+.light-green.lighten-5 {
+  background-color: #f1f8e9 !important;
+}
+
+.light-green-text.text-lighten-5 {
+  color: #f1f8e9 !important;
+}
+
+.light-green.lighten-4 {
+  background-color: #dcedc8 !important;
+}
+
+.light-green-text.text-lighten-4 {
+  color: #dcedc8 !important;
+}
+
+.light-green.lighten-3 {
+  background-color: #c5e1a5 !important;
+}
+
+.light-green-text.text-lighten-3 {
+  color: #c5e1a5 !important;
+}
+
+.light-green.lighten-2 {
+  background-color: #aed581 !important;
+}
+
+.light-green-text.text-lighten-2 {
+  color: #aed581 !important;
+}
+
+.light-green.lighten-1 {
+  background-color: #9ccc65 !important;
+}
+
+.light-green-text.text-lighten-1 {
+  color: #9ccc65 !important;
+}
+
+.light-green.darken-1 {
+  background-color: #7cb342 !important;
+}
+
+.light-green-text.text-darken-1 {
+  color: #7cb342 !important;
+}
+
+.light-green.darken-2 {
+  background-color: #689f38 !important;
+}
+
+.light-green-text.text-darken-2 {
+  color: #689f38 !important;
+}
+
+.light-green.darken-3 {
+  background-color: #558b2f !important;
+}
+
+.light-green-text.text-darken-3 {
+  color: #558b2f !important;
+}
+
+.light-green.darken-4 {
+  background-color: #33691e !important;
+}
+
+.light-green-text.text-darken-4 {
+  color: #33691e !important;
+}
+
+.light-green.accent-1 {
+  background-color: #ccff90 !important;
+}
+
+.light-green-text.text-accent-1 {
+  color: #ccff90 !important;
+}
+
+.light-green.accent-2 {
+  background-color: #b2ff59 !important;
+}
+
+.light-green-text.text-accent-2 {
+  color: #b2ff59 !important;
+}
+
+.light-green.accent-3 {
+  background-color: #76ff03 !important;
+}
+
+.light-green-text.text-accent-3 {
+  color: #76ff03 !important;
+}
+
+.light-green.accent-4 {
+  background-color: #64dd17 !important;
+}
+
+.light-green-text.text-accent-4 {
+  color: #64dd17 !important;
+}
+
+.lime {
+  background-color: #cddc39 !important;
+}
+
+.lime-text {
+  color: #cddc39 !important;
+}
+
+.lime.lighten-5 {
+  background-color: #f9fbe7 !important;
+}
+
+.lime-text.text-lighten-5 {
+  color: #f9fbe7 !important;
+}
+
+.lime.lighten-4 {
+  background-color: #f0f4c3 !important;
+}
+
+.lime-text.text-lighten-4 {
+  color: #f0f4c3 !important;
+}
+
+.lime.lighten-3 {
+  background-color: #e6ee9c !important;
+}
+
+.lime-text.text-lighten-3 {
+  color: #e6ee9c !important;
+}
+
+.lime.lighten-2 {
+  background-color: #dce775 !important;
+}
+
+.lime-text.text-lighten-2 {
+  color: #dce775 !important;
+}
+
+.lime.lighten-1 {
+  background-color: #d4e157 !important;
+}
+
+.lime-text.text-lighten-1 {
+  color: #d4e157 !important;
+}
+
+.lime.darken-1 {
+  background-color: #c0ca33 !important;
+}
+
+.lime-text.text-darken-1 {
+  color: #c0ca33 !important;
+}
+
+.lime.darken-2 {
+  background-color: #afb42b !important;
+}
+
+.lime-text.text-darken-2 {
+  color: #afb42b !important;
+}
+
+.lime.darken-3 {
+  background-color: #9e9d24 !important;
+}
+
+.lime-text.text-darken-3 {
+  color: #9e9d24 !important;
+}
+
+.lime.darken-4 {
+  background-color: #827717 !important;
+}
+
+.lime-text.text-darken-4 {
+  color: #827717 !important;
+}
+
+.lime.accent-1 {
+  background-color: #f4ff81 !important;
+}
+
+.lime-text.text-accent-1 {
+  color: #f4ff81 !important;
+}
+
+.lime.accent-2 {
+  background-color: #eeff41 !important;
+}
+
+.lime-text.text-accent-2 {
+  color: #eeff41 !important;
+}
+
+.lime.accent-3 {
+  background-color: #c6ff00 !important;
+}
+
+.lime-text.text-accent-3 {
+  color: #c6ff00 !important;
+}
+
+.lime.accent-4 {
+  background-color: #aeea00 !important;
+}
+
+.lime-text.text-accent-4 {
+  color: #aeea00 !important;
+}
+
+.yellow {
+  background-color: #ffeb3b !important;
+}
+
+.yellow-text {
+  color: #ffeb3b !important;
+}
+
+.yellow.lighten-5 {
+  background-color: #fffde7 !important;
+}
+
+.yellow-text.text-lighten-5 {
+  color: #fffde7 !important;
+}
+
+.yellow.lighten-4 {
+  background-color: #fff9c4 !important;
+}
+
+.yellow-text.text-lighten-4 {
+  color: #fff9c4 !important;
+}
+
+.yellow.lighten-3 {
+  background-color: #fff59d !important;
+}
+
+.yellow-text.text-lighten-3 {
+  color: #fff59d !important;
+}
+
+.yellow.lighten-2 {
+  background-color: #fff176 !important;
+}
+
+.yellow-text.text-lighten-2 {
+  color: #fff176 !important;
+}
+
+.yellow.lighten-1 {
+  background-color: #ffee58 !important;
+}
+
+.yellow-text.text-lighten-1 {
+  color: #ffee58 !important;
+}
+
+.yellow.darken-1 {
+  background-color: #fdd835 !important;
+}
+
+.yellow-text.text-darken-1 {
+  color: #fdd835 !important;
+}
+
+.yellow.darken-2 {
+  background-color: #fbc02d !important;
+}
+
+.yellow-text.text-darken-2 {
+  color: #fbc02d !important;
+}
+
+.yellow.darken-3 {
+  background-color: #f9a825 !important;
+}
+
+.yellow-text.text-darken-3 {
+  color: #f9a825 !important;
+}
+
+.yellow.darken-4 {
+  background-color: #f57f17 !important;
+}
+
+.yellow-text.text-darken-4 {
+  color: #f57f17 !important;
+}
+
+.yellow.accent-1 {
+  background-color: #ffff8d !important;
+}
+
+.yellow-text.text-accent-1 {
+  color: #ffff8d !important;
+}
+
+.yellow.accent-2 {
+  background-color: #ffff00 !important;
+}
+
+.yellow-text.text-accent-2 {
+  color: #ffff00 !important;
+}
+
+.yellow.accent-3 {
+  background-color: #ffea00 !important;
+}
+
+.yellow-text.text-accent-3 {
+  color: #ffea00 !important;
+}
+
+.yellow.accent-4 {
+  background-color: #ffd600 !important;
+}
+
+.yellow-text.text-accent-4 {
+  color: #ffd600 !important;
+}
+
+.amber {
+  background-color: #ffc107 !important;
+}
+
+.amber-text {
+  color: #ffc107 !important;
+}
+
+.amber.lighten-5 {
+  background-color: #fff8e1 !important;
+}
+
+.amber-text.text-lighten-5 {
+  color: #fff8e1 !important;
+}
+
+.amber.lighten-4 {
+  background-color: #ffecb3 !important;
+}
+
+.amber-text.text-lighten-4 {
+  color: #ffecb3 !important;
+}
+
+.amber.lighten-3 {
+  background-color: #ffe082 !important;
+}
+
+.amber-text.text-lighten-3 {
+  color: #ffe082 !important;
+}
+
+.amber.lighten-2 {
+  background-color: #ffd54f !important;
+}
+
+.amber-text.text-lighten-2 {
+  color: #ffd54f !important;
+}
+
+.amber.lighten-1 {
+  background-color: #ffca28 !important;
+}
+
+.amber-text.text-lighten-1 {
+  color: #ffca28 !important;
+}
+
+.amber.darken-1 {
+  background-color: #ffb300 !important;
+}
+
+.amber-text.text-darken-1 {
+  color: #ffb300 !important;
+}
+
+.amber.darken-2 {
+  background-color: #ffa000 !important;
+}
+
+.amber-text.text-darken-2 {
+  color: #ffa000 !important;
+}
+
+.amber.darken-3 {
+  background-color: #ff8f00 !important;
+}
+
+.amber-text.text-darken-3 {
+  color: #ff8f00 !important;
+}
+
+.amber.darken-4 {
+  background-color: #ff6f00 !important;
+}
+
+.amber-text.text-darken-4 {
+  color: #ff6f00 !important;
+}
+
+.amber.accent-1 {
+  background-color: #ffe57f !important;
+}
+
+.amber-text.text-accent-1 {
+  color: #ffe57f !important;
+}
+
+.amber.accent-2 {
+  background-color: #ffd740 !important;
+}
+
+.amber-text.text-accent-2 {
+  color: #ffd740 !important;
+}
+
+.amber.accent-3 {
+  background-color: #ffc400 !important;
+}
+
+.amber-text.text-accent-3 {
+  color: #ffc400 !important;
+}
+
+.amber.accent-4 {
+  background-color: #ffab00 !important;
+}
+
+.amber-text.text-accent-4 {
+  color: #ffab00 !important;
+}
+
+.orange {
+  background-color: #ff9800 !important;
+}
+
+.orange-text {
+  color: #ff9800 !important;
+}
+
+.orange.lighten-5 {
+  background-color: #fff3e0 !important;
+}
+
+.orange-text.text-lighten-5 {
+  color: #fff3e0 !important;
+}
+
+.orange.lighten-4 {
+  background-color: #ffe0b2 !important;
+}
+
+.orange-text.text-lighten-4 {
+  color: #ffe0b2 !important;
+}
+
+.orange.lighten-3 {
+  background-color: #ffcc80 !important;
+}
+
+.orange-text.text-lighten-3 {
+  color: #ffcc80 !important;
+}
+
+.orange.lighten-2 {
+  background-color: #ffb74d !important;
+}
+
+.orange-text.text-lighten-2 {
+  color: #ffb74d !important;
+}
+
+.orange.lighten-1 {
+  background-color: #ffa726 !important;
+}
+
+.orange-text.text-lighten-1 {
+  color: #ffa726 !important;
+}
+
+.orange.darken-1 {
+  background-color: #fb8c00 !important;
+}
+
+.orange-text.text-darken-1 {
+  color: #fb8c00 !important;
+}
+
+.orange.darken-2 {
+  background-color: #f57c00 !important;
+}
+
+.orange-text.text-darken-2 {
+  color: #f57c00 !important;
+}
+
+.orange.darken-3 {
+  background-color: #ef6c00 !important;
+}
+
+.orange-text.text-darken-3 {
+  color: #ef6c00 !important;
+}
+
+.orange.darken-4 {
+  background-color: #e65100 !important;
+}
+
+.orange-text.text-darken-4 {
+  color: #e65100 !important;
+}
+
+.orange.accent-1 {
+  background-color: #ffd180 !important;
+}
+
+.orange-text.text-accent-1 {
+  color: #ffd180 !important;
+}
+
+.orange.accent-2 {
+  background-color: #ffab40 !important;
+}
+
+.orange-text.text-accent-2 {
+  color: #ffab40 !important;
+}
+
+.orange.accent-3 {
+  background-color: #ff9100 !important;
+}
+
+.orange-text.text-accent-3 {
+  color: #ff9100 !important;
+}
+
+.orange.accent-4 {
+  background-color: #ff6d00 !important;
+}
+
+.orange-text.text-accent-4 {
+  color: #ff6d00 !important;
+}
+
+.deep-orange {
+  background-color: #ff5722 !important;
+}
+
+.deep-orange-text {
+  color: #ff5722 !important;
+}
+
+.deep-orange.lighten-5 {
+  background-color: #fbe9e7 !important;
+}
+
+.deep-orange-text.text-lighten-5 {
+  color: #fbe9e7 !important;
+}
+
+.deep-orange.lighten-4 {
+  background-color: #ffccbc !important;
+}
+
+.deep-orange-text.text-lighten-4 {
+  color: #ffccbc !important;
+}
+
+.deep-orange.lighten-3 {
+  background-color: #ffab91 !important;
+}
+
+.deep-orange-text.text-lighten-3 {
+  color: #ffab91 !important;
+}
+
+.deep-orange.lighten-2 {
+  background-color: #ff8a65 !important;
+}
+
+.deep-orange-text.text-lighten-2 {
+  color: #ff8a65 !important;
+}
+
+.deep-orange.lighten-1 {
+  background-color: #ff7043 !important;
+}
+
+.deep-orange-text.text-lighten-1 {
+  color: #ff7043 !important;
+}
+
+.deep-orange.darken-1 {
+  background-color: #f4511e !important;
+}
+
+.deep-orange-text.text-darken-1 {
+  color: #f4511e !important;
+}
+
+.deep-orange.darken-2 {
+  background-color: #e64a19 !important;
+}
+
+.deep-orange-text.text-darken-2 {
+  color: #e64a19 !important;
+}
+
+.deep-orange.darken-3 {
+  background-color: #d84315 !important;
+}
+
+.deep-orange-text.text-darken-3 {
+  color: #d84315 !important;
+}
+
+.deep-orange.darken-4 {
+  background-color: #bf360c !important;
+}
+
+.deep-orange-text.text-darken-4 {
+  color: #bf360c !important;
+}
+
+.deep-orange.accent-1 {
+  background-color: #ff9e80 !important;
+}
+
+.deep-orange-text.text-accent-1 {
+  color: #ff9e80 !important;
+}
+
+.deep-orange.accent-2 {
+  background-color: #ff6e40 !important;
+}
+
+.deep-orange-text.text-accent-2 {
+  color: #ff6e40 !important;
+}
+
+.deep-orange.accent-3 {
+  background-color: #ff3d00 !important;
+}
+
+.deep-orange-text.text-accent-3 {
+  color: #ff3d00 !important;
+}
+
+.deep-orange.accent-4 {
+  background-color: #dd2c00 !important;
+}
+
+.deep-orange-text.text-accent-4 {
+  color: #dd2c00 !important;
+}
+
+.brown {
+  background-color: #795548 !important;
+}
+
+.brown-text {
+  color: #795548 !important;
+}
+
+.brown.lighten-5 {
+  background-color: #efebe9 !important;
+}
+
+.brown-text.text-lighten-5 {
+  color: #efebe9 !important;
+}
+
+.brown.lighten-4 {
+  background-color: #d7ccc8 !important;
+}
+
+.brown-text.text-lighten-4 {
+  color: #d7ccc8 !important;
+}
+
+.brown.lighten-3 {
+  background-color: #bcaaa4 !important;
+}
+
+.brown-text.text-lighten-3 {
+  color: #bcaaa4 !important;
+}
+
+.brown.lighten-2 {
+  background-color: #a1887f !important;
+}
+
+.brown-text.text-lighten-2 {
+  color: #a1887f !important;
+}
+
+.brown.lighten-1 {
+  background-color: #8d6e63 !important;
+}
+
+.brown-text.text-lighten-1 {
+  color: #8d6e63 !important;
+}
+
+.brown.darken-1 {
+  background-color: #6d4c41 !important;
+}
+
+.brown-text.text-darken-1 {
+  color: #6d4c41 !important;
+}
+
+.brown.darken-2 {
+  background-color: #5d4037 !important;
+}
+
+.brown-text.text-darken-2 {
+  color: #5d4037 !important;
+}
+
+.brown.darken-3 {
+  background-color: #4e342e !important;
+}
+
+.brown-text.text-darken-3 {
+  color: #4e342e !important;
+}
+
+.brown.darken-4 {
+  background-color: #3e2723 !important;
+}
+
+.brown-text.text-darken-4 {
+  color: #3e2723 !important;
+}
+
+.blue-grey {
+  background-color: #607d8b !important;
+}
+
+.blue-grey-text {
+  color: #607d8b !important;
+}
+
+.blue-grey.lighten-5 {
+  background-color: #eceff1 !important;
+}
+
+.blue-grey-text.text-lighten-5 {
+  color: #eceff1 !important;
+}
+
+.blue-grey.lighten-4 {
+  background-color: #cfd8dc !important;
+}
+
+.blue-grey-text.text-lighten-4 {
+  color: #cfd8dc !important;
+}
+
+.blue-grey.lighten-3 {
+  background-color: #b0bec5 !important;
+}
+
+.blue-grey-text.text-lighten-3 {
+  color: #b0bec5 !important;
+}
+
+.blue-grey.lighten-2 {
+  background-color: #90a4ae !important;
+}
+
+.blue-grey-text.text-lighten-2 {
+  color: #90a4ae !important;
+}
+
+.blue-grey.lighten-1 {
+  background-color: #78909c !important;
+}
+
+.blue-grey-text.text-lighten-1 {
+  color: #78909c !important;
+}
+
+.blue-grey.darken-1 {
+  background-color: #546e7a !important;
+}
+
+.blue-grey-text.text-darken-1 {
+  color: #546e7a !important;
+}
+
+.blue-grey.darken-2 {
+  background-color: #455a64 !important;
+}
+
+.blue-grey-text.text-darken-2 {
+  color: #455a64 !important;
+}
+
+.blue-grey.darken-3 {
+  background-color: #37474f !important;
+}
+
+.blue-grey-text.text-darken-3 {
+  color: #37474f !important;
+}
+
+.blue-grey.darken-4 {
+  background-color: #263238 !important;
+}
+
+.blue-grey-text.text-darken-4 {
+  color: #263238 !important;
+}
+
+.grey {
+  background-color: #9e9e9e !important;
+}
+
+.grey-text {
+  color: #9e9e9e !important;
+}
+
+.grey.lighten-5 {
+  background-color: #fafafa !important;
+}
+
+.grey-text.text-lighten-5 {
+  color: #fafafa !important;
+}
+
+.grey.lighten-4 {
+  background-color: #f5f5f5 !important;
+}
+
+.grey-text.text-lighten-4 {
+  color: #f5f5f5 !important;
+}
+
+.grey.lighten-3 {
+  background-color: #eeeeee !important;
+}
+
+.grey-text.text-lighten-3 {
+  color: #eeeeee !important;
+}
+
+.grey.lighten-2 {
+  background-color: #e0e0e0 !important;
+}
+
+.grey-text.text-lighten-2 {
+  color: #e0e0e0 !important;
+}
+
+.grey.lighten-1 {
+  background-color: #bdbdbd !important;
+}
+
+.grey-text.text-lighten-1 {
+  color: #bdbdbd !important;
+}
+
+.grey.darken-1 {
+  background-color: #757575 !important;
+}
+
+.grey-text.text-darken-1 {
+  color: #757575 !important;
+}
+
+.grey.darken-2 {
+  background-color: #616161 !important;
+}
+
+.grey-text.text-darken-2 {
+  color: #616161 !important;
+}
+
+.grey.darken-3 {
+  background-color: #424242 !important;
+}
+
+.grey-text.text-darken-3 {
+  color: #424242 !important;
+}
+
+.grey.darken-4 {
+  background-color: #212121 !important;
+}
+
+.grey-text.text-darken-4 {
+  color: #212121 !important;
+}
+
+.black {
+  background-color: #000000 !important;
+}
+
+.black-text {
+  color: #000000 !important;
+}
+
+.white {
+  background-color: #FFFFFF !important;
+}
+
+.white-text {
+  color: #FFFFFF !important;
+}
+
+.transparent {
+  background-color: transparent !important;
+}
+
+.transparent-text {
+  color: transparent !important;
+}
+
+/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */
+/* Document
+   ========================================================================== */
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in
+ *    IE on Windows Phone and in iOS.
+ */
+html {
+  line-height: 1.15;
+  /* 1 */
+  -ms-text-size-adjust: 100%;
+  /* 2 */
+  -webkit-text-size-adjust: 100%;
+  /* 2 */
+}
+
+/* Sections
+   ========================================================================== */
+/**
+ * Remove the margin in all browsers (opinionated).
+ */
+body {
+  margin: 0;
+}
+
+/**
+ * Add the correct display in IE 9-.
+ */
+article,
+aside,
+footer,
+header,
+nav,
+section {
+  display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+
+/* Grouping content
+   ========================================================================== */
+/**
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in IE.
+ */
+figcaption,
+figure,
+main {
+  /* 1 */
+  display: block;
+}
+
+/**
+ * Add the correct margin in IE 8.
+ */
+figure {
+  margin: 1em 40px;
+}
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+hr {
+  -webkit-box-sizing: content-box;
+          box-sizing: content-box;
+  /* 1 */
+  height: 0;
+  /* 1 */
+  overflow: visible;
+  /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+pre {
+  font-family: monospace, monospace;
+  /* 1 */
+  font-size: 1em;
+  /* 2 */
+}
+
+/* Text-level semantics
+   ========================================================================== */
+/**
+ * 1. Remove the gray background on active links in IE 10.
+ * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
+ */
+a {
+  background-color: transparent;
+  /* 1 */
+  -webkit-text-decoration-skip: objects;
+  /* 2 */
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57- and Firefox 39-.
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+abbr[title] {
+  border-bottom: none;
+  /* 1 */
+  text-decoration: underline;
+  /* 2 */
+  -webkit-text-decoration: underline dotted;
+     -moz-text-decoration: underline dotted;
+          text-decoration: underline dotted;
+  /* 2 */
+}
+
+/**
+ * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
+ */
+b,
+strong {
+  font-weight: inherit;
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+b,
+strong {
+  font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+code,
+kbd,
+samp {
+  font-family: monospace, monospace;
+  /* 1 */
+  font-size: 1em;
+  /* 2 */
+}
+
+/**
+ * Add the correct font style in Android 4.3-.
+ */
+dfn {
+  font-style: italic;
+}
+
+/**
+ * Add the correct background and color in IE 9-.
+ */
+mark {
+  background-color: #ff0;
+  color: #000;
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+small {
+  font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+sup {
+  top: -0.5em;
+}
+
+/* Embedded content
+   ========================================================================== */
+/**
+ * Add the correct display in IE 9-.
+ */
+audio,
+video {
+  display: inline-block;
+}
+
+/**
+ * Add the correct display in iOS 4-7.
+ */
+audio:not([controls]) {
+  display: none;
+  height: 0;
+}
+
+/**
+ * Remove the border on images inside links in IE 10-.
+ */
+img {
+  border-style: none;
+}
+
+/**
+ * Hide the overflow in IE.
+ */
+svg:not(:root) {
+  overflow: hidden;
+}
+
+/* Forms
+   ========================================================================== */
+/**
+ * 1. Change the font styles in all browsers (opinionated).
+ * 2. Remove the margin in Firefox and Safari.
+ */
+button,
+input,
+optgroup,
+select,
+textarea {
+  font-family: sans-serif;
+  /* 1 */
+  font-size: 100%;
+  /* 1 */
+  line-height: 1.15;
+  /* 1 */
+  margin: 0;
+  /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+button,
+input {
+  /* 1 */
+  overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+button,
+select {
+  /* 1 */
+  text-transform: none;
+}
+
+/**
+ * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+ *    controls in Android 4.
+ * 2. Correct the inability to style clickable types in iOS and Safari.
+ */
+button,
+html [type="button"],
+[type="reset"],
+[type="submit"] {
+  -webkit-appearance: button;
+  /* 2 */
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+  border-style: none;
+  padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+  outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+fieldset {
+  padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ *    `fieldset` elements in all browsers.
+ */
+legend {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  /* 1 */
+  color: inherit;
+  /* 2 */
+  display: table;
+  /* 1 */
+  max-width: 100%;
+  /* 1 */
+  padding: 0;
+  /* 3 */
+  white-space: normal;
+  /* 1 */
+}
+
+/**
+ * 1. Add the correct display in IE 9-.
+ * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+progress {
+  display: inline-block;
+  /* 1 */
+  vertical-align: baseline;
+  /* 2 */
+}
+
+/**
+ * Remove the default vertical scrollbar in IE.
+ */
+textarea {
+  overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10-.
+ * 2. Remove the padding in IE 10-.
+ */
+[type="checkbox"],
+[type="radio"] {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  /* 1 */
+  padding: 0;
+  /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+[type="search"] {
+  -webkit-appearance: textfield;
+  /* 1 */
+  outline-offset: -2px;
+  /* 2 */
+}
+
+/**
+ * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
+ */
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+::-webkit-file-upload-button {
+  -webkit-appearance: button;
+  /* 1 */
+  font: inherit;
+  /* 2 */
+}
+
+/* Interactive
+   ========================================================================== */
+/*
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in Edge, IE, and Firefox.
+ */
+details,
+menu {
+  display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+summary {
+  display: list-item;
+}
+
+/* Scripting
+   ========================================================================== */
+/**
+ * Add the correct display in IE 9-.
+ */
+canvas {
+  display: inline-block;
+}
+
+/**
+ * Add the correct display in IE.
+ */
+template {
+  display: none;
+}
+
+/* Hidden
+   ========================================================================== */
+/**
+ * Add the correct display in IE 10-.
+ */
+[hidden] {
+  display: none;
+}
+
+html {
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+*, *:before, *:after {
+  -webkit-box-sizing: inherit;
+          box-sizing: inherit;
+}
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+}
+
+ul:not(.browser-default) {
+  padding-left: 0;
+  list-style-type: none;
+}
+
+ul:not(.browser-default) > li {
+  list-style-type: none;
+}
+
+a {
+  color: #039be5;
+  text-decoration: none;
+  -webkit-tap-highlight-color: transparent;
+}
+
+.valign-wrapper {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+      -ms-flex-align: center;
+          align-items: center;
+}
+
+.clearfix {
+  clear: both;
+}
+
+.z-depth-0 {
+  -webkit-box-shadow: none !important;
+          box-shadow: none !important;
+}
+
+/* 2dp elevation modified*/
+.z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-small, .btn-floating, .dropdown-content, .collapsible, .sidenav {
+  -webkit-box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
+          box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
+}
+
+.z-depth-1-half, .btn:hover, .btn-large:hover, .btn-small:hover, .btn-floating:hover {
+  -webkit-box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2);
+}
+
+/* 6dp elevation modified*/
+.z-depth-2 {
+  -webkit-box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
+          box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
+}
+
+/* 12dp elevation modified*/
+.z-depth-3 {
+  -webkit-box-shadow: 0 8px 17px 2px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 8px 17px 2px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2);
+}
+
+/* 16dp elevation */
+.z-depth-4 {
+  -webkit-box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -7px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -7px rgba(0, 0, 0, 0.2);
+}
+
+/* 24dp elevation */
+.z-depth-5, .modal {
+  -webkit-box-shadow: 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12), 0 11px 15px -7px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12), 0 11px 15px -7px rgba(0, 0, 0, 0.2);
+}
+
+.hoverable {
+  -webkit-transition: -webkit-box-shadow .25s;
+  transition: -webkit-box-shadow .25s;
+  transition: box-shadow .25s;
+  transition: box-shadow .25s, -webkit-box-shadow .25s;
+}
+
+.hoverable:hover {
+  -webkit-box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
+          box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
+}
+
+.divider {
+  height: 1px;
+  overflow: hidden;
+  background-color: #e0e0e0;
+}
+
+blockquote {
+  margin: 20px 0;
+  padding-left: 1.5rem;
+  border-left: 5px solid #ee6e73;
+}
+
+i {
+  line-height: inherit;
+}
+
+i.left {
+  float: left;
+  margin-right: 15px;
+}
+
+i.right {
+  float: right;
+  margin-left: 15px;
+}
+
+i.tiny {
+  font-size: 1rem;
+}
+
+i.small {
+  font-size: 2rem;
+}
+
+i.medium {
+  font-size: 4rem;
+}
+
+i.large {
+  font-size: 6rem;
+}
+
+img.responsive-img,
+video.responsive-video {
+  max-width: 100%;
+  height: auto;
+}
+
+.pagination li {
+  display: inline-block;
+  border-radius: 2px;
+  text-align: center;
+  vertical-align: top;
+  height: 30px;
+}
+
+.pagination li a {
+  color: #444;
+  display: inline-block;
+  font-size: 1.2rem;
+  padding: 0 10px;
+  line-height: 30px;
+}
+
+.pagination li.active a {
+  color: #fff;
+}
+
+.pagination li.active {
+  background-color: #ee6e73;
+}
+
+.pagination li.disabled a {
+  cursor: default;
+  color: #999;
+}
+
+.pagination li i {
+  font-size: 2rem;
+}
+
+.pagination li.pages ul li {
+  display: inline-block;
+  float: none;
+}
+
+@media only screen and (max-width: 992px) {
+  .pagination {
+    width: 100%;
+  }
+  .pagination li.prev,
+  .pagination li.next {
+    width: 10%;
+  }
+  .pagination li.pages {
+    width: 80%;
+    overflow: hidden;
+    white-space: nowrap;
+  }
+}
+
+.breadcrumb {
+  font-size: 18px;
+  color: rgba(255, 255, 255, 0.7);
+}
+
+.breadcrumb i,
+.breadcrumb [class^="mdi-"], .breadcrumb [class*="mdi-"],
+.breadcrumb i.material-icons {
+  display: inline-block;
+  float: left;
+  font-size: 24px;
+}
+
+.breadcrumb:before {
+  content: '\E5CC';
+  color: rgba(255, 255, 255, 0.7);
+  vertical-align: top;
+  display: inline-block;
+  font-family: 'Material Icons';
+  font-weight: normal;
+  font-style: normal;
+  font-size: 25px;
+  margin: 0 10px 0 8px;
+  -webkit-font-smoothing: antialiased;
+}
+
+.breadcrumb:first-child:before {
+  display: none;
+}
+
+.breadcrumb:last-child {
+  color: #fff;
+}
+
+.parallax-container {
+  position: relative;
+  overflow: hidden;
+  height: 500px;
+}
+
+.parallax-container .parallax {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: -1;
+}
+
+.parallax-container .parallax img {
+  opacity: 0;
+  position: absolute;
+  left: 50%;
+  bottom: 0;
+  min-width: 100%;
+  min-height: 100%;
+  -webkit-transform: translate3d(0, 0, 0);
+          transform: translate3d(0, 0, 0);
+  -webkit-transform: translateX(-50%);
+          transform: translateX(-50%);
+}
+
+.pin-top, .pin-bottom {
+  position: relative;
+}
+
+.pinned {
+  position: fixed !important;
+}
+
+/*********************
+  Transition Classes
+**********************/
+ul.staggered-list li {
+  opacity: 0;
+}
+
+.fade-in {
+  opacity: 0;
+  -webkit-transform-origin: 0 50%;
+          transform-origin: 0 50%;
+}
+
+/*********************
+  Media Query Classes
+**********************/
+@media only screen and (max-width: 600px) {
+  .hide-on-small-only, .hide-on-small-and-down {
+    display: none !important;
+  }
+}
+
+@media only screen and (max-width: 992px) {
+  .hide-on-med-and-down {
+    display: none !important;
+  }
+}
+
+@media only screen and (min-width: 601px) {
+  .hide-on-med-and-up {
+    display: none !important;
+  }
+}
+
+@media only screen and (min-width: 600px) and (max-width: 992px) {
+  .hide-on-med-only {
+    display: none !important;
+  }
+}
+
+@media only screen and (min-width: 993px) {
+  .hide-on-large-only {
+    display: none !important;
+  }
+}
+
+@media only screen and (min-width: 1201px) {
+  .hide-on-extra-large-only {
+    display: none !important;
+  }
+}
+
+@media only screen and (min-width: 1201px) {
+  .show-on-extra-large {
+    display: block !important;
+  }
+}
+
+@media only screen and (min-width: 993px) {
+  .show-on-large {
+    display: block !important;
+  }
+}
+
+@media only screen and (min-width: 600px) and (max-width: 992px) {
+  .show-on-medium {
+    display: block !important;
+  }
+}
+
+@media only screen and (max-width: 600px) {
+  .show-on-small {
+    display: block !important;
+  }
+}
+
+@media only screen and (min-width: 601px) {
+  .show-on-medium-and-up {
+    display: block !important;
+  }
+}
+
+@media only screen and (max-width: 992px) {
+  .show-on-medium-and-down {
+    display: block !important;
+  }
+}
+
+@media only screen and (max-width: 600px) {
+  .center-on-small-only {
+    text-align: center;
+  }
+}
+
+.page-footer {
+  padding-top: 20px;
+  color: #fff;
+  background-color: #ee6e73;
+}
+
+.page-footer .footer-copyright {
+  overflow: hidden;
+  min-height: 50px;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+      -ms-flex-align: center;
+          align-items: center;
+  -webkit-box-pack: justify;
+  -webkit-justify-content: space-between;
+      -ms-flex-pack: justify;
+          justify-content: space-between;
+  padding: 10px 0px;
+  color: rgba(255, 255, 255, 0.8);
+  background-color: rgba(51, 51, 51, 0.08);
+}
+
+table, th, td {
+  border: none;
+}
+
+table {
+  width: 100%;
+  display: table;
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+table.striped tr {
+  border-bottom: none;
+}
+
+table.striped > tbody > tr:nth-child(odd) {
+  background-color: rgba(242, 242, 242, 0.5);
+}
+
+table.striped > tbody > tr > td {
+  border-radius: 0;
+}
+
+table.highlight > tbody > tr {
+  -webkit-transition: background-color .25s ease;
+  transition: background-color .25s ease;
+}
+
+table.highlight > tbody > tr:hover {
+  background-color: rgba(242, 242, 242, 0.5);
+}
+
+table.centered thead tr th, table.centered tbody tr td {
+  text-align: center;
+}
+
+tr {
+  border-bottom: 1px solid rgba(0, 0, 0, 0.12);
+}
+
+td, th {
+  padding: 15px 5px;
+  display: table-cell;
+  text-align: left;
+  vertical-align: middle;
+  border-radius: 2px;
+}
+
+@media only screen and (max-width: 992px) {
+  table.responsive-table {
+    width: 100%;
+    border-collapse: collapse;
+    border-spacing: 0;
+    display: block;
+    position: relative;
+    /* sort out borders */
+  }
+  table.responsive-table td:empty:before {
+    content: '\00a0';
+  }
+  table.responsive-table th,
+  table.responsive-table td {
+    margin: 0;
+    vertical-align: top;
+  }
+  table.responsive-table th {
+    text-align: left;
+  }
+  table.responsive-table thead {
+    display: block;
+    float: left;
+  }
+  table.responsive-table thead tr {
+    display: block;
+    padding: 0 10px 0 0;
+  }
+  table.responsive-table thead tr th::before {
+    content: "\00a0";
+  }
+  table.responsive-table tbody {
+    display: block;
+    width: auto;
+    position: relative;
+    overflow-x: auto;
+    white-space: nowrap;
+  }
+  table.responsive-table tbody tr {
+    display: inline-block;
+    vertical-align: top;
+  }
+  table.responsive-table th {
+    display: block;
+    text-align: right;
+  }
+  table.responsive-table td {
+    display: block;
+    min-height: 1.25em;
+    text-align: left;
+  }
+  table.responsive-table tr {
+    border-bottom: none;
+    padding: 0 10px;
+  }
+  table.responsive-table thead {
+    border: 0;
+    border-right: 1px solid rgba(0, 0, 0, 0.12);
+  }
+}
+
+.collection {
+  margin: 0.5rem 0 1rem 0;
+  border: 1px solid #e0e0e0;
+  border-radius: 2px;
+  overflow: hidden;
+  position: relative;
+}
+
+.collection .collection-item {
+  background-color: #fff;
+  line-height: 1.5rem;
+  padding: 10px 20px;
+  margin: 0;
+  border-bottom: 1px solid #e0e0e0;
+}
+
+.collection .collection-item.avatar {
+  min-height: 84px;
+  padding-left: 72px;
+  position: relative;
+}
+
+.collection .collection-item.avatar:not(.circle-clipper) > .circle,
+.collection .collection-item.avatar :not(.circle-clipper) > .circle {
+  position: absolute;
+  width: 42px;
+  height: 42px;
+  overflow: hidden;
+  left: 15px;
+  display: inline-block;
+  vertical-align: middle;
+}
+
+.collection .collection-item.avatar i.circle {
+  font-size: 18px;
+  line-height: 42px;
+  color: #fff;
+  background-color: #999;
+  text-align: center;
+}
+
+.collection .collection-item.avatar .title {
+  font-size: 16px;
+}
+
+.collection .collection-item.avatar p {
+  margin: 0;
+}
+
+.collection .collection-item.avatar .secondary-content {
+  position: absolute;
+  top: 16px;
+  right: 16px;
+}
+
+.collection .collection-item:last-child {
+  border-bottom: none;
+}
+
+.collection .collection-item.active {
+  background-color: #26a69a;
+  color: #eafaf9;
+}
+
+.collection .collection-item.active .secondary-content {
+  color: #fff;
+}
+
+.collection a.collection-item {
+  display: block;
+  -webkit-transition: .25s;
+  transition: .25s;
+  color: #26a69a;
+}
+
+.collection a.collection-item:not(.active):hover {
+  background-color: #ddd;
+}
+
+.collection.with-header .collection-header {
+  background-color: #fff;
+  border-bottom: 1px solid #e0e0e0;
+  padding: 10px 20px;
+}
+
+.collection.with-header .collection-item {
+  padding-left: 30px;
+}
+
+.collection.with-header .collection-item.avatar {
+  padding-left: 72px;
+}
+
+.secondary-content {
+  float: right;
+  color: #26a69a;
+}
+
+.collapsible .collection {
+  margin: 0;
+  border: none;
+}
+
+.video-container {
+  position: relative;
+  padding-bottom: 56.25%;
+  height: 0;
+  overflow: hidden;
+}
+
+.video-container iframe, .video-container object, .video-container embed {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+}
+
+.progress {
+  position: relative;
+  height: 4px;
+  display: block;
+  width: 100%;
+  background-color: #acece6;
+  border-radius: 2px;
+  margin: 0.5rem 0 1rem 0;
+  overflow: hidden;
+}
+
+.progress .determinate {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  background-color: #26a69a;
+  -webkit-transition: width .3s linear;
+  transition: width .3s linear;
+}
+
+.progress .indeterminate {
+  background-color: #26a69a;
+}
+
+.progress .indeterminate:before {
+  content: '';
+  position: absolute;
+  background-color: inherit;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  will-change: left, right;
+  -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
+          animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
+}
+
+.progress .indeterminate:after {
+  content: '';
+  position: absolute;
+  background-color: inherit;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  will-change: left, right;
+  -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;
+          animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;
+  -webkit-animation-delay: 1.15s;
+          animation-delay: 1.15s;
+}
+
+@-webkit-keyframes indeterminate {
+  0% {
+    left: -35%;
+    right: 100%;
+  }
+  60% {
+    left: 100%;
+    right: -90%;
+  }
+  100% {
+    left: 100%;
+    right: -90%;
+  }
+}
+
+@keyframes indeterminate {
+  0% {
+    left: -35%;
+    right: 100%;
+  }
+  60% {
+    left: 100%;
+    right: -90%;
+  }
+  100% {
+    left: 100%;
+    right: -90%;
+  }
+}
+
+@-webkit-keyframes indeterminate-short {
+  0% {
+    left: -200%;
+    right: 100%;
+  }
+  60% {
+    left: 107%;
+    right: -8%;
+  }
+  100% {
+    left: 107%;
+    right: -8%;
+  }
+}
+
+@keyframes indeterminate-short {
+  0% {
+    left: -200%;
+    right: 100%;
+  }
+  60% {
+    left: 107%;
+    right: -8%;
+  }
+  100% {
+    left: 107%;
+    right: -8%;
+  }
+}
+
+/*******************
+  Utility Classes
+*******************/
+.hide {
+  display: none !important;
+}
+
+.left-align {
+  text-align: left;
+}
+
+.right-align {
+  text-align: right;
+}
+
+.center, .center-align {
+  text-align: center;
+}
+
+.left {
+  float: left !important;
+}
+
+.right {
+  float: right !important;
+}
+
+.no-select, input[type=range],
+input[type=range] + .thumb {
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.circle {
+  border-radius: 50%;
+}
+
+.center-block {
+  display: block;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+.truncate {
+  display: block;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.no-padding {
+  padding: 0 !important;
+}
+
+span.badge {
+  min-width: 3rem;
+  padding: 0 6px;
+  margin-left: 14px;
+  text-align: center;
+  font-size: 1rem;
+  line-height: 22px;
+  height: 22px;
+  color: #757575;
+  float: right;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+span.badge.new {
+  font-weight: 300;
+  font-size: 0.8rem;
+  color: #fff;
+  background-color: #26a69a;
+  border-radius: 2px;
+}
+
+span.badge.new:after {
+  content: " new";
+}
+
+span.badge[data-badge-caption]::after {
+  content: " " attr(data-badge-caption);
+}
+
+nav ul a span.badge {
+  display: inline-block;
+  float: none;
+  margin-left: 4px;
+  line-height: 22px;
+  height: 22px;
+  -webkit-font-smoothing: auto;
+}
+
+.collection-item span.badge {
+  margin-top: calc(0.75rem - 11px);
+}
+
+.collapsible span.badge {
+  margin-left: auto;
+}
+
+.sidenav span.badge {
+  margin-top: calc(24px - 11px);
+}
+
+table span.badge {
+  display: inline-block;
+  float: none;
+  margin-left: auto;
+}
+
+/* This is needed for some mobile phones to display the Google Icon font properly */
+.material-icons {
+  text-rendering: optimizeLegibility;
+  -webkit-font-feature-settings: 'liga';
+     -moz-font-feature-settings: 'liga';
+          font-feature-settings: 'liga';
+}
+
+.container {
+  margin: 0 auto;
+  max-width: 1280px;
+  width: 90%;
+}
+
+@media only screen and (min-width: 601px) {
+  .container {
+    width: 85%;
+  }
+}
+
+@media only screen and (min-width: 993px) {
+  .container {
+    width: 70%;
+  }
+}
+
+.col .row {
+  margin-left: -0.75rem;
+  margin-right: -0.75rem;
+}
+
+.section {
+  padding-top: 1rem;
+  padding-bottom: 1rem;
+}
+
+.section.no-pad {
+  padding: 0;
+}
+
+.section.no-pad-bot {
+  padding-bottom: 0;
+}
+
+.section.no-pad-top {
+  padding-top: 0;
+}
+
+.row {
+  margin-left: auto;
+  margin-right: auto;
+  margin-bottom: 20px;
+}
+
+.row:after {
+  content: "";
+  display: table;
+  clear: both;
+}
+
+.row .col {
+  float: left;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  padding: 0 0.75rem;
+  min-height: 1px;
+}
+
+.row .col[class*="push-"], .row .col[class*="pull-"] {
+  position: relative;
+}
+
+.row .col.s1 {
+  width: 8.3333333333%;
+  margin-left: auto;
+  left: auto;
+  right: auto;
+}
+
+.row .col.s2 {
+  width: 16.6666666667%;
+  margin-left: auto;
+  left: auto;
+  right: auto;
+}
+
+.row .col.s3 {
+  width: 25%;
+  margin-left: auto;
+  left: auto;
+  right: auto;
+}
+
+.row .col.s4 {
+  width: 33.3333333333%;
+  margin-left: auto;
+  left: auto;
+  right: auto;
+}
+
+.row .col.s5 {
+  width: 41.6666666667%;
+  margin-left: auto;
+  left: auto;
+  right: auto;
+}
+
+.row .col.s6 {
+  width: 50%;
+  margin-left: auto;
+  left: auto;
+  right: auto;
+}
+
+.row .col.s7 {
+  width: 58.3333333333%;
+  margin-left: auto;
+  left: auto;
+  right: auto;
+}
+
+.row .col.s8 {
+  width: 66.6666666667%;
+  margin-left: auto;
+  left: auto;
+  right: auto;
+}
+
+.row .col.s9 {
+  width: 75%;
+  margin-left: auto;
+  left: auto;
+  right: auto;
+}
+
+.row .col.s10 {
+  width: 83.3333333333%;
+  margin-left: auto;
+  left: auto;
+  right: auto;
+}
+
+.row .col.s11 {
+  width: 91.6666666667%;
+  margin-left: auto;
+  left: auto;
+  right: auto;
+}
+
+.row .col.s12 {
+  width: 100%;
+  margin-left: auto;
+  left: auto;
+  right: auto;
+}
+
+.row .col.offset-s1 {
+  margin-left: 8.3333333333%;
+}
+
+.row .col.pull-s1 {
+  right: 8.3333333333%;
+}
+
+.row .col.push-s1 {
+  left: 8.3333333333%;
+}
+
+.row .col.offset-s2 {
+  margin-left: 16.6666666667%;
+}
+
+.row .col.pull-s2 {
+  right: 16.6666666667%;
+}
+
+.row .col.push-s2 {
+  left: 16.6666666667%;
+}
+
+.row .col.offset-s3 {
+  margin-left: 25%;
+}
+
+.row .col.pull-s3 {
+  right: 25%;
+}
+
+.row .col.push-s3 {
+  left: 25%;
+}
+
+.row .col.offset-s4 {
+  margin-left: 33.3333333333%;
+}
+
+.row .col.pull-s4 {
+  right: 33.3333333333%;
+}
+
+.row .col.push-s4 {
+  left: 33.3333333333%;
+}
+
+.row .col.offset-s5 {
+  margin-left: 41.6666666667%;
+}
+
+.row .col.pull-s5 {
+  right: 41.6666666667%;
+}
+
+.row .col.push-s5 {
+  left: 41.6666666667%;
+}
+
+.row .col.offset-s6 {
+  margin-left: 50%;
+}
+
+.row .col.pull-s6 {
+  right: 50%;
+}
+
+.row .col.push-s6 {
+  left: 50%;
+}
+
+.row .col.offset-s7 {
+  margin-left: 58.3333333333%;
+}
+
+.row .col.pull-s7 {
+  right: 58.3333333333%;
+}
+
+.row .col.push-s7 {
+  left: 58.3333333333%;
+}
+
+.row .col.offset-s8 {
+  margin-left: 66.6666666667%;
+}
+
+.row .col.pull-s8 {
+  right: 66.6666666667%;
+}
+
+.row .col.push-s8 {
+  left: 66.6666666667%;
+}
+
+.row .col.offset-s9 {
+  margin-left: 75%;
+}
+
+.row .col.pull-s9 {
+  right: 75%;
+}
+
+.row .col.push-s9 {
+  left: 75%;
+}
+
+.row .col.offset-s10 {
+  margin-left: 83.3333333333%;
+}
+
+.row .col.pull-s10 {
+  right: 83.3333333333%;
+}
+
+.row .col.push-s10 {
+  left: 83.3333333333%;
+}
+
+.row .col.offset-s11 {
+  margin-left: 91.6666666667%;
+}
+
+.row .col.pull-s11 {
+  right: 91.6666666667%;
+}
+
+.row .col.push-s11 {
+  left: 91.6666666667%;
+}
+
+.row .col.offset-s12 {
+  margin-left: 100%;
+}
+
+.row .col.pull-s12 {
+  right: 100%;
+}
+
+.row .col.push-s12 {
+  left: 100%;
+}
+
+@media only screen and (min-width: 601px) {
+  .row .col.m1 {
+    width: 8.3333333333%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.m2 {
+    width: 16.6666666667%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.m3 {
+    width: 25%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.m4 {
+    width: 33.3333333333%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.m5 {
+    width: 41.6666666667%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.m6 {
+    width: 50%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.m7 {
+    width: 58.3333333333%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.m8 {
+    width: 66.6666666667%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.m9 {
+    width: 75%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.m10 {
+    width: 83.3333333333%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.m11 {
+    width: 91.6666666667%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.m12 {
+    width: 100%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.offset-m1 {
+    margin-left: 8.3333333333%;
+  }
+  .row .col.pull-m1 {
+    right: 8.3333333333%;
+  }
+  .row .col.push-m1 {
+    left: 8.3333333333%;
+  }
+  .row .col.offset-m2 {
+    margin-left: 16.6666666667%;
+  }
+  .row .col.pull-m2 {
+    right: 16.6666666667%;
+  }
+  .row .col.push-m2 {
+    left: 16.6666666667%;
+  }
+  .row .col.offset-m3 {
+    margin-left: 25%;
+  }
+  .row .col.pull-m3 {
+    right: 25%;
+  }
+  .row .col.push-m3 {
+    left: 25%;
+  }
+  .row .col.offset-m4 {
+    margin-left: 33.3333333333%;
+  }
+  .row .col.pull-m4 {
+    right: 33.3333333333%;
+  }
+  .row .col.push-m4 {
+    left: 33.3333333333%;
+  }
+  .row .col.offset-m5 {
+    margin-left: 41.6666666667%;
+  }
+  .row .col.pull-m5 {
+    right: 41.6666666667%;
+  }
+  .row .col.push-m5 {
+    left: 41.6666666667%;
+  }
+  .row .col.offset-m6 {
+    margin-left: 50%;
+  }
+  .row .col.pull-m6 {
+    right: 50%;
+  }
+  .row .col.push-m6 {
+    left: 50%;
+  }
+  .row .col.offset-m7 {
+    margin-left: 58.3333333333%;
+  }
+  .row .col.pull-m7 {
+    right: 58.3333333333%;
+  }
+  .row .col.push-m7 {
+    left: 58.3333333333%;
+  }
+  .row .col.offset-m8 {
+    margin-left: 66.6666666667%;
+  }
+  .row .col.pull-m8 {
+    right: 66.6666666667%;
+  }
+  .row .col.push-m8 {
+    left: 66.6666666667%;
+  }
+  .row .col.offset-m9 {
+    margin-left: 75%;
+  }
+  .row .col.pull-m9 {
+    right: 75%;
+  }
+  .row .col.push-m9 {
+    left: 75%;
+  }
+  .row .col.offset-m10 {
+    margin-left: 83.3333333333%;
+  }
+  .row .col.pull-m10 {
+    right: 83.3333333333%;
+  }
+  .row .col.push-m10 {
+    left: 83.3333333333%;
+  }
+  .row .col.offset-m11 {
+    margin-left: 91.6666666667%;
+  }
+  .row .col.pull-m11 {
+    right: 91.6666666667%;
+  }
+  .row .col.push-m11 {
+    left: 91.6666666667%;
+  }
+  .row .col.offset-m12 {
+    margin-left: 100%;
+  }
+  .row .col.pull-m12 {
+    right: 100%;
+  }
+  .row .col.push-m12 {
+    left: 100%;
+  }
+}
+
+@media only screen and (min-width: 993px) {
+  .row .col.l1 {
+    width: 8.3333333333%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.l2 {
+    width: 16.6666666667%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.l3 {
+    width: 25%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.l4 {
+    width: 33.3333333333%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.l5 {
+    width: 41.6666666667%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.l6 {
+    width: 50%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.l7 {
+    width: 58.3333333333%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.l8 {
+    width: 66.6666666667%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.l9 {
+    width: 75%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.l10 {
+    width: 83.3333333333%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.l11 {
+    width: 91.6666666667%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.l12 {
+    width: 100%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.offset-l1 {
+    margin-left: 8.3333333333%;
+  }
+  .row .col.pull-l1 {
+    right: 8.3333333333%;
+  }
+  .row .col.push-l1 {
+    left: 8.3333333333%;
+  }
+  .row .col.offset-l2 {
+    margin-left: 16.6666666667%;
+  }
+  .row .col.pull-l2 {
+    right: 16.6666666667%;
+  }
+  .row .col.push-l2 {
+    left: 16.6666666667%;
+  }
+  .row .col.offset-l3 {
+    margin-left: 25%;
+  }
+  .row .col.pull-l3 {
+    right: 25%;
+  }
+  .row .col.push-l3 {
+    left: 25%;
+  }
+  .row .col.offset-l4 {
+    margin-left: 33.3333333333%;
+  }
+  .row .col.pull-l4 {
+    right: 33.3333333333%;
+  }
+  .row .col.push-l4 {
+    left: 33.3333333333%;
+  }
+  .row .col.offset-l5 {
+    margin-left: 41.6666666667%;
+  }
+  .row .col.pull-l5 {
+    right: 41.6666666667%;
+  }
+  .row .col.push-l5 {
+    left: 41.6666666667%;
+  }
+  .row .col.offset-l6 {
+    margin-left: 50%;
+  }
+  .row .col.pull-l6 {
+    right: 50%;
+  }
+  .row .col.push-l6 {
+    left: 50%;
+  }
+  .row .col.offset-l7 {
+    margin-left: 58.3333333333%;
+  }
+  .row .col.pull-l7 {
+    right: 58.3333333333%;
+  }
+  .row .col.push-l7 {
+    left: 58.3333333333%;
+  }
+  .row .col.offset-l8 {
+    margin-left: 66.6666666667%;
+  }
+  .row .col.pull-l8 {
+    right: 66.6666666667%;
+  }
+  .row .col.push-l8 {
+    left: 66.6666666667%;
+  }
+  .row .col.offset-l9 {
+    margin-left: 75%;
+  }
+  .row .col.pull-l9 {
+    right: 75%;
+  }
+  .row .col.push-l9 {
+    left: 75%;
+  }
+  .row .col.offset-l10 {
+    margin-left: 83.3333333333%;
+  }
+  .row .col.pull-l10 {
+    right: 83.3333333333%;
+  }
+  .row .col.push-l10 {
+    left: 83.3333333333%;
+  }
+  .row .col.offset-l11 {
+    margin-left: 91.6666666667%;
+  }
+  .row .col.pull-l11 {
+    right: 91.6666666667%;
+  }
+  .row .col.push-l11 {
+    left: 91.6666666667%;
+  }
+  .row .col.offset-l12 {
+    margin-left: 100%;
+  }
+  .row .col.pull-l12 {
+    right: 100%;
+  }
+  .row .col.push-l12 {
+    left: 100%;
+  }
+}
+
+@media only screen and (min-width: 1201px) {
+  .row .col.xl1 {
+    width: 8.3333333333%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.xl2 {
+    width: 16.6666666667%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.xl3 {
+    width: 25%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.xl4 {
+    width: 33.3333333333%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.xl5 {
+    width: 41.6666666667%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.xl6 {
+    width: 50%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.xl7 {
+    width: 58.3333333333%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.xl8 {
+    width: 66.6666666667%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.xl9 {
+    width: 75%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.xl10 {
+    width: 83.3333333333%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.xl11 {
+    width: 91.6666666667%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.xl12 {
+    width: 100%;
+    margin-left: auto;
+    left: auto;
+    right: auto;
+  }
+  .row .col.offset-xl1 {
+    margin-left: 8.3333333333%;
+  }
+  .row .col.pull-xl1 {
+    right: 8.3333333333%;
+  }
+  .row .col.push-xl1 {
+    left: 8.3333333333%;
+  }
+  .row .col.offset-xl2 {
+    margin-left: 16.6666666667%;
+  }
+  .row .col.pull-xl2 {
+    right: 16.6666666667%;
+  }
+  .row .col.push-xl2 {
+    left: 16.6666666667%;
+  }
+  .row .col.offset-xl3 {
+    margin-left: 25%;
+  }
+  .row .col.pull-xl3 {
+    right: 25%;
+  }
+  .row .col.push-xl3 {
+    left: 25%;
+  }
+  .row .col.offset-xl4 {
+    margin-left: 33.3333333333%;
+  }
+  .row .col.pull-xl4 {
+    right: 33.3333333333%;
+  }
+  .row .col.push-xl4 {
+    left: 33.3333333333%;
+  }
+  .row .col.offset-xl5 {
+    margin-left: 41.6666666667%;
+  }
+  .row .col.pull-xl5 {
+    right: 41.6666666667%;
+  }
+  .row .col.push-xl5 {
+    left: 41.6666666667%;
+  }
+  .row .col.offset-xl6 {
+    margin-left: 50%;
+  }
+  .row .col.pull-xl6 {
+    right: 50%;
+  }
+  .row .col.push-xl6 {
+    left: 50%;
+  }
+  .row .col.offset-xl7 {
+    margin-left: 58.3333333333%;
+  }
+  .row .col.pull-xl7 {
+    right: 58.3333333333%;
+  }
+  .row .col.push-xl7 {
+    left: 58.3333333333%;
+  }
+  .row .col.offset-xl8 {
+    margin-left: 66.6666666667%;
+  }
+  .row .col.pull-xl8 {
+    right: 66.6666666667%;
+  }
+  .row .col.push-xl8 {
+    left: 66.6666666667%;
+  }
+  .row .col.offset-xl9 {
+    margin-left: 75%;
+  }
+  .row .col.pull-xl9 {
+    right: 75%;
+  }
+  .row .col.push-xl9 {
+    left: 75%;
+  }
+  .row .col.offset-xl10 {
+    margin-left: 83.3333333333%;
+  }
+  .row .col.pull-xl10 {
+    right: 83.3333333333%;
+  }
+  .row .col.push-xl10 {
+    left: 83.3333333333%;
+  }
+  .row .col.offset-xl11 {
+    margin-left: 91.6666666667%;
+  }
+  .row .col.pull-xl11 {
+    right: 91.6666666667%;
+  }
+  .row .col.push-xl11 {
+    left: 91.6666666667%;
+  }
+  .row .col.offset-xl12 {
+    margin-left: 100%;
+  }
+  .row .col.pull-xl12 {
+    right: 100%;
+  }
+  .row .col.push-xl12 {
+    left: 100%;
+  }
+}
+
+nav {
+  color: #fff;
+  background-color: #ee6e73;
+  width: 100%;
+  height: 56px;
+  line-height: 56px;
+}
+
+nav.nav-extended {
+  height: auto;
+}
+
+nav.nav-extended .nav-wrapper {
+  min-height: 56px;
+  height: auto;
+}
+
+nav.nav-extended .nav-content {
+  position: relative;
+  line-height: normal;
+}
+
+nav a {
+  color: #fff;
+}
+
+nav i,
+nav [class^="mdi-"], nav [class*="mdi-"],
+nav i.material-icons {
+  display: block;
+  font-size: 24px;
+  height: 56px;
+  line-height: 56px;
+}
+
+nav .nav-wrapper {
+  position: relative;
+  height: 100%;
+}
+
+@media only screen and (min-width: 993px) {
+  nav a.sidenav-trigger {
+    display: none;
+  }
+}
+
+nav .sidenav-trigger {
+  float: left;
+  position: relative;
+  z-index: 1;
+  height: 56px;
+  margin: 0 18px;
+}
+
+nav .sidenav-trigger i {
+  height: 56px;
+  line-height: 56px;
+}
+
+nav .brand-logo {
+  position: absolute;
+  color: #fff;
+  display: inline-block;
+  font-size: 2.1rem;
+  padding: 0;
+}
+
+nav .brand-logo.center {
+  left: 50%;
+  -webkit-transform: translateX(-50%);
+          transform: translateX(-50%);
+}
+
+@media only screen and (max-width: 992px) {
+  nav .brand-logo {
+    left: 50%;
+    -webkit-transform: translateX(-50%);
+            transform: translateX(-50%);
+  }
+  nav .brand-logo.left, nav .brand-logo.right {
+    padding: 0;
+    -webkit-transform: none;
+            transform: none;
+  }
+  nav .brand-logo.left {
+    left: 0.5rem;
+  }
+  nav .brand-logo.right {
+    right: 0.5rem;
+    left: auto;
+  }
+}
+
+nav .brand-logo.right {
+  right: 0.5rem;
+  padding: 0;
+}
+
+nav .brand-logo i,
+nav .brand-logo [class^="mdi-"], nav .brand-logo [class*="mdi-"],
+nav .brand-logo i.material-icons {
+  float: left;
+  margin-right: 15px;
+}
+
+nav .nav-title {
+  display: inline-block;
+  font-size: 32px;
+  padding: 28px 0;
+}
+
+nav ul {
+  margin: 0;
+}
+
+nav ul li {
+  -webkit-transition: background-color .3s;
+  transition: background-color .3s;
+  float: left;
+  padding: 0;
+}
+
+nav ul li.active {
+  background-color: rgba(0, 0, 0, 0.1);
+}
+
+nav ul a {
+  -webkit-transition: background-color .3s;
+  transition: background-color .3s;
+  font-size: 1rem;
+  color: #fff;
+  display: block;
+  padding: 0 15px;
+  cursor: pointer;
+}
+
+nav ul a.btn, nav ul a.btn-large, nav ul a.btn-small, nav ul a.btn-large, nav ul a.btn-flat, nav ul a.btn-floating {
+  margin-top: -2px;
+  margin-left: 15px;
+  margin-right: 15px;
+}
+
+nav ul a.btn > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-small > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-flat > .material-icons, nav ul a.btn-floating > .material-icons {
+  height: inherit;
+  line-height: inherit;
+}
+
+nav ul a:hover {
+  background-color: rgba(0, 0, 0, 0.1);
+}
+
+nav ul.left {
+  float: left;
+}
+
+nav form {
+  height: 100%;
+}
+
+nav .input-field {
+  margin: 0;
+  height: 100%;
+}
+
+nav .input-field input {
+  height: 100%;
+  font-size: 1.2rem;
+  border: none;
+  padding-left: 2rem;
+}
+
+nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid {
+  border: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+
+nav .input-field label {
+  top: 0;
+  left: 0;
+}
+
+nav .input-field label i {
+  color: rgba(255, 255, 255, 0.7);
+  -webkit-transition: color .3s;
+  transition: color .3s;
+}
+
+nav .input-field label.active i {
+  color: #fff;
+}
+
+.navbar-fixed {
+  position: relative;
+  height: 56px;
+  z-index: 997;
+}
+
+.navbar-fixed nav {
+  position: fixed;
+}
+
+@media only screen and (min-width: 601px) {
+  nav.nav-extended .nav-wrapper {
+    min-height: 64px;
+  }
+  nav, nav .nav-wrapper i, nav a.sidenav-trigger, nav a.sidenav-trigger i {
+    height: 64px;
+    line-height: 64px;
+  }
+  .navbar-fixed {
+    height: 64px;
+  }
+}
+
+a {
+  text-decoration: none;
+}
+
+html {
+  line-height: 1.5;
+  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+  font-weight: normal;
+  color: rgba(0, 0, 0, 0.87);
+}
+
+@media only screen and (min-width: 0) {
+  html {
+    font-size: 14px;
+  }
+}
+
+@media only screen and (min-width: 992px) {
+  html {
+    font-size: 14.5px;
+  }
+}
+
+@media only screen and (min-width: 1200px) {
+  html {
+    font-size: 15px;
+  }
+}
+
+h1, h2, h3, h4, h5, h6 {
+  font-weight: 400;
+  line-height: 1.3;
+}
+
+h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
+  font-weight: inherit;
+}
+
+h1 {
+  font-size: 4.2rem;
+  line-height: 110%;
+  margin: 2.8rem 0 1.68rem 0;
+}
+
+h2 {
+  font-size: 3.56rem;
+  line-height: 110%;
+  margin: 2.3733333333rem 0 1.424rem 0;
+}
+
+h3 {
+  font-size: 2.92rem;
+  line-height: 110%;
+  margin: 1.9466666667rem 0 1.168rem 0;
+}
+
+h4 {
+  font-size: 2.28rem;
+  line-height: 110%;
+  margin: 1.52rem 0 0.912rem 0;
+}
+
+h5 {
+  font-size: 1.64rem;
+  line-height: 110%;
+  margin: 1.0933333333rem 0 0.656rem 0;
+}
+
+h6 {
+  font-size: 1.15rem;
+  line-height: 110%;
+  margin: 0.7666666667rem 0 0.46rem 0;
+}
+
+em {
+  font-style: italic;
+}
+
+strong {
+  font-weight: 500;
+}
+
+small {
+  font-size: 75%;
+}
+
+.light {
+  font-weight: 300;
+}
+
+.thin {
+  font-weight: 200;
+}
+
+@media only screen and (min-width: 360px) {
+  .flow-text {
+    font-size: 1.2rem;
+  }
+}
+
+@media only screen and (min-width: 390px) {
+  .flow-text {
+    font-size: 1.224rem;
+  }
+}
+
+@media only screen and (min-width: 420px) {
+  .flow-text {
+    font-size: 1.248rem;
+  }
+}
+
+@media only screen and (min-width: 450px) {
+  .flow-text {
+    font-size: 1.272rem;
+  }
+}
+
+@media only screen and (min-width: 480px) {
+  .flow-text {
+    font-size: 1.296rem;
+  }
+}
+
+@media only screen and (min-width: 510px) {
+  .flow-text {
+    font-size: 1.32rem;
+  }
+}
+
+@media only screen and (min-width: 540px) {
+  .flow-text {
+    font-size: 1.344rem;
+  }
+}
+
+@media only screen and (min-width: 570px) {
+  .flow-text {
+    font-size: 1.368rem;
+  }
+}
+
+@media only screen and (min-width: 600px) {
+  .flow-text {
+    font-size: 1.392rem;
+  }
+}
+
+@media only screen and (min-width: 630px) {
+  .flow-text {
+    font-size: 1.416rem;
+  }
+}
+
+@media only screen and (min-width: 660px) {
+  .flow-text {
+    font-size: 1.44rem;
+  }
+}
+
+@media only screen and (min-width: 690px) {
+  .flow-text {
+    font-size: 1.464rem;
+  }
+}
+
+@media only screen and (min-width: 720px) {
+  .flow-text {
+    font-size: 1.488rem;
+  }
+}
+
+@media only screen and (min-width: 750px) {
+  .flow-text {
+    font-size: 1.512rem;
+  }
+}
+
+@media only screen and (min-width: 780px) {
+  .flow-text {
+    font-size: 1.536rem;
+  }
+}
+
+@media only screen and (min-width: 810px) {
+  .flow-text {
+    font-size: 1.56rem;
+  }
+}
+
+@media only screen and (min-width: 840px) {
+  .flow-text {
+    font-size: 1.584rem;
+  }
+}
+
+@media only screen and (min-width: 870px) {
+  .flow-text {
+    font-size: 1.608rem;
+  }
+}
+
+@media only screen and (min-width: 900px) {
+  .flow-text {
+    font-size: 1.632rem;
+  }
+}
+
+@media only screen and (min-width: 930px) {
+  .flow-text {
+    font-size: 1.656rem;
+  }
+}
+
+@media only screen and (min-width: 960px) {
+  .flow-text {
+    font-size: 1.68rem;
+  }
+}
+
+@media only screen and (max-width: 360px) {
+  .flow-text {
+    font-size: 1.2rem;
+  }
+}
+
+.scale-transition {
+  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;
+  transition: -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;
+  transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;
+  transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;
+}
+
+.scale-transition.scale-out {
+  -webkit-transform: scale(0);
+          transform: scale(0);
+  -webkit-transition: -webkit-transform .2s !important;
+  transition: -webkit-transform .2s !important;
+  transition: transform .2s !important;
+  transition: transform .2s, -webkit-transform .2s !important;
+}
+
+.scale-transition.scale-in {
+  -webkit-transform: scale(1);
+          transform: scale(1);
+}
+
+.card-panel {
+  -webkit-transition: -webkit-box-shadow .25s;
+  transition: -webkit-box-shadow .25s;
+  transition: box-shadow .25s;
+  transition: box-shadow .25s, -webkit-box-shadow .25s;
+  padding: 24px;
+  margin: 0.5rem 0 1rem 0;
+  border-radius: 2px;
+  background-color: #fff;
+}
+
+.card {
+  position: relative;
+  margin: 0.5rem 0 1rem 0;
+  background-color: #fff;
+  -webkit-transition: -webkit-box-shadow .25s;
+  transition: -webkit-box-shadow .25s;
+  transition: box-shadow .25s;
+  transition: box-shadow .25s, -webkit-box-shadow .25s;
+  border-radius: 2px;
+}
+
+.card .card-title {
+  font-size: 24px;
+  font-weight: 300;
+}
+
+.card .card-title.activator {
+  cursor: pointer;
+}
+
+.card.small, .card.medium, .card.large {
+  position: relative;
+}
+
+.card.small .card-image, .card.medium .card-image, .card.large .card-image {
+  max-height: 60%;
+  overflow: hidden;
+}
+
+.card.small .card-image + .card-content, .card.medium .card-image + .card-content, .card.large .card-image + .card-content {
+  max-height: 40%;
+}
+
+.card.small .card-content, .card.medium .card-content, .card.large .card-content {
+  max-height: 100%;
+  overflow: hidden;
+}
+
+.card.small .card-action, .card.medium .card-action, .card.large .card-action {
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  right: 0;
+}
+
+.card.small {
+  height: 300px;
+}
+
+.card.medium {
+  height: 400px;
+}
+
+.card.large {
+  height: 500px;
+}
+
+.card.horizontal {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+}
+
+.card.horizontal.small .card-image, .card.horizontal.medium .card-image, .card.horizontal.large .card-image {
+  height: 100%;
+  max-height: none;
+  overflow: visible;
+}
+
+.card.horizontal.small .card-image img, .card.horizontal.medium .card-image img, .card.horizontal.large .card-image img {
+  height: 100%;
+}
+
+.card.horizontal .card-image {
+  max-width: 50%;
+}
+
+.card.horizontal .card-image img {
+  border-radius: 2px 0 0 2px;
+  max-width: 100%;
+  width: auto;
+}
+
+.card.horizontal .card-stacked {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  -webkit-box-flex: 1;
+  -webkit-flex: 1;
+      -ms-flex: 1;
+          flex: 1;
+  position: relative;
+}
+
+.card.horizontal .card-stacked .card-content {
+  -webkit-box-flex: 1;
+  -webkit-flex-grow: 1;
+      -ms-flex-positive: 1;
+          flex-grow: 1;
+}
+
+.card.sticky-action .card-action {
+  z-index: 2;
+}
+
+.card.sticky-action .card-reveal {
+  z-index: 1;
+  padding-bottom: 64px;
+}
+
+.card .card-image {
+  position: relative;
+}
+
+.card .card-image img {
+  display: block;
+  border-radius: 2px 2px 0 0;
+  position: relative;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  width: 100%;
+}
+
+.card .card-image .card-title {
+  color: #fff;
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  max-width: 100%;
+  padding: 24px;
+}
+
+.card .card-content {
+  padding: 24px;
+  border-radius: 0 0 2px 2px;
+}
+
+.card .card-content p {
+  margin: 0;
+}
+
+.card .card-content .card-title {
+  display: block;
+  line-height: 32px;
+  margin-bottom: 8px;
+}
+
+.card .card-content .card-title i {
+  line-height: 32px;
+}
+
+.card .card-action {
+  background-color: inherit;
+  border-top: 1px solid rgba(160, 160, 160, 0.2);
+  position: relative;
+  padding: 16px 24px;
+}
+
+.card .card-action:last-child {
+  border-radius: 0 0 2px 2px;
+}
+
+.card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating) {
+  color: #ffab40;
+  margin-right: 24px;
+  -webkit-transition: color .3s ease;
+  transition: color .3s ease;
+  text-transform: uppercase;
+}
+
+.card .card-action a:not(.btn):not(.btn-large):not(.btn-small):not(.btn-large):not(.btn-floating):hover {
+  color: #ffd8a6;
+}
+
+.card .card-reveal {
+  padding: 24px;
+  position: absolute;
+  background-color: #fff;
+  width: 100%;
+  overflow-y: auto;
+  left: 0;
+  top: 100%;
+  height: 100%;
+  z-index: 3;
+  display: none;
+}
+
+.card .card-reveal .card-title {
+  cursor: pointer;
+  display: block;
+}
+
+#toast-container {
+  display: block;
+  position: fixed;
+  z-index: 10000;
+}
+
+@media only screen and (max-width: 600px) {
+  #toast-container {
+    min-width: 100%;
+    bottom: 0%;
+  }
+}
+
+@media only screen and (min-width: 601px) and (max-width: 992px) {
+  #toast-container {
+    left: 5%;
+    bottom: 7%;
+    max-width: 90%;
+  }
+}
+
+@media only screen and (min-width: 993px) {
+  #toast-container {
+    top: 10%;
+    right: 7%;
+    max-width: 86%;
+  }
+}
+
+.toast {
+  border-radius: 2px;
+  top: 35px;
+  width: auto;
+  margin-top: 10px;
+  position: relative;
+  max-width: 100%;
+  height: auto;
+  min-height: 48px;
+  line-height: 1.5em;
+  background-color: #323232;
+  padding: 10px 25px;
+  font-size: 1.1rem;
+  font-weight: 300;
+  color: #fff;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-align: center;
+  -webkit-align-items: center;
+      -ms-flex-align: center;
+          align-items: center;
+  -webkit-box-pack: justify;
+  -webkit-justify-content: space-between;
+      -ms-flex-pack: justify;
+          justify-content: space-between;
+  cursor: default;
+}
+
+.toast .toast-action {
+  color: #eeff41;
+  font-weight: 500;
+  margin-right: -25px;
+  margin-left: 3rem;
+}
+
+.toast.rounded {
+  border-radius: 24px;
+}
+
+@media only screen and (max-width: 600px) {
+  .toast {
+    width: 100%;
+    border-radius: 0;
+  }
+}
+
+.tabs {
+  position: relative;
+  overflow-x: auto;
+  overflow-y: hidden;
+  height: 48px;
+  width: 100%;
+  background-color: #fff;
+  margin: 0 auto;
+  white-space: nowrap;
+}
+
+.tabs.tabs-transparent {
+  background-color: transparent;
+}
+
+.tabs.tabs-transparent .tab a,
+.tabs.tabs-transparent .tab.disabled a,
+.tabs.tabs-transparent .tab.disabled a:hover {
+  color: rgba(255, 255, 255, 0.7);
+}
+
+.tabs.tabs-transparent .tab a:hover,
+.tabs.tabs-transparent .tab a.active {
+  color: #fff;
+}
+
+.tabs.tabs-transparent .indicator {
+  background-color: #fff;
+}
+
+.tabs.tabs-fixed-width {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+}
+
+.tabs.tabs-fixed-width .tab {
+  -webkit-box-flex: 1;
+  -webkit-flex-grow: 1;
+      -ms-flex-positive: 1;
+          flex-grow: 1;
+}
+
+.tabs .tab {
+  display: inline-block;
+  text-align: center;
+  line-height: 48px;
+  height: 48px;
+  padding: 0;
+  margin: 0;
+  text-transform: uppercase;
+}
+
+.tabs .tab a {
+  color: rgba(238, 110, 115, 0.7);
+  display: block;
+  width: 100%;
+  height: 100%;
+  padding: 0 24px;
+  font-size: 14px;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  -webkit-transition: color .28s ease, background-color .28s ease;
+  transition: color .28s ease, background-color .28s ease;
+}
+
+.tabs .tab a:focus, .tabs .tab a:focus.active {
+  background-color: rgba(246, 178, 181, 0.2);
+  outline: none;
+}
+
+.tabs .tab a:hover, .tabs .tab a.active {
+  background-color: transparent;
+  color: #ee6e73;
+}
+
+.tabs .tab.disabled a,
+.tabs .tab.disabled a:hover {
+  color: rgba(238, 110, 115, 0.4);
+  cursor: default;
+}
+
+.tabs .indicator {
+  position: absolute;
+  bottom: 0;
+  height: 2px;
+  background-color: #f6b2b5;
+  will-change: left, right;
+}
+
+@media only screen and (max-width: 992px) {
+  .tabs {
+    display: -webkit-box;
+    display: -webkit-flex;
+    display: -ms-flexbox;
+    display: flex;
+  }
+  .tabs .tab {
+    -webkit-box-flex: 1;
+    -webkit-flex-grow: 1;
+        -ms-flex-positive: 1;
+            flex-grow: 1;
+  }
+  .tabs .tab a {
+    padding: 0 12px;
+  }
+}
+
+.material-tooltip {
+  padding: 10px 8px;
+  font-size: 1rem;
+  z-index: 2000;
+  background-color: transparent;
+  border-radius: 2px;
+  color: #fff;
+  min-height: 36px;
+  line-height: 120%;
+  opacity: 0;
+  position: absolute;
+  text-align: center;
+  max-width: calc(100% - 4px);
+  overflow: hidden;
+  left: 0;
+  top: 0;
+  pointer-events: none;
+  visibility: hidden;
+  background-color: #323232;
+}
+
+.backdrop {
+  position: absolute;
+  opacity: 0;
+  height: 7px;
+  width: 14px;
+  border-radius: 0 0 50% 50%;
+  background-color: #323232;
+  z-index: -1;
+  -webkit-transform-origin: 50% 0%;
+          transform-origin: 50% 0%;
+  visibility: hidden;
+}
+
+.btn, .btn-large, .btn-small,
+.btn-flat {
+  border: none;
+  border-radius: 2px;
+  display: inline-block;
+  height: 36px;
+  line-height: 36px;
+  padding: 0 16px;
+  text-transform: uppercase;
+  vertical-align: middle;
+  -webkit-tap-highlight-color: transparent;
+}
+
+.btn.disabled, .disabled.btn-large, .disabled.btn-small,
+.btn-floating.disabled,
+.btn-large.disabled,
+.btn-small.disabled,
+.btn-flat.disabled,
+.btn:disabled,
+.btn-large:disabled,
+.btn-small:disabled,
+.btn-floating:disabled,
+.btn-large:disabled,
+.btn-small:disabled,
+.btn-flat:disabled,
+.btn[disabled],
+.btn-large[disabled],
+.btn-small[disabled],
+.btn-floating[disabled],
+.btn-large[disabled],
+.btn-small[disabled],
+.btn-flat[disabled] {
+  pointer-events: none;
+  background-color: #DFDFDF !important;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  color: #9F9F9F !important;
+  cursor: default;
+}
+
+.btn.disabled:hover, .disabled.btn-large:hover, .disabled.btn-small:hover,
+.btn-floating.disabled:hover,
+.btn-large.disabled:hover,
+.btn-small.disabled:hover,
+.btn-flat.disabled:hover,
+.btn:disabled:hover,
+.btn-large:disabled:hover,
+.btn-small:disabled:hover,
+.btn-floating:disabled:hover,
+.btn-large:disabled:hover,
+.btn-small:disabled:hover,
+.btn-flat:disabled:hover,
+.btn[disabled]:hover,
+.btn-large[disabled]:hover,
+.btn-small[disabled]:hover,
+.btn-floating[disabled]:hover,
+.btn-large[disabled]:hover,
+.btn-small[disabled]:hover,
+.btn-flat[disabled]:hover {
+  background-color: #DFDFDF !important;
+  color: #9F9F9F !important;
+}
+
+.btn, .btn-large, .btn-small,
+.btn-floating,
+.btn-large,
+.btn-small,
+.btn-flat {
+  font-size: 14px;
+  outline: 0;
+}
+
+.btn i, .btn-large i, .btn-small i,
+.btn-floating i,
+.btn-large i,
+.btn-small i,
+.btn-flat i {
+  font-size: 1.3rem;
+  line-height: inherit;
+}
+
+.btn:focus, .btn-large:focus, .btn-small:focus,
+.btn-floating:focus {
+  background-color: #1d7d74;
+}
+
+.btn, .btn-large, .btn-small {
+  text-decoration: none;
+  color: #fff;
+  background-color: #26a69a;
+  text-align: center;
+  letter-spacing: .5px;
+  -webkit-transition: background-color .2s ease-out;
+  transition: background-color .2s ease-out;
+  cursor: pointer;
+}
+
+.btn:hover, .btn-large:hover, .btn-small:hover {
+  background-color: #2bbbad;
+}
+
+.btn-floating {
+  display: inline-block;
+  color: #fff;
+  position: relative;
+  overflow: hidden;
+  z-index: 1;
+  width: 40px;
+  height: 40px;
+  line-height: 40px;
+  padding: 0;
+  background-color: #26a69a;
+  border-radius: 50%;
+  -webkit-transition: background-color .3s;
+  transition: background-color .3s;
+  cursor: pointer;
+  vertical-align: middle;
+}
+
+.btn-floating:hover {
+  background-color: #26a69a;
+}
+
+.btn-floating:before {
+  border-radius: 0;
+}
+
+.btn-floating.btn-large {
+  width: 56px;
+  height: 56px;
+  padding: 0;
+}
+
+.btn-floating.btn-large.halfway-fab {
+  bottom: -28px;
+}
+
+.btn-floating.btn-large i {
+  line-height: 56px;
+}
+
+.btn-floating.btn-small {
+  width: 32.4px;
+  height: 32.4px;
+}
+
+.btn-floating.btn-small.halfway-fab {
+  bottom: -16.2px;
+}
+
+.btn-floating.btn-small i {
+  line-height: 32.4px;
+}
+
+.btn-floating.halfway-fab {
+  position: absolute;
+  right: 24px;
+  bottom: -20px;
+}
+
+.btn-floating.halfway-fab.left {
+  right: auto;
+  left: 24px;
+}
+
+.btn-floating i {
+  width: inherit;
+  display: inline-block;
+  text-align: center;
+  color: #fff;
+  font-size: 1.6rem;
+  line-height: 40px;
+}
+
+button.btn-floating {
+  border: none;
+}
+
+.fixed-action-btn {
+  position: fixed;
+  right: 23px;
+  bottom: 23px;
+  padding-top: 15px;
+  margin-bottom: 0;
+  z-index: 997;
+}
+
+.fixed-action-btn.active ul {
+  visibility: visible;
+}
+
+.fixed-action-btn.direction-left, .fixed-action-btn.direction-right {
+  padding: 0 0 0 15px;
+}
+
+.fixed-action-btn.direction-left ul, .fixed-action-btn.direction-right ul {
+  text-align: right;
+  right: 64px;
+  top: 50%;
+  -webkit-transform: translateY(-50%);
+          transform: translateY(-50%);
+  height: 100%;
+  left: auto;
+  /*width 100% only goes to width of button container */
+  width: 500px;
+}
+
+.fixed-action-btn.direction-left ul li, .fixed-action-btn.direction-right ul li {
+  display: inline-block;
+  margin: 7.5px 15px 0 0;
+}
+
+.fixed-action-btn.direction-right {
+  padding: 0 15px 0 0;
+}
+
+.fixed-action-btn.direction-right ul {
+  text-align: left;
+  direction: rtl;
+  left: 64px;
+  right: auto;
+}
+
+.fixed-action-btn.direction-right ul li {
+  margin: 7.5px 0 0 15px;
+}
+
+.fixed-action-btn.direction-bottom {
+  padding: 0 0 15px 0;
+}
+
+.fixed-action-btn.direction-bottom ul {
+  top: 64px;
+  bottom: auto;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: reverse;
+  -webkit-flex-direction: column-reverse;
+      -ms-flex-direction: column-reverse;
+          flex-direction: column-reverse;
+}
+
+.fixed-action-btn.direction-bottom ul li {
+  margin: 15px 0 0 0;
+}
+
+.fixed-action-btn.toolbar {
+  padding: 0;
+  height: 56px;
+}
+
+.fixed-action-btn.toolbar.active > a i {
+  opacity: 0;
+}
+
+.fixed-action-btn.toolbar ul {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  top: 0;
+  bottom: 0;
+  z-index: 1;
+}
+
+.fixed-action-btn.toolbar ul li {
+  -webkit-box-flex: 1;
+  -webkit-flex: 1;
+      -ms-flex: 1;
+          flex: 1;
+  display: inline-block;
+  margin: 0;
+  height: 100%;
+  -webkit-transition: none;
+  transition: none;
+}
+
+.fixed-action-btn.toolbar ul li a {
+  display: block;
+  overflow: hidden;
+  position: relative;
+  width: 100%;
+  height: 100%;
+  background-color: transparent;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  color: #fff;
+  line-height: 56px;
+  z-index: 1;
+}
+
+.fixed-action-btn.toolbar ul li a i {
+  line-height: inherit;
+}
+
+.fixed-action-btn ul {
+  left: 0;
+  right: 0;
+  text-align: center;
+  position: absolute;
+  bottom: 64px;
+  margin: 0;
+  visibility: hidden;
+}
+
+.fixed-action-btn ul li {
+  margin-bottom: 15px;
+}
+
+.fixed-action-btn ul a.btn-floating {
+  opacity: 0;
+}
+
+.fixed-action-btn .fab-backdrop {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: -1;
+  width: 40px;
+  height: 40px;
+  background-color: #26a69a;
+  border-radius: 50%;
+  -webkit-transform: scale(0);
+          transform: scale(0);
+}
+
+.btn-flat {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  background-color: transparent;
+  color: #343434;
+  cursor: pointer;
+  -webkit-transition: background-color .2s;
+  transition: background-color .2s;
+}
+
+.btn-flat:focus, .btn-flat:hover {
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+
+.btn-flat:focus {
+  background-color: rgba(0, 0, 0, 0.1);
+}
+
+.btn-flat.disabled, .btn-flat.btn-flat[disabled] {
+  background-color: transparent !important;
+  color: #b3b2b2 !important;
+  cursor: default;
+}
+
+.btn-large {
+  height: 54px;
+  line-height: 54px;
+  font-size: 15px;
+  padding: 0 28px;
+}
+
+.btn-large i {
+  font-size: 1.6rem;
+}
+
+.btn-small {
+  height: 32.4px;
+  line-height: 32.4px;
+  font-size: 13px;
+}
+
+.btn-small i {
+  font-size: 1.2rem;
+}
+
+.btn-block {
+  display: block;
+}
+
+.dropdown-content {
+  background-color: #fff;
+  margin: 0;
+  display: none;
+  min-width: 100px;
+  overflow-y: auto;
+  opacity: 0;
+  position: absolute;
+  left: 0;
+  top: 0;
+  z-index: 9999;
+  -webkit-transform-origin: 0 0;
+          transform-origin: 0 0;
+}
+
+.dropdown-content:focus {
+  outline: 0;
+}
+
+.dropdown-content li {
+  clear: both;
+  color: rgba(0, 0, 0, 0.87);
+  cursor: pointer;
+  min-height: 50px;
+  line-height: 1.5rem;
+  width: 100%;
+  text-align: left;
+}
+
+.dropdown-content li:hover, .dropdown-content li.active {
+  background-color: #eee;
+}
+
+.dropdown-content li:focus {
+  outline: none;
+}
+
+.dropdown-content li.divider {
+  min-height: 0;
+  height: 1px;
+}
+
+.dropdown-content li > a, .dropdown-content li > span {
+  font-size: 16px;
+  color: #26a69a;
+  display: block;
+  line-height: 22px;
+  padding: 14px 16px;
+}
+
+.dropdown-content li > span > label {
+  top: 1px;
+  left: 0;
+  height: 18px;
+}
+
+.dropdown-content li > a > i {
+  height: inherit;
+  line-height: inherit;
+  float: left;
+  margin: 0 24px 0 0;
+  width: 24px;
+}
+
+body.keyboard-focused .dropdown-content li:focus {
+  background-color: #dadada;
+}
+
+.input-field.col .dropdown-content [type="checkbox"] + label {
+  top: 1px;
+  left: 0;
+  height: 18px;
+  -webkit-transform: none;
+          transform: none;
+}
+
+.dropdown-trigger {
+  cursor: pointer;
+}
+
+/*!
+ * Waves v0.6.0
+ * http://fian.my.id/Waves
+ *
+ * Copyright 2014 Alfiana E. Sibuea and other contributors
+ * Released under the MIT license
+ * https://github.com/fians/Waves/blob/master/LICENSE
+ */
+.waves-effect {
+  position: relative;
+  cursor: pointer;
+  display: inline-block;
+  overflow: hidden;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  -webkit-tap-highlight-color: transparent;
+  vertical-align: middle;
+  z-index: 1;
+  -webkit-transition: .3s ease-out;
+  transition: .3s ease-out;
+}
+
+.waves-effect .waves-ripple {
+  position: absolute;
+  border-radius: 50%;
+  width: 20px;
+  height: 20px;
+  margin-top: -10px;
+  margin-left: -10px;
+  opacity: 0;
+  background: rgba(0, 0, 0, 0.2);
+  -webkit-transition: all 0.7s ease-out;
+  transition: all 0.7s ease-out;
+  -webkit-transition-property: opacity, -webkit-transform;
+  transition-property: opacity, -webkit-transform;
+  transition-property: transform, opacity;
+  transition-property: transform, opacity, -webkit-transform;
+  -webkit-transform: scale(0);
+          transform: scale(0);
+  pointer-events: none;
+}
+
+.waves-effect.waves-light .waves-ripple {
+  background-color: rgba(255, 255, 255, 0.45);
+}
+
+.waves-effect.waves-red .waves-ripple {
+  background-color: rgba(244, 67, 54, 0.7);
+}
+
+.waves-effect.waves-yellow .waves-ripple {
+  background-color: rgba(255, 235, 59, 0.7);
+}
+
+.waves-effect.waves-orange .waves-ripple {
+  background-color: rgba(255, 152, 0, 0.7);
+}
+
+.waves-effect.waves-purple .waves-ripple {
+  background-color: rgba(156, 39, 176, 0.7);
+}
+
+.waves-effect.waves-green .waves-ripple {
+  background-color: rgba(76, 175, 80, 0.7);
+}
+
+.waves-effect.waves-teal .waves-ripple {
+  background-color: rgba(0, 150, 136, 0.7);
+}
+
+.waves-effect input[type="button"], .waves-effect input[type="reset"], .waves-effect input[type="submit"] {
+  border: 0;
+  font-style: normal;
+  font-size: inherit;
+  text-transform: inherit;
+  background: none;
+}
+
+.waves-effect img {
+  position: relative;
+  z-index: -1;
+}
+
+.waves-notransition {
+  -webkit-transition: none !important;
+  transition: none !important;
+}
+
+.waves-circle {
+  -webkit-transform: translateZ(0);
+          transform: translateZ(0);
+  -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%);
+}
+
+.waves-input-wrapper {
+  border-radius: 0.2em;
+  vertical-align: bottom;
+}
+
+.waves-input-wrapper .waves-button-input {
+  position: relative;
+  top: 0;
+  left: 0;
+  z-index: 1;
+}
+
+.waves-circle {
+  text-align: center;
+  width: 2.5em;
+  height: 2.5em;
+  line-height: 2.5em;
+  border-radius: 50%;
+  -webkit-mask-image: none;
+}
+
+.waves-block {
+  display: block;
+}
+
+/* Firefox Bug: link not triggered */
+.waves-effect .waves-ripple {
+  z-index: -1;
+}
+
+.modal {
+  display: none;
+  position: fixed;
+  left: 0;
+  right: 0;
+  background-color: #fafafa;
+  padding: 0;
+  max-height: 70%;
+  width: 55%;
+  margin: auto;
+  overflow-y: auto;
+  border-radius: 2px;
+  will-change: top, opacity;
+}
+
+.modal:focus {
+  outline: none;
+}
+
+@media only screen and (max-width: 992px) {
+  .modal {
+    width: 80%;
+  }
+}
+
+.modal h1, .modal h2, .modal h3, .modal h4 {
+  margin-top: 0;
+}
+
+.modal .modal-content {
+  padding: 24px;
+}
+
+.modal .modal-close {
+  cursor: pointer;
+}
+
+.modal .modal-footer {
+  border-radius: 0 0 2px 2px;
+  background-color: #fafafa;
+  padding: 4px 6px;
+  height: 56px;
+  width: 100%;
+  text-align: right;
+}
+
+.modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-small, .modal .modal-footer .btn-flat {
+  margin: 6px 0;
+}
+
+.modal-overlay {
+  position: fixed;
+  z-index: 999;
+  top: -25%;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  height: 125%;
+  width: 100%;
+  background: #000;
+  display: none;
+  will-change: opacity;
+}
+
+.modal.modal-fixed-footer {
+  padding: 0;
+  height: 70%;
+}
+
+.modal.modal-fixed-footer .modal-content {
+  position: absolute;
+  height: calc(100% - 56px);
+  max-height: 100%;
+  width: 100%;
+  overflow-y: auto;
+}
+
+.modal.modal-fixed-footer .modal-footer {
+  border-top: 1px solid rgba(0, 0, 0, 0.1);
+  position: absolute;
+  bottom: 0;
+}
+
+.modal.bottom-sheet {
+  top: auto;
+  bottom: -100%;
+  margin: 0;
+  width: 100%;
+  max-height: 45%;
+  border-radius: 0;
+  will-change: bottom, opacity;
+}
+
+.collapsible {
+  border-top: 1px solid #ddd;
+  border-right: 1px solid #ddd;
+  border-left: 1px solid #ddd;
+  margin: 0.5rem 0 1rem 0;
+}
+
+.collapsible-header {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  cursor: pointer;
+  -webkit-tap-highlight-color: transparent;
+  line-height: 1.5;
+  padding: 1rem;
+  background-color: #fff;
+  border-bottom: 1px solid #ddd;
+}
+
+.collapsible-header:focus {
+  outline: 0;
+}
+
+.collapsible-header i {
+  width: 2rem;
+  font-size: 1.6rem;
+  display: inline-block;
+  text-align: center;
+  margin-right: 1rem;
+}
+
+.keyboard-focused .collapsible-header:focus {
+  background-color: #eee;
+}
+
+.collapsible-body {
+  display: none;
+  border-bottom: 1px solid #ddd;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+  padding: 2rem;
+}
+
+.sidenav .collapsible,
+.sidenav.fixed .collapsible {
+  border: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+
+.sidenav .collapsible li,
+.sidenav.fixed .collapsible li {
+  padding: 0;
+}
+
+.sidenav .collapsible-header,
+.sidenav.fixed .collapsible-header {
+  background-color: transparent;
+  border: none;
+  line-height: inherit;
+  height: inherit;
+  padding: 0 16px;
+}
+
+.sidenav .collapsible-header:hover,
+.sidenav.fixed .collapsible-header:hover {
+  background-color: rgba(0, 0, 0, 0.05);
+}
+
+.sidenav .collapsible-header i,
+.sidenav.fixed .collapsible-header i {
+  line-height: inherit;
+}
+
+.sidenav .collapsible-body,
+.sidenav.fixed .collapsible-body {
+  border: 0;
+  background-color: #fff;
+}
+
+.sidenav .collapsible-body li a,
+.sidenav.fixed .collapsible-body li a {
+  padding: 0 23.5px 0 31px;
+}
+
+.collapsible.popout {
+  border: none;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+
+.collapsible.popout > li {
+  -webkit-box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
+          box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
+  margin: 0 24px;
+  -webkit-transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);
+  transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94);
+}
+
+.collapsible.popout > li.active {
+  -webkit-box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);
+          box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);
+  margin: 16px 0;
+}
+
+.chip {
+  display: inline-block;
+  height: 32px;
+  font-size: 13px;
+  font-weight: 500;
+  color: rgba(0, 0, 0, 0.6);
+  line-height: 32px;
+  padding: 0 12px;
+  border-radius: 16px;
+  background-color: #e4e4e4;
+  margin-bottom: 5px;
+  margin-right: 5px;
+}
+
+.chip:focus {
+  outline: none;
+  background-color: #26a69a;
+  color: #fff;
+}
+
+.chip > img {
+  float: left;
+  margin: 0 8px 0 -12px;
+  height: 32px;
+  width: 32px;
+  border-radius: 50%;
+}
+
+.chip .close {
+  cursor: pointer;
+  float: right;
+  font-size: 16px;
+  line-height: 32px;
+  padding-left: 8px;
+}
+
+.chips {
+  border: none;
+  border-bottom: 1px solid #9e9e9e;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  margin: 0 0 8px 0;
+  min-height: 45px;
+  outline: none;
+  -webkit-transition: all .3s;
+  transition: all .3s;
+}
+
+.chips.focus {
+  border-bottom: 1px solid #26a69a;
+  -webkit-box-shadow: 0 1px 0 0 #26a69a;
+          box-shadow: 0 1px 0 0 #26a69a;
+}
+
+.chips:hover {
+  cursor: text;
+}
+
+.chips .input {
+  background: none;
+  border: 0;
+  color: rgba(0, 0, 0, 0.6);
+  display: inline-block;
+  font-size: 16px;
+  height: 3rem;
+  line-height: 32px;
+  outline: 0;
+  margin: 0;
+  padding: 0 !important;
+  width: 120px !important;
+}
+
+.chips .input:focus {
+  border: 0 !important;
+  -webkit-box-shadow: none !important;
+          box-shadow: none !important;
+}
+
+.chips .autocomplete-content {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+
+.prefix ~ .chips {
+  margin-left: 3rem;
+  width: 92%;
+  width: calc(100% - 3rem);
+}
+
+.chips:empty ~ label {
+  font-size: 0.8rem;
+  -webkit-transform: translateY(-140%);
+          transform: translateY(-140%);
+}
+
+.materialboxed {
+  display: block;
+  cursor: -webkit-zoom-in;
+  cursor: zoom-in;
+  position: relative;
+  -webkit-transition: opacity .4s;
+  transition: opacity .4s;
+  -webkit-backface-visibility: hidden;
+}
+
+.materialboxed:hover:not(.active) {
+  opacity: .8;
+}
+
+.materialboxed.active {
+  cursor: -webkit-zoom-out;
+  cursor: zoom-out;
+}
+
+#materialbox-overlay {
+  position: fixed;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background-color: #292929;
+  z-index: 1000;
+  will-change: opacity;
+}
+
+.materialbox-caption {
+  position: fixed;
+  display: none;
+  color: #fff;
+  line-height: 50px;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  text-align: center;
+  padding: 0% 15%;
+  height: 50px;
+  z-index: 1000;
+  -webkit-font-smoothing: antialiased;
+}
+
+select:focus {
+  outline: 1px solid #c9f3ef;
+}
+
+button:focus {
+  outline: none;
+  background-color: #2ab7a9;
+}
+
+label {
+  font-size: 0.8rem;
+  color: #9e9e9e;
+}
+
+/* Text Inputs + Textarea
+   ========================================================================== */
+/* Style Placeholders */
+::-webkit-input-placeholder {
+  color: #d1d1d1;
+}
+::-moz-placeholder {
+  color: #d1d1d1;
+}
+:-ms-input-placeholder {
+  color: #d1d1d1;
+}
+::-ms-input-placeholder {
+  color: #d1d1d1;
+}
+::placeholder {
+  color: #d1d1d1;
+}
+
+/* Text inputs */
+input:not([type]),
+input[type=text]:not(.browser-default),
+input[type=password]:not(.browser-default),
+input[type=email]:not(.browser-default),
+input[type=url]:not(.browser-default),
+input[type=time]:not(.browser-default),
+input[type=date]:not(.browser-default),
+input[type=datetime]:not(.browser-default),
+input[type=datetime-local]:not(.browser-default),
+input[type=tel]:not(.browser-default),
+input[type=number]:not(.browser-default),
+input[type=search]:not(.browser-default),
+textarea.materialize-textarea {
+  background-color: transparent;
+  border: none;
+  border-bottom: 1px solid #9e9e9e;
+  border-radius: 0;
+  outline: none;
+  height: 3rem;
+  width: 100%;
+  font-size: 16px;
+  margin: 0 0 8px 0;
+  padding: 0;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  -webkit-box-sizing: content-box;
+          box-sizing: content-box;
+  -webkit-transition: border .3s, -webkit-box-shadow .3s;
+  transition: border .3s, -webkit-box-shadow .3s;
+  transition: box-shadow .3s, border .3s;
+  transition: box-shadow .3s, border .3s, -webkit-box-shadow .3s;
+}
+
+input:not([type]):disabled, input:not([type])[readonly="readonly"],
+input[type=text]:not(.browser-default):disabled,
+input[type=text]:not(.browser-default)[readonly="readonly"],
+input[type=password]:not(.browser-default):disabled,
+input[type=password]:not(.browser-default)[readonly="readonly"],
+input[type=email]:not(.browser-default):disabled,
+input[type=email]:not(.browser-default)[readonly="readonly"],
+input[type=url]:not(.browser-default):disabled,
+input[type=url]:not(.browser-default)[readonly="readonly"],
+input[type=time]:not(.browser-default):disabled,
+input[type=time]:not(.browser-default)[readonly="readonly"],
+input[type=date]:not(.browser-default):disabled,
+input[type=date]:not(.browser-default)[readonly="readonly"],
+input[type=datetime]:not(.browser-default):disabled,
+input[type=datetime]:not(.browser-default)[readonly="readonly"],
+input[type=datetime-local]:not(.browser-default):disabled,
+input[type=datetime-local]:not(.browser-default)[readonly="readonly"],
+input[type=tel]:not(.browser-default):disabled,
+input[type=tel]:not(.browser-default)[readonly="readonly"],
+input[type=number]:not(.browser-default):disabled,
+input[type=number]:not(.browser-default)[readonly="readonly"],
+input[type=search]:not(.browser-default):disabled,
+input[type=search]:not(.browser-default)[readonly="readonly"],
+textarea.materialize-textarea:disabled,
+textarea.materialize-textarea[readonly="readonly"] {
+  color: rgba(0, 0, 0, 0.42);
+  border-bottom: 1px dotted rgba(0, 0, 0, 0.42);
+}
+
+input:not([type]):disabled + label,
+input:not([type])[readonly="readonly"] + label,
+input[type=text]:not(.browser-default):disabled + label,
+input[type=text]:not(.browser-default)[readonly="readonly"] + label,
+input[type=password]:not(.browser-default):disabled + label,
+input[type=password]:not(.browser-default)[readonly="readonly"] + label,
+input[type=email]:not(.browser-default):disabled + label,
+input[type=email]:not(.browser-default)[readonly="readonly"] + label,
+input[type=url]:not(.browser-default):disabled + label,
+input[type=url]:not(.browser-default)[readonly="readonly"] + label,
+input[type=time]:not(.browser-default):disabled + label,
+input[type=time]:not(.browser-default)[readonly="readonly"] + label,
+input[type=date]:not(.browser-default):disabled + label,
+input[type=date]:not(.browser-default)[readonly="readonly"] + label,
+input[type=datetime]:not(.browser-default):disabled + label,
+input[type=datetime]:not(.browser-default)[readonly="readonly"] + label,
+input[type=datetime-local]:not(.browser-default):disabled + label,
+input[type=datetime-local]:not(.browser-default)[readonly="readonly"] + label,
+input[type=tel]:not(.browser-default):disabled + label,
+input[type=tel]:not(.browser-default)[readonly="readonly"] + label,
+input[type=number]:not(.browser-default):disabled + label,
+input[type=number]:not(.browser-default)[readonly="readonly"] + label,
+input[type=search]:not(.browser-default):disabled + label,
+input[type=search]:not(.browser-default)[readonly="readonly"] + label,
+textarea.materialize-textarea:disabled + label,
+textarea.materialize-textarea[readonly="readonly"] + label {
+  color: rgba(0, 0, 0, 0.42);
+}
+
+input:not([type]):focus:not([readonly]),
+input[type=text]:not(.browser-default):focus:not([readonly]),
+input[type=password]:not(.browser-default):focus:not([readonly]),
+input[type=email]:not(.browser-default):focus:not([readonly]),
+input[type=url]:not(.browser-default):focus:not([readonly]),
+input[type=time]:not(.browser-default):focus:not([readonly]),
+input[type=date]:not(.browser-default):focus:not([readonly]),
+input[type=datetime]:not(.browser-default):focus:not([readonly]),
+input[type=datetime-local]:not(.browser-default):focus:not([readonly]),
+input[type=tel]:not(.browser-default):focus:not([readonly]),
+input[type=number]:not(.browser-default):focus:not([readonly]),
+input[type=search]:not(.browser-default):focus:not([readonly]),
+textarea.materialize-textarea:focus:not([readonly]) {
+  border-bottom: 1px solid #26a69a;
+  -webkit-box-shadow: 0 1px 0 0 #26a69a;
+          box-shadow: 0 1px 0 0 #26a69a;
+}
+
+input:not([type]):focus:not([readonly]) + label,
+input[type=text]:not(.browser-default):focus:not([readonly]) + label,
+input[type=password]:not(.browser-default):focus:not([readonly]) + label,
+input[type=email]:not(.browser-default):focus:not([readonly]) + label,
+input[type=url]:not(.browser-default):focus:not([readonly]) + label,
+input[type=time]:not(.browser-default):focus:not([readonly]) + label,
+input[type=date]:not(.browser-default):focus:not([readonly]) + label,
+input[type=datetime]:not(.browser-default):focus:not([readonly]) + label,
+input[type=datetime-local]:not(.browser-default):focus:not([readonly]) + label,
+input[type=tel]:not(.browser-default):focus:not([readonly]) + label,
+input[type=number]:not(.browser-default):focus:not([readonly]) + label,
+input[type=search]:not(.browser-default):focus:not([readonly]) + label,
+textarea.materialize-textarea:focus:not([readonly]) + label {
+  color: #26a69a;
+}
+
+input:not([type]):focus.valid ~ label,
+input[type=text]:not(.browser-default):focus.valid ~ label,
+input[type=password]:not(.browser-default):focus.valid ~ label,
+input[type=email]:not(.browser-default):focus.valid ~ label,
+input[type=url]:not(.browser-default):focus.valid ~ label,
+input[type=time]:not(.browser-default):focus.valid ~ label,
+input[type=date]:not(.browser-default):focus.valid ~ label,
+input[type=datetime]:not(.browser-default):focus.valid ~ label,
+input[type=datetime-local]:not(.browser-default):focus.valid ~ label,
+input[type=tel]:not(.browser-default):focus.valid ~ label,
+input[type=number]:not(.browser-default):focus.valid ~ label,
+input[type=search]:not(.browser-default):focus.valid ~ label,
+textarea.materialize-textarea:focus.valid ~ label {
+  color: #4CAF50;
+}
+
+input:not([type]):focus.invalid ~ label,
+input[type=text]:not(.browser-default):focus.invalid ~ label,
+input[type=password]:not(.browser-default):focus.invalid ~ label,
+input[type=email]:not(.browser-default):focus.invalid ~ label,
+input[type=url]:not(.browser-default):focus.invalid ~ label,
+input[type=time]:not(.browser-default):focus.invalid ~ label,
+input[type=date]:not(.browser-default):focus.invalid ~ label,
+input[type=datetime]:not(.browser-default):focus.invalid ~ label,
+input[type=datetime-local]:not(.browser-default):focus.invalid ~ label,
+input[type=tel]:not(.browser-default):focus.invalid ~ label,
+input[type=number]:not(.browser-default):focus.invalid ~ label,
+input[type=search]:not(.browser-default):focus.invalid ~ label,
+textarea.materialize-textarea:focus.invalid ~ label {
+  color: #F44336;
+}
+
+input:not([type]).validate + label,
+input[type=text]:not(.browser-default).validate + label,
+input[type=password]:not(.browser-default).validate + label,
+input[type=email]:not(.browser-default).validate + label,
+input[type=url]:not(.browser-default).validate + label,
+input[type=time]:not(.browser-default).validate + label,
+input[type=date]:not(.browser-default).validate + label,
+input[type=datetime]:not(.browser-default).validate + label,
+input[type=datetime-local]:not(.browser-default).validate + label,
+input[type=tel]:not(.browser-default).validate + label,
+input[type=number]:not(.browser-default).validate + label,
+input[type=search]:not(.browser-default).validate + label,
+textarea.materialize-textarea.validate + label {
+  width: 100%;
+}
+
+/* Validation Sass Placeholders */
+input.valid:not([type]), input.valid:not([type]):focus,
+input.valid[type=text]:not(.browser-default),
+input.valid[type=text]:not(.browser-default):focus,
+input.valid[type=password]:not(.browser-default),
+input.valid[type=password]:not(.browser-default):focus,
+input.valid[type=email]:not(.browser-default),
+input.valid[type=email]:not(.browser-default):focus,
+input.valid[type=url]:not(.browser-default),
+input.valid[type=url]:not(.browser-default):focus,
+input.valid[type=time]:not(.browser-default),
+input.valid[type=time]:not(.browser-default):focus,
+input.valid[type=date]:not(.browser-default),
+input.valid[type=date]:not(.browser-default):focus,
+input.valid[type=datetime]:not(.browser-default),
+input.valid[type=datetime]:not(.browser-default):focus,
+input.valid[type=datetime-local]:not(.browser-default),
+input.valid[type=datetime-local]:not(.browser-default):focus,
+input.valid[type=tel]:not(.browser-default),
+input.valid[type=tel]:not(.browser-default):focus,
+input.valid[type=number]:not(.browser-default),
+input.valid[type=number]:not(.browser-default):focus,
+input.valid[type=search]:not(.browser-default),
+input.valid[type=search]:not(.browser-default):focus,
+textarea.materialize-textarea.valid,
+textarea.materialize-textarea.valid:focus, .select-wrapper.valid > input.select-dropdown {
+  border-bottom: 1px solid #4CAF50;
+  -webkit-box-shadow: 0 1px 0 0 #4CAF50;
+          box-shadow: 0 1px 0 0 #4CAF50;
+}
+
+input.invalid:not([type]), input.invalid:not([type]):focus,
+input.invalid[type=text]:not(.browser-default),
+input.invalid[type=text]:not(.browser-default):focus,
+input.invalid[type=password]:not(.browser-default),
+input.invalid[type=password]:not(.browser-default):focus,
+input.invalid[type=email]:not(.browser-default),
+input.invalid[type=email]:not(.browser-default):focus,
+input.invalid[type=url]:not(.browser-default),
+input.invalid[type=url]:not(.browser-default):focus,
+input.invalid[type=time]:not(.browser-default),
+input.invalid[type=time]:not(.browser-default):focus,
+input.invalid[type=date]:not(.browser-default),
+input.invalid[type=date]:not(.browser-default):focus,
+input.invalid[type=datetime]:not(.browser-default),
+input.invalid[type=datetime]:not(.browser-default):focus,
+input.invalid[type=datetime-local]:not(.browser-default),
+input.invalid[type=datetime-local]:not(.browser-default):focus,
+input.invalid[type=tel]:not(.browser-default),
+input.invalid[type=tel]:not(.browser-default):focus,
+input.invalid[type=number]:not(.browser-default),
+input.invalid[type=number]:not(.browser-default):focus,
+input.invalid[type=search]:not(.browser-default),
+input.invalid[type=search]:not(.browser-default):focus,
+textarea.materialize-textarea.invalid,
+textarea.materialize-textarea.invalid:focus, .select-wrapper.invalid > input.select-dropdown,
+.select-wrapper.invalid > input.select-dropdown:focus {
+  border-bottom: 1px solid #F44336;
+  -webkit-box-shadow: 0 1px 0 0 #F44336;
+          box-shadow: 0 1px 0 0 #F44336;
+}
+
+input:not([type]).valid ~ .helper-text[data-success],
+input:not([type]):focus.valid ~ .helper-text[data-success],
+input:not([type]).invalid ~ .helper-text[data-error],
+input:not([type]):focus.invalid ~ .helper-text[data-error],
+input[type=text]:not(.browser-default).valid ~ .helper-text[data-success],
+input[type=text]:not(.browser-default):focus.valid ~ .helper-text[data-success],
+input[type=text]:not(.browser-default).invalid ~ .helper-text[data-error],
+input[type=text]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
+input[type=password]:not(.browser-default).valid ~ .helper-text[data-success],
+input[type=password]:not(.browser-default):focus.valid ~ .helper-text[data-success],
+input[type=password]:not(.browser-default).invalid ~ .helper-text[data-error],
+input[type=password]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
+input[type=email]:not(.browser-default).valid ~ .helper-text[data-success],
+input[type=email]:not(.browser-default):focus.valid ~ .helper-text[data-success],
+input[type=email]:not(.browser-default).invalid ~ .helper-text[data-error],
+input[type=email]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
+input[type=url]:not(.browser-default).valid ~ .helper-text[data-success],
+input[type=url]:not(.browser-default):focus.valid ~ .helper-text[data-success],
+input[type=url]:not(.browser-default).invalid ~ .helper-text[data-error],
+input[type=url]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
+input[type=time]:not(.browser-default).valid ~ .helper-text[data-success],
+input[type=time]:not(.browser-default):focus.valid ~ .helper-text[data-success],
+input[type=time]:not(.browser-default).invalid ~ .helper-text[data-error],
+input[type=time]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
+input[type=date]:not(.browser-default).valid ~ .helper-text[data-success],
+input[type=date]:not(.browser-default):focus.valid ~ .helper-text[data-success],
+input[type=date]:not(.browser-default).invalid ~ .helper-text[data-error],
+input[type=date]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
+input[type=datetime]:not(.browser-default).valid ~ .helper-text[data-success],
+input[type=datetime]:not(.browser-default):focus.valid ~ .helper-text[data-success],
+input[type=datetime]:not(.browser-default).invalid ~ .helper-text[data-error],
+input[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
+input[type=datetime-local]:not(.browser-default).valid ~ .helper-text[data-success],
+input[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text[data-success],
+input[type=datetime-local]:not(.browser-default).invalid ~ .helper-text[data-error],
+input[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
+input[type=tel]:not(.browser-default).valid ~ .helper-text[data-success],
+input[type=tel]:not(.browser-default):focus.valid ~ .helper-text[data-success],
+input[type=tel]:not(.browser-default).invalid ~ .helper-text[data-error],
+input[type=tel]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
+input[type=number]:not(.browser-default).valid ~ .helper-text[data-success],
+input[type=number]:not(.browser-default):focus.valid ~ .helper-text[data-success],
+input[type=number]:not(.browser-default).invalid ~ .helper-text[data-error],
+input[type=number]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
+input[type=search]:not(.browser-default).valid ~ .helper-text[data-success],
+input[type=search]:not(.browser-default):focus.valid ~ .helper-text[data-success],
+input[type=search]:not(.browser-default).invalid ~ .helper-text[data-error],
+input[type=search]:not(.browser-default):focus.invalid ~ .helper-text[data-error],
+textarea.materialize-textarea.valid ~ .helper-text[data-success],
+textarea.materialize-textarea:focus.valid ~ .helper-text[data-success],
+textarea.materialize-textarea.invalid ~ .helper-text[data-error],
+textarea.materialize-textarea:focus.invalid ~ .helper-text[data-error], .select-wrapper.valid .helper-text[data-success],
+.select-wrapper.invalid ~ .helper-text[data-error] {
+  color: transparent;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  pointer-events: none;
+}
+
+input:not([type]).valid ~ .helper-text:after,
+input:not([type]):focus.valid ~ .helper-text:after,
+input[type=text]:not(.browser-default).valid ~ .helper-text:after,
+input[type=text]:not(.browser-default):focus.valid ~ .helper-text:after,
+input[type=password]:not(.browser-default).valid ~ .helper-text:after,
+input[type=password]:not(.browser-default):focus.valid ~ .helper-text:after,
+input[type=email]:not(.browser-default).valid ~ .helper-text:after,
+input[type=email]:not(.browser-default):focus.valid ~ .helper-text:after,
+input[type=url]:not(.browser-default).valid ~ .helper-text:after,
+input[type=url]:not(.browser-default):focus.valid ~ .helper-text:after,
+input[type=time]:not(.browser-default).valid ~ .helper-text:after,
+input[type=time]:not(.browser-default):focus.valid ~ .helper-text:after,
+input[type=date]:not(.browser-default).valid ~ .helper-text:after,
+input[type=date]:not(.browser-default):focus.valid ~ .helper-text:after,
+input[type=datetime]:not(.browser-default).valid ~ .helper-text:after,
+input[type=datetime]:not(.browser-default):focus.valid ~ .helper-text:after,
+input[type=datetime-local]:not(.browser-default).valid ~ .helper-text:after,
+input[type=datetime-local]:not(.browser-default):focus.valid ~ .helper-text:after,
+input[type=tel]:not(.browser-default).valid ~ .helper-text:after,
+input[type=tel]:not(.browser-default):focus.valid ~ .helper-text:after,
+input[type=number]:not(.browser-default).valid ~ .helper-text:after,
+input[type=number]:not(.browser-default):focus.valid ~ .helper-text:after,
+input[type=search]:not(.browser-default).valid ~ .helper-text:after,
+input[type=search]:not(.browser-default):focus.valid ~ .helper-text:after,
+textarea.materialize-textarea.valid ~ .helper-text:after,
+textarea.materialize-textarea:focus.valid ~ .helper-text:after, .select-wrapper.valid ~ .helper-text:after {
+  content: attr(data-success);
+  color: #4CAF50;
+}
+
+input:not([type]).invalid ~ .helper-text:after,
+input:not([type]):focus.invalid ~ .helper-text:after,
+input[type=text]:not(.browser-default).invalid ~ .helper-text:after,
+input[type=text]:not(.browser-default):focus.invalid ~ .helper-text:after,
+input[type=password]:not(.browser-default).invalid ~ .helper-text:after,
+input[type=password]:not(.browser-default):focus.invalid ~ .helper-text:after,
+input[type=email]:not(.browser-default).invalid ~ .helper-text:after,
+input[type=email]:not(.browser-default):focus.invalid ~ .helper-text:after,
+input[type=url]:not(.browser-default).invalid ~ .helper-text:after,
+input[type=url]:not(.browser-default):focus.invalid ~ .helper-text:after,
+input[type=time]:not(.browser-default).invalid ~ .helper-text:after,
+input[type=time]:not(.browser-default):focus.invalid ~ .helper-text:after,
+input[type=date]:not(.browser-default).invalid ~ .helper-text:after,
+input[type=date]:not(.browser-default):focus.invalid ~ .helper-text:after,
+input[type=datetime]:not(.browser-default).invalid ~ .helper-text:after,
+input[type=datetime]:not(.browser-default):focus.invalid ~ .helper-text:after,
+input[type=datetime-local]:not(.browser-default).invalid ~ .helper-text:after,
+input[type=datetime-local]:not(.browser-default):focus.invalid ~ .helper-text:after,
+input[type=tel]:not(.browser-default).invalid ~ .helper-text:after,
+input[type=tel]:not(.browser-default):focus.invalid ~ .helper-text:after,
+input[type=number]:not(.browser-default).invalid ~ .helper-text:after,
+input[type=number]:not(.browser-default):focus.invalid ~ .helper-text:after,
+input[type=search]:not(.browser-default).invalid ~ .helper-text:after,
+input[type=search]:not(.browser-default):focus.invalid ~ .helper-text:after,
+textarea.materialize-textarea.invalid ~ .helper-text:after,
+textarea.materialize-textarea:focus.invalid ~ .helper-text:after, .select-wrapper.invalid ~ .helper-text:after {
+  content: attr(data-error);
+  color: #F44336;
+}
+
+input:not([type]) + label:after,
+input[type=text]:not(.browser-default) + label:after,
+input[type=password]:not(.browser-default) + label:after,
+input[type=email]:not(.browser-default) + label:after,
+input[type=url]:not(.browser-default) + label:after,
+input[type=time]:not(.browser-default) + label:after,
+input[type=date]:not(.browser-default) + label:after,
+input[type=datetime]:not(.browser-default) + label:after,
+input[type=datetime-local]:not(.browser-default) + label:after,
+input[type=tel]:not(.browser-default) + label:after,
+input[type=number]:not(.browser-default) + label:after,
+input[type=search]:not(.browser-default) + label:after,
+textarea.materialize-textarea + label:after, .select-wrapper + label:after {
+  display: block;
+  content: "";
+  position: absolute;
+  top: 100%;
+  left: 0;
+  opacity: 0;
+  -webkit-transition: .2s opacity ease-out, .2s color ease-out;
+  transition: .2s opacity ease-out, .2s color ease-out;
+}
+
+.input-field {
+  position: relative;
+  margin-top: 1rem;
+  margin-bottom: 1rem;
+}
+
+.input-field.inline {
+  display: inline-block;
+  vertical-align: middle;
+  margin-left: 5px;
+}
+
+.input-field.inline input,
+.input-field.inline .select-dropdown {
+  margin-bottom: 1rem;
+}
+
+.input-field.col label {
+  left: 0.75rem;
+}
+
+.input-field.col .prefix ~ label,
+.input-field.col .prefix ~ .validate ~ label {
+  width: calc(100% - 3rem - 1.5rem);
+}
+
+.input-field > label {
+  color: #9e9e9e;
+  position: absolute;
+  top: 0;
+  left: 0;
+  font-size: 1rem;
+  cursor: text;
+  -webkit-transition: color .2s ease-out, -webkit-transform .2s ease-out;
+  transition: color .2s ease-out, -webkit-transform .2s ease-out;
+  transition: transform .2s ease-out, color .2s ease-out;
+  transition: transform .2s ease-out, color .2s ease-out, -webkit-transform .2s ease-out;
+  -webkit-transform-origin: 0% 100%;
+          transform-origin: 0% 100%;
+  text-align: initial;
+  -webkit-transform: translateY(12px);
+          transform: translateY(12px);
+}
+
+.input-field > label:not(.label-icon).active {
+  -webkit-transform: translateY(-14px) scale(0.8);
+          transform: translateY(-14px) scale(0.8);
+  -webkit-transform-origin: 0 0;
+          transform-origin: 0 0;
+}
+
+.input-field > input[type]:-webkit-autofill:not(.browser-default):not([type="search"]) + label,
+.input-field > input[type=date]:not(.browser-default) + label,
+.input-field > input[type=time]:not(.browser-default) + label {
+  -webkit-transform: translateY(-14px) scale(0.8);
+          transform: translateY(-14px) scale(0.8);
+  -webkit-transform-origin: 0 0;
+          transform-origin: 0 0;
+}
+
+.input-field .helper-text {
+  position: relative;
+  min-height: 18px;
+  display: block;
+  font-size: 12px;
+  color: rgba(0, 0, 0, 0.54);
+}
+
+.input-field .helper-text::after {
+  opacity: 1;
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.input-field .prefix {
+  position: absolute;
+  width: 3rem;
+  font-size: 2rem;
+  -webkit-transition: color .2s;
+  transition: color .2s;
+  top: 0.5rem;
+}
+
+.input-field .prefix.active {
+  color: #26a69a;
+}
+
+.input-field .prefix ~ input,
+.input-field .prefix ~ textarea,
+.input-field .prefix ~ label,
+.input-field .prefix ~ .validate ~ label,
+.input-field .prefix ~ .helper-text,
+.input-field .prefix ~ .autocomplete-content {
+  margin-left: 3rem;
+  width: 92%;
+  width: calc(100% - 3rem);
+}
+
+.input-field .prefix ~ label {
+  margin-left: 3rem;
+}
+
+@media only screen and (max-width: 992px) {
+  .input-field .prefix ~ input {
+    width: 86%;
+    width: calc(100% - 3rem);
+  }
+}
+
+@media only screen and (max-width: 600px) {
+  .input-field .prefix ~ input {
+    width: 80%;
+    width: calc(100% - 3rem);
+  }
+}
+
+/* Search Field */
+.input-field input[type=search] {
+  display: block;
+  line-height: inherit;
+  -webkit-transition: .3s background-color;
+  transition: .3s background-color;
+}
+
+.nav-wrapper .input-field input[type=search] {
+  height: inherit;
+  padding-left: 4rem;
+  width: calc(100% - 4rem);
+  border: 0;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+}
+
+.input-field input[type=search]:focus:not(.browser-default) {
+  background-color: #fff;
+  border: 0;
+  -webkit-box-shadow: none;
+          box-shadow: none;
+  color: #444;
+}
+
+.input-field input[type=search]:focus:not(.browser-default) + label i,
+.input-field input[type=search]:focus:not(.browser-default) ~ .mdi-navigation-close,
+.input-field input[type=search]:focus:not(.browser-default) ~ .material-icons {
+  color: #444;
+}
+
+.input-field input[type=search] + .label-icon {
+  -webkit-transform: none;
+          transform: none;
+  left: 1rem;
+}
+
+.input-field input[type=search] ~ .mdi-navigation-close,
+.input-field input[type=search] ~ .material-icons {
+  position: absolute;
+  top: 0;
+  right: 1rem;
+  color: transparent;
+  cursor: pointer;
+  font-size: 2rem;
+  -webkit-transition: .3s color;
+  transition: .3s color;
+}
+
+/* Textarea */
+textarea {
+  width: 100%;
+  height: 3rem;
+  background-color: transparent;
+}
+
+textarea.materialize-textarea {
+  line-height: normal;
+  overflow-y: hidden;
+  /* prevents scroll bar flash */
+  padding: .8rem 0 .8rem 0;
+  /* prevents text jump on Enter keypress */
+  resize: none;
+  min-height: 3rem;
+  -webkit-box-sizing: border-box;
+          box-sizing: border-box;
+}
+
+.hiddendiv {
+  visibility: hidden;
+  white-space: pre-wrap;
+  word-wrap: break-word;
+  overflow-wrap: break-word;
+  /* future version of deprecated 'word-wrap' */
+  padding-top: 1.2rem;
+  /* prevents text jump on Enter keypress */
+  position: absolute;
+  top: 0;
+  z-index: -1;
+}
+
+/* Autocomplete */
+.autocomplete-content li .highlight {
+  color: #444;
+}
+
+.autocomplete-content li img {
+  height: 40px;
+  width: 40px;
+  margin: 5px 15px;
+}
+
+/* Character Counter */
+.character-counter {
+  min-height: 18px;
+}
+
+/* Radio Buttons
+   ========================================================================== */
+[type="radio"]:not(:checked),
+[type="radio"]:checked {
+  position: absolute;
+  opacity: 0;
+  pointer-events: none;
+}
+
+[type="radio"]:not(:checked) + span,
+[type="radio"]:checked + span {
+  position: relative;
+  padding-left: 35px;
+  cursor: pointer;
+  display: inline-block;
+  height: 25px;
+  line-height: 25px;
+  font-size: 1rem;
+  -webkit-transition: .28s ease;
+  transition: .28s ease;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+[type="radio"] + span:before,
+[type="radio"] + span:after {
+  content: '';
+  position: absolute;
+  left: 0;
+  top: 0;
+  margin: 4px;
+  width: 16px;
+  height: 16px;
+  z-index: 0;
+  -webkit-transition: .28s ease;
+  transition: .28s ease;
+}
+
+/* Unchecked styles */
+[type="radio"]:not(:checked) + span:before,
+[type="radio"]:not(:checked) + span:after,
+[type="radio"]:checked + span:before,
+[type="radio"]:checked + span:after,
+[type="radio"].with-gap:checked + span:before,
+[type="radio"].with-gap:checked + span:after {
+  border-radius: 50%;
+}
+
+[type="radio"]:not(:checked) + span:before,
+[type="radio"]:not(:checked) + span:after {
+  border: 2px solid #5a5a5a;
+}
+
+[type="radio"]:not(:checked) + span:after {
+  -webkit-transform: scale(0);
+          transform: scale(0);
+}
+
+/* Checked styles */
+[type="radio"]:checked + span:before {
+  border: 2px solid transparent;
+}
+
+[type="radio"]:checked + span:after,
+[type="radio"].with-gap:checked + span:before,
+[type="radio"].with-gap:checked + span:after {
+  border: 2px solid #26a69a;
+}
+
+[type="radio"]:checked + span:after,
+[type="radio"].with-gap:checked + span:after {
+  background-color: #26a69a;
+}
+
+[type="radio"]:checked + span:after {
+  -webkit-transform: scale(1.02);
+          transform: scale(1.02);
+}
+
+/* Radio With gap */
+[type="radio"].with-gap:checked + span:after {
+  -webkit-transform: scale(0.5);
+          transform: scale(0.5);
+}
+
+/* Focused styles */
+[type="radio"].tabbed:focus + span:before {
+  -webkit-box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);
+          box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);
+}
+
+/* Disabled Radio With gap */
+[type="radio"].with-gap:disabled:checked + span:before {
+  border: 2px solid rgba(0, 0, 0, 0.42);
+}
+
+[type="radio"].with-gap:disabled:checked + span:after {
+  border: none;
+  background-color: rgba(0, 0, 0, 0.42);
+}
+
+/* Disabled style */
+[type="radio"]:disabled:not(:checked) + span:before,
+[type="radio"]:disabled:checked + span:before {
+  background-color: transparent;
+  border-color: rgba(0, 0, 0, 0.42);
+}
+
+[type="radio"]:disabled + span {
+  color: rgba(0, 0, 0, 0.42);
+}
+
+[type="radio"]:disabled:not(:checked) + span:before {
+  border-color: rgba(0, 0, 0, 0.42);
+}
+
+[type="radio"]:disabled:checked + span:after {
+  background-color: rgba(0, 0, 0, 0.42);
+  border-color: #949494;
+}
+
+/* Checkboxes
+   ========================================================================== */
+/* Remove default checkbox */
+[type="checkbox"]:not(:checked),
+[type="checkbox"]:checked {
+  position: absolute;
+  opacity: 0;
+  pointer-events: none;
+}
+
+[type="checkbox"] {
+  /* checkbox aspect */
+}
+
+[type="checkbox"] + span:not(.lever) {
+  position: relative;
+  padding-left: 35px;
+  cursor: pointer;
+  display: inline-block;
+  height: 25px;
+  line-height: 25px;
+  font-size: 1rem;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+[type="checkbox"] + span:not(.lever):before,
+[type="checkbox"]:not(.filled-in) + span:not(.lever):after {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 18px;
+  height: 18px;
+  z-index: 0;
+  border: 2px solid #5a5a5a;
+  border-radius: 1px;
+  margin-top: 3px;
+  -webkit-transition: .2s;
+  transition: .2s;
+}
+
+[type="checkbox"]:not(.filled-in) + span:not(.lever):after {
+  border: 0;
+  -webkit-transform: scale(0);
+          transform: scale(0);
+}
+
+[type="checkbox"]:not(:checked):disabled + span:not(.lever):before {
+  border: none;
+  background-color: rgba(0, 0, 0, 0.42);
+}
+
+[type="checkbox"].tabbed:focus + span:not(.lever):after {
+  -webkit-transform: scale(1);
+          transform: scale(1);
+  border: 0;
+  border-radius: 50%;
+  -webkit-box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);
+          box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);
+  background-color: rgba(0, 0, 0, 0.1);
+}
+
+[type="checkbox"]:checked + span:not(.lever):before {
+  top: -4px;
+  left: -5px;
+  width: 12px;
+  height: 22px;
+  border-top: 2px solid transparent;
+  border-left: 2px solid transparent;
+  border-right: 2px solid #26a69a;
+  border-bottom: 2px solid #26a69a;
+  -webkit-transform: rotate(40deg);
+          transform: rotate(40deg);
+  -webkit-backface-visibility: hidden;
+          backface-visibility: hidden;
+  -webkit-transform-origin: 100% 100%;
+          transform-origin: 100% 100%;
+}
+
+[type="checkbox"]:checked:disabled + span:before {
+  border-right: 2px solid rgba(0, 0, 0, 0.42);
+  border-bottom: 2px solid rgba(0, 0, 0, 0.42);
+}
+
+/* Indeterminate checkbox */
+[type="checkbox"]:indeterminate + span:not(.lever):before {
+  top: -11px;
+  left: -12px;
+  width: 10px;
+  height: 22px;
+  border-top: none;
+  border-left: none;
+  border-right: 2px solid #26a69a;
+  border-bottom: none;
+  -webkit-transform: rotate(90deg);
+          transform: rotate(90deg);
+  -webkit-backface-visibility: hidden;
+          backface-visibility: hidden;
+  -webkit-transform-origin: 100% 100%;
+          transform-origin: 100% 100%;
+}
+
+[type="checkbox"]:indeterminate:disabled + span:not(.lever):before {
+  border-right: 2px solid rgba(0, 0, 0, 0.42);
+  background-color: transparent;
+}
+
+[type="checkbox"].filled-in + span:not(.lever):after {
+  border-radius: 2px;
+}
+
+[type="checkbox"].filled-in + span:not(.lever):before,
+[type="checkbox"].filled-in + span:not(.lever):after {
+  content: '';
+  left: 0;
+  position: absolute;
+  /* .1s delay is for check animation */
+  -webkit-transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;
+  transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s;
+  z-index: 1;
+}
+
+[type="checkbox"].filled-in:not(:checked) + span:not(.lever):before {
+  width: 0;
+  height: 0;
+  border: 3px solid transparent;
+  left: 6px;
+  top: 10px;
+  -webkit-transform: rotateZ(37deg);
+          transform: rotateZ(37deg);
+  -webkit-transform-origin: 100% 100%;
+          transform-origin: 100% 100%;
+}
+
+[type="checkbox"].filled-in:not(:checked) + span:not(.lever):after {
+  height: 20px;
+  width: 20px;
+  background-color: transparent;
+  border: 2px solid #5a5a5a;
+  top: 0px;
+  z-index: 0;
+}
+
+[type="checkbox"].filled-in:checked + span:not(.lever):before {
+  top: 0;
+  left: 1px;
+  width: 8px;
+  height: 13px;
+  border-top: 2px solid transparent;
+  border-left: 2px solid transparent;
+  border-right: 2px solid #fff;
+  border-bottom: 2px solid #fff;
+  -webkit-transform: rotateZ(37deg);
+          transform: rotateZ(37deg);
+  -webkit-transform-origin: 100% 100%;
+          transform-origin: 100% 100%;
+}
+
+[type="checkbox"].filled-in:checked + span:not(.lever):after {
+  top: 0;
+  width: 20px;
+  height: 20px;
+  border: 2px solid #26a69a;
+  background-color: #26a69a;
+  z-index: 0;
+}
+
+[type="checkbox"].filled-in.tabbed:focus + span:not(.lever):after {
+  border-radius: 2px;
+  border-color: #5a5a5a;
+  background-color: rgba(0, 0, 0, 0.1);
+}
+
+[type="checkbox"].filled-in.tabbed:checked:focus + span:not(.lever):after {
+  border-radius: 2px;
+  background-color: #26a69a;
+  border-color: #26a69a;
+}
+
+[type="checkbox"].filled-in:disabled:not(:checked) + span:not(.lever):before {
+  background-color: transparent;
+  border: 2px solid transparent;
+}
+
+[type="checkbox"].filled-in:disabled:not(:checked) + span:not(.lever):after {
+  border-color: transparent;
+  background-color: #949494;
+}
+
+[type="checkbox"].filled-in:disabled:checked + span:not(.lever):before {
+  background-color: transparent;
+}
+
+[type="checkbox"].filled-in:disabled:checked + span:not(.lever):after {
+  background-color: #949494;
+  border-color: #949494;
+}
+
+/* Switch
+   ========================================================================== */
+.switch,
+.switch * {
+  -webkit-tap-highlight-color: transparent;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.switch label {
+  cursor: pointer;
+}
+
+.switch label input[type=checkbox] {
+  opacity: 0;
+  width: 0;
+  height: 0;
+}
+
+.switch label input[type=checkbox]:checked + .lever {
+  background-color: #84c7c1;
+}
+
+.switch label input[type=checkbox]:checked + .lever:before, .switch label input[type=checkbox]:checked + .lever:after {
+  left: 18px;
+}
+
+.switch label input[type=checkbox]:checked + .lever:after {
+  background-color: #26a69a;
+}
+
+.switch label .lever {
+  content: "";
+  display: inline-block;
+  position: relative;
+  width: 36px;
+  height: 14px;
+  background-color: rgba(0, 0, 0, 0.38);
+  border-radius: 15px;
+  margin-right: 10px;
+  -webkit-transition: background 0.3s ease;
+  transition: background 0.3s ease;
+  vertical-align: middle;
+  margin: 0 16px;
+}
+
+.switch label .lever:before, .switch label .lever:after {
+  content: "";
+  position: absolute;
+  display: inline-block;
+  width: 20px;
+  height: 20px;
+  border-radius: 50%;
+  left: 0;
+  top: -3px;
+  -webkit-transition: left 0.3s ease, background .3s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease;
+  transition: left 0.3s ease, background .3s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease;
+  transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease;
+  transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease, transform .1s ease, -webkit-box-shadow 0.1s ease, -webkit-transform .1s ease;
+}
+
+.switch label .lever:before {
+  background-color: rgba(38, 166, 154, 0.15);
+}
+
+.switch label .lever:after {
+  background-color: #F1F1F1;
+  -webkit-box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
+          box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
+}
+
+input[type=checkbox]:checked:not(:disabled) ~ .lever:active::before,
+input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::before {
+  -webkit-transform: scale(2.4);
+          transform: scale(2.4);
+  background-color: rgba(38, 166, 154, 0.15);
+}
+
+input[type=checkbox]:not(:disabled) ~ .lever:active:before,
+input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::before {
+  -webkit-transform: scale(2.4);
+          transform: scale(2.4);
+  background-color: rgba(0, 0, 0, 0.08);
+}
+
+.switch input[type=checkbox][disabled] + .lever {
+  cursor: default;
+  background-color: rgba(0, 0, 0, 0.12);
+}
+
+.switch label input[type=checkbox][disabled] + .lever:after,
+.switch label input[type=checkbox][disabled]:checked + .lever:after {
+  background-color: #949494;
+}
+
+/* Select Field
+   ========================================================================== */
+select {
+  display: none;
+}
+
+select.browser-default {
+  display: block;
+}
+
+select {
+  background-color: rgba(255, 255, 255, 0.9);
+  width: 100%;
+  padding: 5px;
+  border: 1px solid #f2f2f2;
+  border-radius: 2px;
+  height: 3rem;
+}
+
+.select-label {
+  position: absolute;
+}
+
+.select-wrapper {
+  position: relative;
+}
+
+.select-wrapper.valid + label,
+.select-wrapper.invalid + label {
+  width: 100%;
+  pointer-events: none;
+}
+
+.select-wrapper input.select-dropdown {
+  position: relative;
+  cursor: pointer;
+  background-color: transparent;
+  border: none;
+  border-bottom: 1px solid #9e9e9e;
+  outline: none;
+  height: 3rem;
+  line-height: 3rem;
+  width: 100%;
+  font-size: 16px;
+  margin: 0 0 8px 0;
+  padding: 0;
+  display: block;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  z-index: 1;
+}
+
+.select-wrapper input.select-dropdown:focus {
+  border-bottom: 1px solid #26a69a;
+}
+
+.select-wrapper .caret {
+  position: absolute;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  margin: auto 0;
+  z-index: 0;
+  fill: rgba(0, 0, 0, 0.87);
+}
+
+.select-wrapper + label {
+  position: absolute;
+  top: -26px;
+  font-size: 0.8rem;
+}
+
+select:disabled {
+  color: rgba(0, 0, 0, 0.42);
+}
+
+.select-wrapper.disabled + label {
+  color: rgba(0, 0, 0, 0.42);
+}
+
+.select-wrapper.disabled .caret {
+  fill: rgba(0, 0, 0, 0.42);
+}
+
+.select-wrapper input.select-dropdown:disabled {
+  color: rgba(0, 0, 0, 0.42);
+  cursor: default;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.select-wrapper i {
+  color: rgba(0, 0, 0, 0.3);
+}
+
+.select-dropdown li.disabled,
+.select-dropdown li.disabled > span,
+.select-dropdown li.optgroup {
+  color: rgba(0, 0, 0, 0.3);
+  background-color: transparent;
+}
+
+body.keyboard-focused .select-dropdown.dropdown-content li:focus {
+  background-color: rgba(0, 0, 0, 0.08);
+}
+
+.select-dropdown.dropdown-content li:hover {
+  background-color: rgba(0, 0, 0, 0.08);
+}
+
+.select-dropdown.dropdown-content li.selected {
+  background-color: rgba(0, 0, 0, 0.03);
+}
+
+.prefix ~ .select-wrapper {
+  margin-left: 3rem;
+  width: 92%;
+  width: calc(100% - 3rem);
+}
+
+.prefix ~ label {
+  margin-left: 3rem;
+}
+
+.select-dropdown li img {
+  height: 40px;
+  width: 40px;
+  margin: 5px 15px;
+  float: right;
+}
+
+.select-dropdown li.optgroup {
+  border-top: 1px solid #eee;
+}
+
+.select-dropdown li.optgroup.selected > span {
+  color: rgba(0, 0, 0, 0.7);
+}
+
+.select-dropdown li.optgroup > span {
+  color: rgba(0, 0, 0, 0.4);
+}
+
+.select-dropdown li.optgroup ~ li.optgroup-option {
+  padding-left: 1rem;
+}
+
+/* File Input
+   ========================================================================== */
+.file-field {
+  position: relative;
+}
+
+.file-field .file-path-wrapper {
+  overflow: hidden;
+  padding-left: 10px;
+}
+
+.file-field input.file-path {
+  width: 100%;
+}
+
+.file-field .btn, .file-field .btn-large, .file-field .btn-small {
+  float: left;
+  height: 3rem;
+  line-height: 3rem;
+}
+
+.file-field span {
+  cursor: pointer;
+}
+
+.file-field input[type=file] {
+  position: absolute;
+  top: 0;
+  right: 0;
+  left: 0;
+  bottom: 0;
+  width: 100%;
+  margin: 0;
+  padding: 0;
+  font-size: 20px;
+  cursor: pointer;
+  opacity: 0;
+  filter: alpha(opacity=0);
+}
+
+.file-field input[type=file]::-webkit-file-upload-button {
+  display: none;
+}
+
+/* Range
+   ========================================================================== */
+.range-field {
+  position: relative;
+}
+
+input[type=range],
+input[type=range] + .thumb {
+  cursor: pointer;
+}
+
+input[type=range] {
+  position: relative;
+  background-color: transparent;
+  border: none;
+  outline: none;
+  width: 100%;
+  margin: 15px 0;
+  padding: 0;
+}
+
+input[type=range]:focus {
+  outline: none;
+}
+
+input[type=range] + .thumb {
+  position: absolute;
+  top: 10px;
+  left: 0;
+  border: none;
+  height: 0;
+  width: 0;
+  border-radius: 50%;
+  background-color: #26a69a;
+  margin-left: 7px;
+  -webkit-transform-origin: 50% 50%;
+          transform-origin: 50% 50%;
+  -webkit-transform: rotate(-45deg);
+          transform: rotate(-45deg);
+}
+
+input[type=range] + .thumb .value {
+  display: block;
+  width: 30px;
+  text-align: center;
+  color: #26a69a;
+  font-size: 0;
+  -webkit-transform: rotate(45deg);
+          transform: rotate(45deg);
+}
+
+input[type=range] + .thumb.active {
+  border-radius: 50% 50% 50% 0;
+}
+
+input[type=range] + .thumb.active .value {
+  color: #fff;
+  margin-left: -1px;
+  margin-top: 8px;
+  font-size: 10px;
+}
+
+input[type=range] {
+  -webkit-appearance: none;
+}
+
+input[type=range]::-webkit-slider-runnable-track {
+  height: 3px;
+  background: #c2c0c2;
+  border: none;
+}
+
+input[type=range]::-webkit-slider-thumb {
+  border: none;
+  height: 14px;
+  width: 14px;
+  border-radius: 50%;
+  background: #26a69a;
+  -webkit-transition: -webkit-box-shadow .3s;
+  transition: -webkit-box-shadow .3s;
+  transition: box-shadow .3s;
+  transition: box-shadow .3s, -webkit-box-shadow .3s;
+  -webkit-appearance: none;
+  background-color: #26a69a;
+  -webkit-transform-origin: 50% 50%;
+          transform-origin: 50% 50%;
+  margin: -5px 0 0 0;
+}
+
+.keyboard-focused input[type=range]:focus:not(.active)::-webkit-slider-thumb {
+  -webkit-box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);
+          box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);
+}
+
+input[type=range] {
+  /* fix for FF unable to apply focus style bug  */
+  border: 1px solid white;
+  /*required for proper track sizing in FF*/
+}
+
+input[type=range]::-moz-range-track {
+  height: 3px;
+  background: #c2c0c2;
+  border: none;
+}
+
+input[type=range]::-moz-focus-inner {
+  border: 0;
+}
+
+input[type=range]::-moz-range-thumb {
+  border: none;
+  height: 14px;
+  width: 14px;
+  border-radius: 50%;
+  background: #26a69a;
+  -webkit-transition: -webkit-box-shadow .3s;
+  transition: -webkit-box-shadow .3s;
+  transition: box-shadow .3s;
+  transition: box-shadow .3s, -webkit-box-shadow .3s;
+  margin-top: -5px;
+}
+
+input[type=range]:-moz-focusring {
+  outline: 1px solid #fff;
+  outline-offset: -1px;
+}
+
+.keyboard-focused input[type=range]:focus:not(.active)::-moz-range-thumb {
+  box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);
+}
+
+input[type=range]::-ms-track {
+  height: 3px;
+  background: transparent;
+  border-color: transparent;
+  border-width: 6px 0;
+  /*remove default tick marks*/
+  color: transparent;
+}
+
+input[type=range]::-ms-fill-lower {
+  background: #777;
+}
+
+input[type=range]::-ms-fill-upper {
+  background: #ddd;
+}
+
+input[type=range]::-ms-thumb {
+  border: none;
+  height: 14px;
+  width: 14px;
+  border-radius: 50%;
+  background: #26a69a;
+  -webkit-transition: -webkit-box-shadow .3s;
+  transition: -webkit-box-shadow .3s;
+  transition: box-shadow .3s;
+  transition: box-shadow .3s, -webkit-box-shadow .3s;
+}
+
+.keyboard-focused input[type=range]:focus:not(.active)::-ms-thumb {
+  box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);
+}
+
+/***************
+    Nav List
+***************/
+.table-of-contents.fixed {
+  position: fixed;
+}
+
+.table-of-contents li {
+  padding: 2px 0;
+}
+
+.table-of-contents a {
+  display: inline-block;
+  font-weight: 300;
+  color: #757575;
+  padding-left: 16px;
+  height: 1.5rem;
+  line-height: 1.5rem;
+  letter-spacing: .4;
+  display: inline-block;
+}
+
+.table-of-contents a:hover {
+  color: #a8a8a8;
+  padding-left: 15px;
+  border-left: 1px solid #ee6e73;
+}
+
+.table-of-contents a.active {
+  font-weight: 500;
+  padding-left: 14px;
+  border-left: 2px solid #ee6e73;
+}
+
+.sidenav {
+  position: fixed;
+  width: 300px;
+  left: 0;
+  top: 0;
+  margin: 0;
+  -webkit-transform: translateX(-100%);
+          transform: translateX(-100%);
+  height: 100%;
+  height: calc(100% + 60px);
+  height: -moz-calc(100%);
+  padding-bottom: 60px;
+  background-color: #fff;
+  z-index: 999;
+  overflow-y: auto;
+  will-change: transform;
+  -webkit-backface-visibility: hidden;
+          backface-visibility: hidden;
+  -webkit-transform: translateX(-105%);
+          transform: translateX(-105%);
+}
+
+.sidenav.right-aligned {
+  right: 0;
+  -webkit-transform: translateX(105%);
+          transform: translateX(105%);
+  left: auto;
+  -webkit-transform: translateX(100%);
+          transform: translateX(100%);
+}
+
+.sidenav .collapsible {
+  margin: 0;
+}
+
+.sidenav li {
+  float: none;
+  line-height: 48px;
+}
+
+.sidenav li.active {
+  background-color: rgba(0, 0, 0, 0.05);
+}
+
+.sidenav li > a {
+  color: rgba(0, 0, 0, 0.87);
+  display: block;
+  font-size: 14px;
+  font-weight: 500;
+  height: 48px;
+  line-height: 48px;
+  padding: 0 32px;
+}
+
+.sidenav li > a:hover {
+  background-color: rgba(0, 0, 0, 0.05);
+}
+
+.sidenav li > a.btn, .sidenav li > a.btn-large, .sidenav li > a.btn-small, .sidenav li > a.btn-large, .sidenav li > a.btn-flat, .sidenav li > a.btn-floating {
+  margin: 10px 15px;
+}
+
+.sidenav li > a.btn, .sidenav li > a.btn-large, .sidenav li > a.btn-small, .sidenav li > a.btn-large, .sidenav li > a.btn-floating {
+  color: #fff;
+}
+
+.sidenav li > a.btn-flat {
+  color: #343434;
+}
+
+.sidenav li > a.btn:hover, .sidenav li > a.btn-large:hover, .sidenav li > a.btn-small:hover, .sidenav li > a.btn-large:hover {
+  background-color: #2bbbad;
+}
+
+.sidenav li > a.btn-floating:hover {
+  background-color: #26a69a;
+}
+
+.sidenav li > a > i,
+.sidenav li > a > [class^="mdi-"], .sidenav li > a li > a > [class*="mdi-"],
+.sidenav li > a > i.material-icons {
+  float: left;
+  height: 48px;
+  line-height: 48px;
+  margin: 0 32px 0 0;
+  width: 24px;
+  color: rgba(0, 0, 0, 0.54);
+}
+
+.sidenav .divider {
+  margin: 8px 0 0 0;
+}
+
+.sidenav .subheader {
+  cursor: initial;
+  pointer-events: none;
+  color: rgba(0, 0, 0, 0.54);
+  font-size: 14px;
+  font-weight: 500;
+  line-height: 48px;
+}
+
+.sidenav .subheader:hover {
+  background-color: transparent;
+}
+
+.sidenav .user-view {
+  position: relative;
+  padding: 32px 32px 0;
+  margin-bottom: 8px;
+}
+
+.sidenav .user-view > a {
+  height: auto;
+  padding: 0;
+}
+
+.sidenav .user-view > a:hover {
+  background-color: transparent;
+}
+
+.sidenav .user-view .background {
+  overflow: hidden;
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  z-index: -1;
+}
+
+.sidenav .user-view .circle, .sidenav .user-view .name, .sidenav .user-view .email {
+  display: block;
+}
+
+.sidenav .user-view .circle {
+  height: 64px;
+  width: 64px;
+}
+
+.sidenav .user-view .name,
+.sidenav .user-view .email {
+  font-size: 14px;
+  line-height: 24px;
+}
+
+.sidenav .user-view .name {
+  margin-top: 16px;
+  font-weight: 500;
+}
+
+.sidenav .user-view .email {
+  padding-bottom: 16px;
+  font-weight: 400;
+}
+
+.drag-target {
+  height: 100%;
+  width: 10px;
+  position: fixed;
+  top: 0;
+  z-index: 998;
+}
+
+.drag-target.right-aligned {
+  right: 0;
+}
+
+.sidenav.sidenav-fixed {
+  left: 0;
+  -webkit-transform: translateX(0);
+          transform: translateX(0);
+  position: fixed;
+}
+
+.sidenav.sidenav-fixed.right-aligned {
+  right: 0;
+  left: auto;
+}
+
+@media only screen and (max-width: 992px) {
+  .sidenav.sidenav-fixed {
+    -webkit-transform: translateX(-105%);
+            transform: translateX(-105%);
+  }
+  .sidenav.sidenav-fixed.right-aligned {
+    -webkit-transform: translateX(105%);
+            transform: translateX(105%);
+  }
+  .sidenav > a {
+    padding: 0 16px;
+  }
+  .sidenav .user-view {
+    padding: 16px 16px 0;
+  }
+}
+
+.sidenav .collapsible-body > ul:not(.collapsible) > li.active,
+.sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active {
+  background-color: #ee6e73;
+}
+
+.sidenav .collapsible-body > ul:not(.collapsible) > li.active a,
+.sidenav.sidenav-fixed .collapsible-body > ul:not(.collapsible) > li.active a {
+  color: #fff;
+}
+
+.sidenav .collapsible-body {
+  padding: 0;
+}
+
+.sidenav-overlay {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  opacity: 0;
+  height: 120vh;
+  background-color: rgba(0, 0, 0, 0.5);
+  z-index: 997;
+  display: none;
+}
+
+/*
+    @license
+    Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+    This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+    The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+    The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+    Code distributed by Google as part of the polymer project is also
+    subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+ */
+/**************************/
+/* STYLES FOR THE SPINNER */
+/**************************/
+/*
+ * Constants:
+ *      STROKEWIDTH = 3px
+ *      ARCSIZE     = 270 degrees (amount of circle the arc takes up)
+ *      ARCTIME     = 1333ms (time it takes to expand and contract arc)
+ *      ARCSTARTROT = 216 degrees (how much the start location of the arc
+ *                                should rotate each time, 216 gives us a
+ *                                5 pointed star shape (it's 360/5 * 3).
+ *                                For a 7 pointed star, we might do
+ *                                360/7 * 3 = 154.286)
+ *      CONTAINERWIDTH = 28px
+ *      SHRINK_TIME = 400ms
+ */
+.preloader-wrapper {
+  display: inline-block;
+  position: relative;
+  width: 50px;
+  height: 50px;
+}
+
+.preloader-wrapper.small {
+  width: 36px;
+  height: 36px;
+}
+
+.preloader-wrapper.big {
+  width: 64px;
+  height: 64px;
+}
+
+.preloader-wrapper.active {
+  /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */
+  -webkit-animation: container-rotate 1568ms linear infinite;
+  animation: container-rotate 1568ms linear infinite;
+}
+
+@-webkit-keyframes container-rotate {
+  to {
+    -webkit-transform: rotate(360deg);
+  }
+}
+
+@keyframes container-rotate {
+  to {
+    -webkit-transform: rotate(360deg);
+            transform: rotate(360deg);
+  }
+}
+
+.spinner-layer {
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  opacity: 0;
+  border-color: #26a69a;
+}
+
+.spinner-blue,
+.spinner-blue-only {
+  border-color: #4285f4;
+}
+
+.spinner-red,
+.spinner-red-only {
+  border-color: #db4437;
+}
+
+.spinner-yellow,
+.spinner-yellow-only {
+  border-color: #f4b400;
+}
+
+.spinner-green,
+.spinner-green-only {
+  border-color: #0f9d58;
+}
+
+/**
+ * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee):
+ *
+ * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't
+ * guarantee that the animation will start _exactly_ after that value. So we avoid using
+ * animation-delay and instead set custom keyframes for each color (as redundant as it
+ * seems).
+ *
+ * We write out each animation in full (instead of separating animation-name,
+ * animation-duration, etc.) because under the polyfill, Safari does not recognize those
+ * specific properties properly, treats them as -webkit-animation, and overrides the
+ * other animation rules. See https://github.com/Polymer/platform/issues/53.
+ */
+.active .spinner-layer.spinner-blue {
+  /* durations: 4 * ARCTIME */
+  -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+  animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+}
+
+.active .spinner-layer.spinner-red {
+  /* durations: 4 * ARCTIME */
+  -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+  animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+}
+
+.active .spinner-layer.spinner-yellow {
+  /* durations: 4 * ARCTIME */
+  -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+  animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+}
+
+.active .spinner-layer.spinner-green {
+  /* durations: 4 * ARCTIME */
+  -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+  animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+}
+
+.active .spinner-layer,
+.active .spinner-layer.spinner-blue-only,
+.active .spinner-layer.spinner-red-only,
+.active .spinner-layer.spinner-yellow-only,
+.active .spinner-layer.spinner-green-only {
+  /* durations: 4 * ARCTIME */
+  opacity: 1;
+  -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+  animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+}
+
+@-webkit-keyframes fill-unfill-rotate {
+  12.5% {
+    -webkit-transform: rotate(135deg);
+  }
+  /* 0.5 * ARCSIZE */
+  25% {
+    -webkit-transform: rotate(270deg);
+  }
+  /* 1   * ARCSIZE */
+  37.5% {
+    -webkit-transform: rotate(405deg);
+  }
+  /* 1.5 * ARCSIZE */
+  50% {
+    -webkit-transform: rotate(540deg);
+  }
+  /* 2   * ARCSIZE */
+  62.5% {
+    -webkit-transform: rotate(675deg);
+  }
+  /* 2.5 * ARCSIZE */
+  75% {
+    -webkit-transform: rotate(810deg);
+  }
+  /* 3   * ARCSIZE */
+  87.5% {
+    -webkit-transform: rotate(945deg);
+  }
+  /* 3.5 * ARCSIZE */
+  to {
+    -webkit-transform: rotate(1080deg);
+  }
+  /* 4   * ARCSIZE */
+}
+
+@keyframes fill-unfill-rotate {
+  12.5% {
+    -webkit-transform: rotate(135deg);
+            transform: rotate(135deg);
+  }
+  /* 0.5 * ARCSIZE */
+  25% {
+    -webkit-transform: rotate(270deg);
+            transform: rotate(270deg);
+  }
+  /* 1   * ARCSIZE */
+  37.5% {
+    -webkit-transform: rotate(405deg);
+            transform: rotate(405deg);
+  }
+  /* 1.5 * ARCSIZE */
+  50% {
+    -webkit-transform: rotate(540deg);
+            transform: rotate(540deg);
+  }
+  /* 2   * ARCSIZE */
+  62.5% {
+    -webkit-transform: rotate(675deg);
+            transform: rotate(675deg);
+  }
+  /* 2.5 * ARCSIZE */
+  75% {
+    -webkit-transform: rotate(810deg);
+            transform: rotate(810deg);
+  }
+  /* 3   * ARCSIZE */
+  87.5% {
+    -webkit-transform: rotate(945deg);
+            transform: rotate(945deg);
+  }
+  /* 3.5 * ARCSIZE */
+  to {
+    -webkit-transform: rotate(1080deg);
+            transform: rotate(1080deg);
+  }
+  /* 4   * ARCSIZE */
+}
+
+@-webkit-keyframes blue-fade-in-out {
+  from {
+    opacity: 1;
+  }
+  25% {
+    opacity: 1;
+  }
+  26% {
+    opacity: 0;
+  }
+  89% {
+    opacity: 0;
+  }
+  90% {
+    opacity: 1;
+  }
+  100% {
+    opacity: 1;
+  }
+}
+
+@keyframes blue-fade-in-out {
+  from {
+    opacity: 1;
+  }
+  25% {
+    opacity: 1;
+  }
+  26% {
+    opacity: 0;
+  }
+  89% {
+    opacity: 0;
+  }
+  90% {
+    opacity: 1;
+  }
+  100% {
+    opacity: 1;
+  }
+}
+
+@-webkit-keyframes red-fade-in-out {
+  from {
+    opacity: 0;
+  }
+  15% {
+    opacity: 0;
+  }
+  25% {
+    opacity: 1;
+  }
+  50% {
+    opacity: 1;
+  }
+  51% {
+    opacity: 0;
+  }
+}
+
+@keyframes red-fade-in-out {
+  from {
+    opacity: 0;
+  }
+  15% {
+    opacity: 0;
+  }
+  25% {
+    opacity: 1;
+  }
+  50% {
+    opacity: 1;
+  }
+  51% {
+    opacity: 0;
+  }
+}
+
+@-webkit-keyframes yellow-fade-in-out {
+  from {
+    opacity: 0;
+  }
+  40% {
+    opacity: 0;
+  }
+  50% {
+    opacity: 1;
+  }
+  75% {
+    opacity: 1;
+  }
+  76% {
+    opacity: 0;
+  }
+}
+
+@keyframes yellow-fade-in-out {
+  from {
+    opacity: 0;
+  }
+  40% {
+    opacity: 0;
+  }
+  50% {
+    opacity: 1;
+  }
+  75% {
+    opacity: 1;
+  }
+  76% {
+    opacity: 0;
+  }
+}
+
+@-webkit-keyframes green-fade-in-out {
+  from {
+    opacity: 0;
+  }
+  65% {
+    opacity: 0;
+  }
+  75% {
+    opacity: 1;
+  }
+  90% {
+    opacity: 1;
+  }
+  100% {
+    opacity: 0;
+  }
+}
+
+@keyframes green-fade-in-out {
+  from {
+    opacity: 0;
+  }
+  65% {
+    opacity: 0;
+  }
+  75% {
+    opacity: 1;
+  }
+  90% {
+    opacity: 1;
+  }
+  100% {
+    opacity: 0;
+  }
+}
+
+/**
+ * Patch the gap that appear between the two adjacent div.circle-clipper while the
+ * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11).
+ */
+.gap-patch {
+  position: absolute;
+  top: 0;
+  left: 45%;
+  width: 10%;
+  height: 100%;
+  overflow: hidden;
+  border-color: inherit;
+}
+
+.gap-patch .circle {
+  width: 1000%;
+  left: -450%;
+}
+
+.circle-clipper {
+  display: inline-block;
+  position: relative;
+  width: 50%;
+  height: 100%;
+  overflow: hidden;
+  border-color: inherit;
+}
+
+.circle-clipper .circle {
+  width: 200%;
+  height: 100%;
+  border-width: 3px;
+  /* STROKEWIDTH */
+  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;
+}
+
+.circle-clipper.left .circle {
+  left: 0;
+  border-right-color: transparent !important;
+  -webkit-transform: rotate(129deg);
+  transform: rotate(129deg);
+}
+
+.circle-clipper.right .circle {
+  left: -100%;
+  border-left-color: transparent !important;
+  -webkit-transform: rotate(-129deg);
+  transform: rotate(-129deg);
+}
+
+.active .circle-clipper.left .circle {
+  /* duration: ARCTIME */
+  -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+  animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+}
+
+.active .circle-clipper.right .circle {
+  /* duration: ARCTIME */
+  -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+  animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;
+}
+
+@-webkit-keyframes left-spin {
+  from {
+    -webkit-transform: rotate(130deg);
+  }
+  50% {
+    -webkit-transform: rotate(-5deg);
+  }
+  to {
+    -webkit-transform: rotate(130deg);
+  }
+}
+
+@keyframes left-spin {
+  from {
+    -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 right-spin {
+  from {
+    -webkit-transform: rotate(-130deg);
+  }
+  50% {
+    -webkit-transform: rotate(5deg);
+  }
+  to {
+    -webkit-transform: rotate(-130deg);
+  }
+}
+
+@keyframes right-spin {
+  from {
+    -webkit-transform: rotate(-130deg);
+            transform: rotate(-130deg);
+  }
+  50% {
+    -webkit-transform: rotate(5deg);
+            transform: rotate(5deg);
+  }
+  to {
+    -webkit-transform: rotate(-130deg);
+            transform: rotate(-130deg);
+  }
+}
+
+#spinnerContainer.cooldown {
+  /* duration: SHRINK_TIME */
+  -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);
+  animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);
+}
+
+@-webkit-keyframes fade-out {
+  from {
+    opacity: 1;
+  }
+  to {
+    opacity: 0;
+  }
+}
+
+@keyframes fade-out {
+  from {
+    opacity: 1;
+  }
+  to {
+    opacity: 0;
+  }
+}
+
+.slider {
+  position: relative;
+  height: 400px;
+  width: 100%;
+}
+
+.slider.fullscreen {
+  height: 100%;
+  width: 100%;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+
+.slider.fullscreen ul.slides {
+  height: 100%;
+}
+
+.slider.fullscreen ul.indicators {
+  z-index: 2;
+  bottom: 30px;
+}
+
+.slider .slides {
+  background-color: #9e9e9e;
+  margin: 0;
+  height: 400px;
+}
+
+.slider .slides li {
+  opacity: 0;
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 1;
+  width: 100%;
+  height: inherit;
+  overflow: hidden;
+}
+
+.slider .slides li img {
+  height: 100%;
+  width: 100%;
+  background-size: cover;
+  background-position: center;
+}
+
+.slider .slides li .caption {
+  color: #fff;
+  position: absolute;
+  top: 15%;
+  left: 15%;
+  width: 70%;
+  opacity: 0;
+}
+
+.slider .slides li .caption p {
+  color: #e0e0e0;
+}
+
+.slider .slides li.active {
+  z-index: 2;
+}
+
+.slider .indicators {
+  position: absolute;
+  text-align: center;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  margin: 0;
+}
+
+.slider .indicators .indicator-item {
+  display: inline-block;
+  position: relative;
+  cursor: pointer;
+  height: 16px;
+  width: 16px;
+  margin: 0 12px;
+  background-color: #e0e0e0;
+  -webkit-transition: background-color .3s;
+  transition: background-color .3s;
+  border-radius: 50%;
+}
+
+.slider .indicators .indicator-item.active {
+  background-color: #4CAF50;
+}
+
+.carousel {
+  overflow: hidden;
+  position: relative;
+  width: 100%;
+  height: 400px;
+  -webkit-perspective: 500px;
+          perspective: 500px;
+  -webkit-transform-style: preserve-3d;
+          transform-style: preserve-3d;
+  -webkit-transform-origin: 0% 50%;
+          transform-origin: 0% 50%;
+}
+
+.carousel.carousel-slider {
+  top: 0;
+  left: 0;
+}
+
+.carousel.carousel-slider .carousel-fixed-item {
+  position: absolute;
+  left: 0;
+  right: 0;
+  bottom: 20px;
+  z-index: 1;
+}
+
+.carousel.carousel-slider .carousel-fixed-item.with-indicators {
+  bottom: 68px;
+}
+
+.carousel.carousel-slider .carousel-item {
+  width: 100%;
+  height: 100%;
+  min-height: 400px;
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.carousel.carousel-slider .carousel-item h2 {
+  font-size: 24px;
+  font-weight: 500;
+  line-height: 32px;
+}
+
+.carousel.carousel-slider .carousel-item p {
+  font-size: 15px;
+}
+
+.carousel .carousel-item {
+  visibility: hidden;
+  width: 200px;
+  height: 200px;
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.carousel .carousel-item > img {
+  width: 100%;
+}
+
+.carousel .indicators {
+  position: absolute;
+  text-align: center;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  margin: 0;
+}
+
+.carousel .indicators .indicator-item {
+  display: inline-block;
+  position: relative;
+  cursor: pointer;
+  height: 8px;
+  width: 8px;
+  margin: 24px 4px;
+  background-color: rgba(255, 255, 255, 0.5);
+  -webkit-transition: background-color .3s;
+  transition: background-color .3s;
+  border-radius: 50%;
+}
+
+.carousel .indicators .indicator-item.active {
+  background-color: #fff;
+}
+
+.carousel.scrolling .carousel-item .materialboxed,
+.carousel .carousel-item:not(.active) .materialboxed {
+  pointer-events: none;
+}
+
+.tap-target-wrapper {
+  width: 800px;
+  height: 800px;
+  position: fixed;
+  z-index: 1000;
+  visibility: hidden;
+  -webkit-transition: visibility 0s .3s;
+  transition: visibility 0s .3s;
+}
+
+.tap-target-wrapper.open {
+  visibility: visible;
+  -webkit-transition: visibility 0s;
+  transition: visibility 0s;
+}
+
+.tap-target-wrapper.open .tap-target {
+  -webkit-transform: scale(1);
+          transform: scale(1);
+  opacity: .95;
+  -webkit-transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+  transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+  transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+  transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+}
+
+.tap-target-wrapper.open .tap-target-wave::before {
+  -webkit-transform: scale(1);
+          transform: scale(1);
+}
+
+.tap-target-wrapper.open .tap-target-wave::after {
+  visibility: visible;
+  -webkit-animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;
+          animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;
+  -webkit-transition: opacity .3s,
+ visibility 0s 1s,
+ -webkit-transform .3s;
+  transition: opacity .3s,
+ visibility 0s 1s,
+ -webkit-transform .3s;
+  transition: opacity .3s,
+ transform .3s,
+ visibility 0s 1s;
+  transition: opacity .3s,
+ transform .3s,
+ visibility 0s 1s,
+ -webkit-transform .3s;
+}
+
+.tap-target {
+  position: absolute;
+  font-size: 1rem;
+  border-radius: 50%;
+  background-color: #ee6e73;
+  -webkit-box-shadow: 0 20px 20px 0 rgba(0, 0, 0, 0.14), 0 10px 50px 0 rgba(0, 0, 0, 0.12), 0 30px 10px -20px rgba(0, 0, 0, 0.2);
+          box-shadow: 0 20px 20px 0 rgba(0, 0, 0, 0.14), 0 10px 50px 0 rgba(0, 0, 0, 0.12), 0 30px 10px -20px rgba(0, 0, 0, 0.2);
+  width: 100%;
+  height: 100%;
+  opacity: 0;
+  -webkit-transform: scale(0);
+          transform: scale(0);
+  -webkit-transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+  transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+  transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+  transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+}
+
+.tap-target-content {
+  position: relative;
+  display: table-cell;
+}
+
+.tap-target-wave {
+  position: absolute;
+  border-radius: 50%;
+  z-index: 10001;
+}
+
+.tap-target-wave::before, .tap-target-wave::after {
+  content: '';
+  display: block;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  border-radius: 50%;
+  background-color: #ffffff;
+}
+
+.tap-target-wave::before {
+  -webkit-transform: scale(0);
+          transform: scale(0);
+  -webkit-transition: -webkit-transform .3s;
+  transition: -webkit-transform .3s;
+  transition: transform .3s;
+  transition: transform .3s, -webkit-transform .3s;
+}
+
+.tap-target-wave::after {
+  visibility: hidden;
+  -webkit-transition: opacity .3s,
+ visibility 0s,
+ -webkit-transform .3s;
+  transition: opacity .3s,
+ visibility 0s,
+ -webkit-transform .3s;
+  transition: opacity .3s,
+ transform .3s,
+ visibility 0s;
+  transition: opacity .3s,
+ transform .3s,
+ visibility 0s,
+ -webkit-transform .3s;
+  z-index: -1;
+}
+
+.tap-target-origin {
+  top: 50%;
+  left: 50%;
+  -webkit-transform: translate(-50%, -50%);
+          transform: translate(-50%, -50%);
+  z-index: 10002;
+  position: absolute !important;
+}
+
+.tap-target-origin:not(.btn):not(.btn-large):not(.btn-small), .tap-target-origin:not(.btn):not(.btn-large):not(.btn-small):hover {
+  background: none;
+}
+
+@media only screen and (max-width: 600px) {
+  .tap-target, .tap-target-wrapper {
+    width: 600px;
+    height: 600px;
+  }
+}
+
+.pulse {
+  overflow: visible;
+  position: relative;
+}
+
+.pulse::before {
+  content: '';
+  display: block;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  top: 0;
+  left: 0;
+  background-color: inherit;
+  border-radius: inherit;
+  -webkit-transition: opacity .3s, -webkit-transform .3s;
+  transition: opacity .3s, -webkit-transform .3s;
+  transition: opacity .3s, transform .3s;
+  transition: opacity .3s, transform .3s, -webkit-transform .3s;
+  -webkit-animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;
+          animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;
+  z-index: -1;
+}
+
+@-webkit-keyframes pulse-animation {
+  0% {
+    opacity: 1;
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+  50% {
+    opacity: 0;
+    -webkit-transform: scale(1.5);
+            transform: scale(1.5);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: scale(1.5);
+            transform: scale(1.5);
+  }
+}
+
+@keyframes pulse-animation {
+  0% {
+    opacity: 1;
+    -webkit-transform: scale(1);
+            transform: scale(1);
+  }
+  50% {
+    opacity: 0;
+    -webkit-transform: scale(1.5);
+            transform: scale(1.5);
+  }
+  100% {
+    opacity: 0;
+    -webkit-transform: scale(1.5);
+            transform: scale(1.5);
+  }
+}
+
+/* Modal */
+.datepicker-modal {
+  max-width: 325px;
+  min-width: 300px;
+  max-height: none;
+}
+
+.datepicker-container.modal-content {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  padding: 0;
+}
+
+.datepicker-controls {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-pack: justify;
+  -webkit-justify-content: space-between;
+      -ms-flex-pack: justify;
+          justify-content: space-between;
+  width: 280px;
+  margin: 0 auto;
+}
+
+.datepicker-controls .selects-container {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+}
+
+.datepicker-controls .select-wrapper input {
+  border-bottom: none;
+  text-align: center;
+  margin: 0;
+}
+
+.datepicker-controls .select-wrapper input:focus {
+  border-bottom: none;
+}
+
+.datepicker-controls .select-wrapper .caret {
+  display: none;
+}
+
+.datepicker-controls .select-year input {
+  width: 50px;
+}
+
+.datepicker-controls .select-month input {
+  width: 70px;
+}
+
+.month-prev, .month-next {
+  margin-top: 4px;
+  cursor: pointer;
+  background-color: transparent;
+  border: none;
+}
+
+/* Date Display */
+.datepicker-date-display {
+  -webkit-box-flex: 1;
+  -webkit-flex: 1 auto;
+      -ms-flex: 1 auto;
+          flex: 1 auto;
+  background-color: #26a69a;
+  color: #fff;
+  padding: 20px 22px;
+  font-weight: 500;
+}
+
+.datepicker-date-display .year-text {
+  display: block;
+  font-size: 1.5rem;
+  line-height: 25px;
+  color: rgba(255, 255, 255, 0.7);
+}
+
+.datepicker-date-display .date-text {
+  display: block;
+  font-size: 2.8rem;
+  line-height: 47px;
+  font-weight: 500;
+}
+
+/* Calendar */
+.datepicker-calendar-container {
+  -webkit-box-flex: 2.5;
+  -webkit-flex: 2.5 auto;
+      -ms-flex: 2.5 auto;
+          flex: 2.5 auto;
+}
+
+.datepicker-table {
+  width: 280px;
+  font-size: 1rem;
+  margin: 0 auto;
+}
+
+.datepicker-table thead {
+  border-bottom: none;
+}
+
+.datepicker-table th {
+  padding: 10px 5px;
+  text-align: center;
+}
+
+.datepicker-table tr {
+  border: none;
+}
+
+.datepicker-table abbr {
+  text-decoration: none;
+  color: #999;
+}
+
+.datepicker-table td {
+  border-radius: 50%;
+  padding: 0;
+}
+
+.datepicker-table td.is-today {
+  color: #26a69a;
+}
+
+.datepicker-table td.is-selected {
+  background-color: #26a69a;
+  color: #fff;
+}
+
+.datepicker-table td.is-outside-current-month, .datepicker-table td.is-disabled {
+  color: rgba(0, 0, 0, 0.3);
+  pointer-events: none;
+}
+
+.datepicker-day-button {
+  background-color: transparent;
+  border: none;
+  line-height: 38px;
+  display: block;
+  width: 100%;
+  border-radius: 50%;
+  padding: 0 5px;
+  cursor: pointer;
+  color: inherit;
+}
+
+.datepicker-day-button:focus {
+  background-color: rgba(43, 161, 150, 0.25);
+}
+
+/* Footer */
+.datepicker-footer {
+  width: 280px;
+  margin: 0 auto;
+  padding-bottom: 5px;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-pack: justify;
+  -webkit-justify-content: space-between;
+      -ms-flex-pack: justify;
+          justify-content: space-between;
+}
+
+.datepicker-cancel,
+.datepicker-clear,
+.datepicker-today,
+.datepicker-done {
+  color: #26a69a;
+  padding: 0 1rem;
+}
+
+.datepicker-clear {
+  color: #F44336;
+}
+
+/* Media Queries */
+@media only screen and (min-width: 601px) {
+  .datepicker-modal {
+    max-width: 625px;
+  }
+  .datepicker-container.modal-content {
+    -webkit-box-orient: horizontal;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: row;
+        -ms-flex-direction: row;
+            flex-direction: row;
+  }
+  .datepicker-date-display {
+    -webkit-box-flex: 0;
+    -webkit-flex: 0 1 270px;
+        -ms-flex: 0 1 270px;
+            flex: 0 1 270px;
+  }
+  .datepicker-controls,
+  .datepicker-table,
+  .datepicker-footer {
+    width: 320px;
+  }
+  .datepicker-day-button {
+    line-height: 44px;
+  }
+}
+
+/* Timepicker Containers */
+.timepicker-modal {
+  max-width: 325px;
+  max-height: none;
+}
+
+.timepicker-container.modal-content {
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-orient: vertical;
+  -webkit-box-direction: normal;
+  -webkit-flex-direction: column;
+      -ms-flex-direction: column;
+          flex-direction: column;
+  padding: 0;
+}
+
+.text-primary {
+  color: white;
+}
+
+/* Clock Digital Display */
+.timepicker-digital-display {
+  -webkit-box-flex: 1;
+  -webkit-flex: 1 auto;
+      -ms-flex: 1 auto;
+          flex: 1 auto;
+  background-color: #26a69a;
+  padding: 10px;
+  font-weight: 300;
+}
+
+.timepicker-text-container {
+  font-size: 4rem;
+  font-weight: bold;
+  text-align: center;
+  color: rgba(255, 255, 255, 0.6);
+  font-weight: 400;
+  position: relative;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.timepicker-span-hours,
+.timepicker-span-minutes,
+.timepicker-span-am-pm div {
+  cursor: pointer;
+}
+
+.timepicker-span-hours {
+  margin-right: 3px;
+}
+
+.timepicker-span-minutes {
+  margin-left: 3px;
+}
+
+.timepicker-display-am-pm {
+  font-size: 1.3rem;
+  position: absolute;
+  right: 1rem;
+  bottom: 1rem;
+  font-weight: 400;
+}
+
+/* Analog Clock Display */
+.timepicker-analog-display {
+  -webkit-box-flex: 2.5;
+  -webkit-flex: 2.5 auto;
+      -ms-flex: 2.5 auto;
+          flex: 2.5 auto;
+}
+
+.timepicker-plate {
+  background-color: #eee;
+  border-radius: 50%;
+  width: 270px;
+  height: 270px;
+  overflow: visible;
+  position: relative;
+  margin: auto;
+  margin-top: 25px;
+  margin-bottom: 5px;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+}
+
+.timepicker-canvas,
+.timepicker-dial {
+  position: absolute;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+}
+
+.timepicker-minutes {
+  visibility: hidden;
+}
+
+.timepicker-tick {
+  border-radius: 50%;
+  color: rgba(0, 0, 0, 0.87);
+  line-height: 40px;
+  text-align: center;
+  width: 40px;
+  height: 40px;
+  position: absolute;
+  cursor: pointer;
+  font-size: 15px;
+}
+
+.timepicker-tick.active,
+.timepicker-tick:hover {
+  background-color: rgba(38, 166, 154, 0.25);
+}
+
+.timepicker-dial {
+  -webkit-transition: opacity 350ms, -webkit-transform 350ms;
+  transition: opacity 350ms, -webkit-transform 350ms;
+  transition: transform 350ms, opacity 350ms;
+  transition: transform 350ms, opacity 350ms, -webkit-transform 350ms;
+}
+
+.timepicker-dial-out {
+  opacity: 0;
+}
+
+.timepicker-dial-out.timepicker-hours {
+  -webkit-transform: scale(1.1, 1.1);
+          transform: scale(1.1, 1.1);
+}
+
+.timepicker-dial-out.timepicker-minutes {
+  -webkit-transform: scale(0.8, 0.8);
+          transform: scale(0.8, 0.8);
+}
+
+.timepicker-canvas {
+  -webkit-transition: opacity 175ms;
+  transition: opacity 175ms;
+}
+
+.timepicker-canvas line {
+  stroke: #26a69a;
+  stroke-width: 4;
+  stroke-linecap: round;
+}
+
+.timepicker-canvas-out {
+  opacity: 0.25;
+}
+
+.timepicker-canvas-bearing {
+  stroke: none;
+  fill: #26a69a;
+}
+
+.timepicker-canvas-bg {
+  stroke: none;
+  fill: #26a69a;
+}
+
+/* Footer */
+.timepicker-footer {
+  margin: 0 auto;
+  padding: 5px 1rem;
+  display: -webkit-box;
+  display: -webkit-flex;
+  display: -ms-flexbox;
+  display: flex;
+  -webkit-box-pack: justify;
+  -webkit-justify-content: space-between;
+      -ms-flex-pack: justify;
+          justify-content: space-between;
+}
+
+.timepicker-clear {
+  color: #F44336;
+}
+
+.timepicker-close {
+  color: #26a69a;
+}
+
+.timepicker-clear,
+.timepicker-close {
+  padding: 0 20px;
+}
+
+/* Media Queries */
+@media only screen and (min-width: 601px) {
+  .timepicker-modal {
+    max-width: 600px;
+  }
+  .timepicker-container.modal-content {
+    -webkit-box-orient: horizontal;
+    -webkit-box-direction: normal;
+    -webkit-flex-direction: row;
+        -ms-flex-direction: row;
+            flex-direction: row;
+  }
+  .timepicker-text-container {
+    top: 32%;
+  }
+  .timepicker-display-am-pm {
+    position: relative;
+    right: auto;
+    bottom: auto;
+    text-align: center;
+    margin-top: 1.2rem;
+  }
+}
diff --git a/css/style.css b/css/style.css
new file mode 100644
index 0000000..303f503
--- /dev/null
+++ b/css/style.css
@@ -0,0 +1,10 @@
+
+.td-input {
+    padding: 0;
+  }
+  
+.td-input input[type="text"]:not(.browser-default) {
+    margin: 0;
+    background-repeat: no-repeat;
+    background-position: right center;
+}
\ No newline at end of file
diff --git a/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2 b/fonts/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..28fc9e48d600b3b63d289184e75d30c5243656cb
GIT binary patch
literal 110560
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

literal 0
HcmV?d00001

diff --git a/nok.png b/img/nok.png
similarity index 100%
rename from nok.png
rename to img/nok.png
diff --git a/ok.png b/img/ok.png
similarity index 100%
rename from ok.png
rename to img/ok.png
diff --git a/wait.gif b/img/wait.gif
similarity index 100%
rename from wait.gif
rename to img/wait.gif
diff --git a/index.php b/index.php
index 47ccd13..dee80e4 100644
--- a/index.php
+++ b/index.php
@@ -1,7 +1,21 @@
+<?php include "connect.php"; ?>
+<html>
+    <head>
+        <title>TablIP</title>
+        <link rel="stylesheet" href="css/style.css"/>
+        <link rel="stylesheet" href="css/icons.css"/>
+        <link rel="stylesheet" href="css/materialize.css"/>
+        <script type="text/javascript" src="js/script.js"></script>
+        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+    </head>
+    <body>
+        <script type="text/javascript" src="js/materialize.js"></script>
 <?php
 if (isset($_GET["site"])) {
     include "siteNetworks.php";
 } else {
     include "sitesList.php";
 }
-?>
\ No newline at end of file
+?>
+    </body>
+</html>
\ No newline at end of file
diff --git a/js/materialize.js b/js/materialize.js
new file mode 100644
index 0000000..1e18382
--- /dev/null
+++ b/js/materialize.js
@@ -0,0 +1,12374 @@
+/*!
+ * Materialize v1.0.0 (http://materializecss.com)
+ * Copyright 2014-2017 Materialize
+ * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
+ */
+var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
+
+var _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; }; }();
+
+function _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; }
+
+function _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; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/*! cash-dom 1.3.5, https://github.com/kenwheeler/cash @license MIT */
+(function (factory) {
+  window.cash = factory();
+})(function () {
+  var doc = document,
+      win = window,
+      ArrayProto = Array.prototype,
+      slice = ArrayProto.slice,
+      filter = ArrayProto.filter,
+      push = ArrayProto.push;
+
+  var noop = function () {},
+      isFunction = function (item) {
+    // @see https://crbug.com/568448
+    return typeof item === typeof noop && item.call;
+  },
+      isString = function (item) {
+    return typeof item === typeof "";
+  };
+
+  var idMatch = /^#[\w-]*$/,
+      classMatch = /^\.[\w-]*$/,
+      htmlMatch = /<.+>/,
+      singlet = /^\w+$/;
+
+  function find(selector, context) {
+    context = context || doc;
+    var elems = classMatch.test(selector) ? context.getElementsByClassName(selector.slice(1)) : singlet.test(selector) ? context.getElementsByTagName(selector) : context.querySelectorAll(selector);
+    return elems;
+  }
+
+  var frag;
+  function parseHTML(str) {
+    if (!frag) {
+      frag = doc.implementation.createHTMLDocument(null);
+      var base = frag.createElement("base");
+      base.href = doc.location.href;
+      frag.head.appendChild(base);
+    }
+
+    frag.body.innerHTML = str;
+
+    return frag.body.childNodes;
+  }
+
+  function onReady(fn) {
+    if (doc.readyState !== "loading") {
+      fn();
+    } else {
+      doc.addEventListener("DOMContentLoaded", fn);
+    }
+  }
+
+  function Init(selector, context) {
+    if (!selector) {
+      return this;
+    }
+
+    // If already a cash collection, don't do any further processing
+    if (selector.cash && selector !== win) {
+      return selector;
+    }
+
+    var elems = selector,
+        i = 0,
+        length;
+
+    if (isString(selector)) {
+      elems = idMatch.test(selector) ?
+      // If an ID use the faster getElementById check
+      doc.getElementById(selector.slice(1)) : htmlMatch.test(selector) ?
+      // If HTML, parse it into real elements
+      parseHTML(selector) :
+      // else use `find`
+      find(selector, context);
+
+      // If function, use as shortcut for DOM ready
+    } else if (isFunction(selector)) {
+      onReady(selector);return this;
+    }
+
+    if (!elems) {
+      return this;
+    }
+
+    // If a single DOM element is passed in or received via ID, return the single element
+    if (elems.nodeType || elems === win) {
+      this[0] = elems;
+      this.length = 1;
+    } else {
+      // Treat like an array and loop through each item.
+      length = this.length = elems.length;
+      for (; i < length; i++) {
+        this[i] = elems[i];
+      }
+    }
+
+    return this;
+  }
+
+  function cash(selector, context) {
+    return new Init(selector, context);
+  }
+
+  var fn = cash.fn = cash.prototype = Init.prototype = { // jshint ignore:line
+    cash: true,
+    length: 0,
+    push: push,
+    splice: ArrayProto.splice,
+    map: ArrayProto.map,
+    init: Init
+  };
+
+  Object.defineProperty(fn, "constructor", { value: cash });
+
+  cash.parseHTML = parseHTML;
+  cash.noop = noop;
+  cash.isFunction = isFunction;
+  cash.isString = isString;
+
+  cash.extend = fn.extend = function (target) {
+    target = target || {};
+
+    var args = slice.call(arguments),
+        length = args.length,
+        i = 1;
+
+    if (args.length === 1) {
+      target = this;
+      i = 0;
+    }
+
+    for (; i < length; i++) {
+      if (!args[i]) {
+        continue;
+      }
+      for (var key in args[i]) {
+        if (args[i].hasOwnProperty(key)) {
+          target[key] = args[i][key];
+        }
+      }
+    }
+
+    return target;
+  };
+
+  function each(collection, callback) {
+    var l = collection.length,
+        i = 0;
+
+    for (; i < l; i++) {
+      if (callback.call(collection[i], collection[i], i, collection) === false) {
+        break;
+      }
+    }
+  }
+
+  function matches(el, selector) {
+    var m = el && (el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector || el.oMatchesSelector);
+    return !!m && m.call(el, selector);
+  }
+
+  function getCompareFunction(selector) {
+    return (
+      /* Use browser's `matches` function if string */
+      isString(selector) ? matches :
+      /* Match a cash element */
+      selector.cash ? function (el) {
+        return selector.is(el);
+      } :
+      /* Direct comparison */
+      function (el, selector) {
+        return el === selector;
+      }
+    );
+  }
+
+  function unique(collection) {
+    return cash(slice.call(collection).filter(function (item, index, self) {
+      return self.indexOf(item) === index;
+    }));
+  }
+
+  cash.extend({
+    merge: function (first, second) {
+      var len = +second.length,
+          i = first.length,
+          j = 0;
+
+      for (; j < len; i++, j++) {
+        first[i] = second[j];
+      }
+
+      first.length = i;
+      return first;
+    },
+
+    each: each,
+    matches: matches,
+    unique: unique,
+    isArray: Array.isArray,
+    isNumeric: function (n) {
+      return !isNaN(parseFloat(n)) && isFinite(n);
+    }
+
+  });
+
+  var uid = cash.uid = "_cash" + Date.now();
+
+  function getDataCache(node) {
+    return node[uid] = node[uid] || {};
+  }
+
+  function setData(node, key, value) {
+    return getDataCache(node)[key] = value;
+  }
+
+  function getData(node, key) {
+    var c = getDataCache(node);
+    if (c[key] === undefined) {
+      c[key] = node.dataset ? node.dataset[key] : cash(node).attr("data-" + key);
+    }
+    return c[key];
+  }
+
+  function removeData(node, key) {
+    var c = getDataCache(node);
+    if (c) {
+      delete c[key];
+    } else if (node.dataset) {
+      delete node.dataset[key];
+    } else {
+      cash(node).removeAttr("data-" + name);
+    }
+  }
+
+  fn.extend({
+    data: function (name, value) {
+      if (isString(name)) {
+        return value === undefined ? getData(this[0], name) : this.each(function (v) {
+          return setData(v, name, value);
+        });
+      }
+
+      for (var key in name) {
+        this.data(key, name[key]);
+      }
+
+      return this;
+    },
+
+    removeData: function (key) {
+      return this.each(function (v) {
+        return removeData(v, key);
+      });
+    }
+
+  });
+
+  var notWhiteMatch = /\S+/g;
+
+  function getClasses(c) {
+    return isString(c) && c.match(notWhiteMatch);
+  }
+
+  function hasClass(v, c) {
+    return v.classList ? v.classList.contains(c) : new RegExp("(^| )" + c + "( |$)", "gi").test(v.className);
+  }
+
+  function addClass(v, c, spacedName) {
+    if (v.classList) {
+      v.classList.add(c);
+    } else if (spacedName.indexOf(" " + c + " ")) {
+      v.className += " " + c;
+    }
+  }
+
+  function removeClass(v, c) {
+    if (v.classList) {
+      v.classList.remove(c);
+    } else {
+      v.className = v.className.replace(c, "");
+    }
+  }
+
+  fn.extend({
+    addClass: function (c) {
+      var classes = getClasses(c);
+
+      return classes ? this.each(function (v) {
+        var spacedName = " " + v.className + " ";
+        each(classes, function (c) {
+          addClass(v, c, spacedName);
+        });
+      }) : this;
+    },
+
+    attr: function (name, value) {
+      if (!name) {
+        return undefined;
+      }
+
+      if (isString(name)) {
+        if (value === undefined) {
+          return this[0] ? this[0].getAttribute ? this[0].getAttribute(name) : this[0][name] : undefined;
+        }
+
+        return this.each(function (v) {
+          if (v.setAttribute) {
+            v.setAttribute(name, value);
+          } else {
+            v[name] = value;
+          }
+        });
+      }
+
+      for (var key in name) {
+        this.attr(key, name[key]);
+      }
+
+      return this;
+    },
+
+    hasClass: function (c) {
+      var check = false,
+          classes = getClasses(c);
+      if (classes && classes.length) {
+        this.each(function (v) {
+          check = hasClass(v, classes[0]);
+          return !check;
+        });
+      }
+      return check;
+    },
+
+    prop: function (name, value) {
+      if (isString(name)) {
+        return value === undefined ? this[0][name] : this.each(function (v) {
+          v[name] = value;
+        });
+      }
+
+      for (var key in name) {
+        this.prop(key, name[key]);
+      }
+
+      return this;
+    },
+
+    removeAttr: function (name) {
+      return this.each(function (v) {
+        if (v.removeAttribute) {
+          v.removeAttribute(name);
+        } else {
+          delete v[name];
+        }
+      });
+    },
+
+    removeClass: function (c) {
+      if (!arguments.length) {
+        return this.attr("class", "");
+      }
+      var classes = getClasses(c);
+      return classes ? this.each(function (v) {
+        each(classes, function (c) {
+          removeClass(v, c);
+        });
+      }) : this;
+    },
+
+    removeProp: function (name) {
+      return this.each(function (v) {
+        delete v[name];
+      });
+    },
+
+    toggleClass: function (c, state) {
+      if (state !== undefined) {
+        return this[state ? "addClass" : "removeClass"](c);
+      }
+      var classes = getClasses(c);
+      return classes ? this.each(function (v) {
+        var spacedName = " " + v.className + " ";
+        each(classes, function (c) {
+          if (hasClass(v, c)) {
+            removeClass(v, c);
+          } else {
+            addClass(v, c, spacedName);
+          }
+        });
+      }) : this;
+    } });
+
+  fn.extend({
+    add: function (selector, context) {
+      return unique(cash.merge(this, cash(selector, context)));
+    },
+
+    each: function (callback) {
+      each(this, callback);
+      return this;
+    },
+
+    eq: function (index) {
+      return cash(this.get(index));
+    },
+
+    filter: function (selector) {
+      if (!selector) {
+        return this;
+      }
+
+      var comparator = isFunction(selector) ? selector : getCompareFunction(selector);
+
+      return cash(filter.call(this, function (e) {
+        return comparator(e, selector);
+      }));
+    },
+
+    first: function () {
+      return this.eq(0);
+    },
+
+    get: function (index) {
+      if (index === undefined) {
+        return slice.call(this);
+      }
+      return index < 0 ? this[index + this.length] : this[index];
+    },
+
+    index: function (elem) {
+      var child = elem ? cash(elem)[0] : this[0],
+          collection = elem ? this : cash(child).parent().children();
+      return slice.call(collection).indexOf(child);
+    },
+
+    last: function () {
+      return this.eq(-1);
+    }
+
+  });
+
+  var camelCase = function () {
+    var camelRegex = /(?:^\w|[A-Z]|\b\w)/g,
+        whiteSpace = /[\s-_]+/g;
+    return function (str) {
+      return str.replace(camelRegex, function (letter, index) {
+        return letter[index === 0 ? "toLowerCase" : "toUpperCase"]();
+      }).replace(whiteSpace, "");
+    };
+  }();
+
+  var getPrefixedProp = function () {
+    var cache = {},
+        doc = document,
+        div = doc.createElement("div"),
+        style = div.style;
+
+    return function (prop) {
+      prop = camelCase(prop);
+      if (cache[prop]) {
+        return cache[prop];
+      }
+
+      var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),
+          prefixes = ["webkit", "moz", "ms", "o"],
+          props = (prop + " " + prefixes.join(ucProp + " ") + ucProp).split(" ");
+
+      each(props, function (p) {
+        if (p in style) {
+          cache[p] = prop = cache[prop] = p;
+          return false;
+        }
+      });
+
+      return cache[prop];
+    };
+  }();
+
+  cash.prefixedProp = getPrefixedProp;
+  cash.camelCase = camelCase;
+
+  fn.extend({
+    css: function (prop, value) {
+      if (isString(prop)) {
+        prop = getPrefixedProp(prop);
+        return arguments.length > 1 ? this.each(function (v) {
+          return v.style[prop] = value;
+        }) : win.getComputedStyle(this[0])[prop];
+      }
+
+      for (var key in prop) {
+        this.css(key, prop[key]);
+      }
+
+      return this;
+    }
+
+  });
+
+  function compute(el, prop) {
+    return parseInt(win.getComputedStyle(el[0], null)[prop], 10) || 0;
+  }
+
+  each(["Width", "Height"], function (v) {
+    var lower = v.toLowerCase();
+
+    fn[lower] = function () {
+      return this[0].getBoundingClientRect()[lower];
+    };
+
+    fn["inner" + v] = function () {
+      return this[0]["client" + v];
+    };
+
+    fn["outer" + v] = function (margins) {
+      return this[0]["offset" + v] + (margins ? compute(this, "margin" + (v === "Width" ? "Left" : "Top")) + compute(this, "margin" + (v === "Width" ? "Right" : "Bottom")) : 0);
+    };
+  });
+
+  function registerEvent(node, eventName, callback) {
+    var eventCache = getData(node, "_cashEvents") || setData(node, "_cashEvents", {});
+    eventCache[eventName] = eventCache[eventName] || [];
+    eventCache[eventName].push(callback);
+    node.addEventListener(eventName, callback);
+  }
+
+  function removeEvent(node, eventName, callback) {
+    var events = getData(node, "_cashEvents"),
+        eventCache = events && events[eventName],
+        index;
+
+    if (!eventCache) {
+      return;
+    }
+
+    if (callback) {
+      node.removeEventListener(eventName, callback);
+      index = eventCache.indexOf(callback);
+      if (index >= 0) {
+        eventCache.splice(index, 1);
+      }
+    } else {
+      each(eventCache, function (event) {
+        node.removeEventListener(eventName, event);
+      });
+      eventCache = [];
+    }
+  }
+
+  fn.extend({
+    off: function (eventName, callback) {
+      return this.each(function (v) {
+        return removeEvent(v, eventName, callback);
+      });
+    },
+
+    on: function (eventName, delegate, callback, runOnce) {
+      // jshint ignore:line
+      var originalCallback;
+      if (!isString(eventName)) {
+        for (var key in eventName) {
+          this.on(key, delegate, eventName[key]);
+        }
+        return this;
+      }
+
+      if (isFunction(delegate)) {
+        callback = delegate;
+        delegate = null;
+      }
+
+      if (eventName === "ready") {
+        onReady(callback);
+        return this;
+      }
+
+      if (delegate) {
+        originalCallback = callback;
+        callback = function (e) {
+          var t = e.target;
+          while (!matches(t, delegate)) {
+            if (t === this || t === null) {
+              return t = false;
+            }
+
+            t = t.parentNode;
+          }
+
+          if (t) {
+            originalCallback.call(t, e);
+          }
+        };
+      }
+
+      return this.each(function (v) {
+        var finalCallback = callback;
+        if (runOnce) {
+          finalCallback = function () {
+            callback.apply(this, arguments);
+            removeEvent(v, eventName, finalCallback);
+          };
+        }
+        registerEvent(v, eventName, finalCallback);
+      });
+    },
+
+    one: function (eventName, delegate, callback) {
+      return this.on(eventName, delegate, callback, true);
+    },
+
+    ready: onReady,
+
+    /**
+     * Modified
+     * Triggers browser event
+     * @param String eventName
+     * @param Object data - Add properties to event object
+     */
+    trigger: function (eventName, data) {
+      if (document.createEvent) {
+        var evt = document.createEvent('HTMLEvents');
+        evt.initEvent(eventName, true, false);
+        evt = this.extend(evt, data);
+        return this.each(function (v) {
+          return v.dispatchEvent(evt);
+        });
+      }
+    }
+
+  });
+
+  function encode(name, value) {
+    return "&" + encodeURIComponent(name) + "=" + encodeURIComponent(value).replace(/%20/g, "+");
+  }
+
+  function getSelectMultiple_(el) {
+    var values = [];
+    each(el.options, function (o) {
+      if (o.selected) {
+        values.push(o.value);
+      }
+    });
+    return values.length ? values : null;
+  }
+
+  function getSelectSingle_(el) {
+    var selectedIndex = el.selectedIndex;
+    return selectedIndex >= 0 ? el.options[selectedIndex].value : null;
+  }
+
+  function getValue(el) {
+    var type = el.type;
+    if (!type) {
+      return null;
+    }
+    switch (type.toLowerCase()) {
+      case "select-one":
+        return getSelectSingle_(el);
+      case "select-multiple":
+        return getSelectMultiple_(el);
+      case "radio":
+        return el.checked ? el.value : null;
+      case "checkbox":
+        return el.checked ? el.value : null;
+      default:
+        return el.value ? el.value : null;
+    }
+  }
+
+  fn.extend({
+    serialize: function () {
+      var query = "";
+
+      each(this[0].elements || this, function (el) {
+        if (el.disabled || el.tagName === "FIELDSET") {
+          return;
+        }
+        var name = el.name;
+        switch (el.type.toLowerCase()) {
+          case "file":
+          case "reset":
+          case "submit":
+          case "button":
+            break;
+          case "select-multiple":
+            var values = getValue(el);
+            if (values !== null) {
+              each(values, function (value) {
+                query += encode(name, value);
+              });
+            }
+            break;
+          default:
+            var value = getValue(el);
+            if (value !== null) {
+              query += encode(name, value);
+            }
+        }
+      });
+
+      return query.substr(1);
+    },
+
+    val: function (value) {
+      if (value === undefined) {
+        return getValue(this[0]);
+      }
+
+      return this.each(function (v) {
+        return v.value = value;
+      });
+    }
+
+  });
+
+  function insertElement(el, child, prepend) {
+    if (prepend) {
+      var first = el.childNodes[0];
+      el.insertBefore(child, first);
+    } else {
+      el.appendChild(child);
+    }
+  }
+
+  function insertContent(parent, child, prepend) {
+    var str = isString(child);
+
+    if (!str && child.length) {
+      each(child, function (v) {
+        return insertContent(parent, v, prepend);
+      });
+      return;
+    }
+
+    each(parent, str ? function (v) {
+      return v.insertAdjacentHTML(prepend ? "afterbegin" : "beforeend", child);
+    } : function (v, i) {
+      return insertElement(v, i === 0 ? child : child.cloneNode(true), prepend);
+    });
+  }
+
+  fn.extend({
+    after: function (selector) {
+      cash(selector).insertAfter(this);
+      return this;
+    },
+
+    append: function (content) {
+      insertContent(this, content);
+      return this;
+    },
+
+    appendTo: function (parent) {
+      insertContent(cash(parent), this);
+      return this;
+    },
+
+    before: function (selector) {
+      cash(selector).insertBefore(this);
+      return this;
+    },
+
+    clone: function () {
+      return cash(this.map(function (v) {
+        return v.cloneNode(true);
+      }));
+    },
+
+    empty: function () {
+      this.html("");
+      return this;
+    },
+
+    html: function (content) {
+      if (content === undefined) {
+        return this[0].innerHTML;
+      }
+      var source = content.nodeType ? content[0].outerHTML : content;
+      return this.each(function (v) {
+        return v.innerHTML = source;
+      });
+    },
+
+    insertAfter: function (selector) {
+      var _this = this;
+
+      cash(selector).each(function (el, i) {
+        var parent = el.parentNode,
+            sibling = el.nextSibling;
+        _this.each(function (v) {
+          parent.insertBefore(i === 0 ? v : v.cloneNode(true), sibling);
+        });
+      });
+
+      return this;
+    },
+
+    insertBefore: function (selector) {
+      var _this2 = this;
+      cash(selector).each(function (el, i) {
+        var parent = el.parentNode;
+        _this2.each(function (v) {
+          parent.insertBefore(i === 0 ? v : v.cloneNode(true), el);
+        });
+      });
+      return this;
+    },
+
+    prepend: function (content) {
+      insertContent(this, content, true);
+      return this;
+    },
+
+    prependTo: function (parent) {
+      insertContent(cash(parent), this, true);
+      return this;
+    },
+
+    remove: function () {
+      return this.each(function (v) {
+        if (!!v.parentNode) {
+          return v.parentNode.removeChild(v);
+        }
+      });
+    },
+
+    text: function (content) {
+      if (content === undefined) {
+        return this[0].textContent;
+      }
+      return this.each(function (v) {
+        return v.textContent = content;
+      });
+    }
+
+  });
+
+  var docEl = doc.documentElement;
+
+  fn.extend({
+    position: function () {
+      var el = this[0];
+      return {
+        left: el.offsetLeft,
+        top: el.offsetTop
+      };
+    },
+
+    offset: function () {
+      var rect = this[0].getBoundingClientRect();
+      return {
+        top: rect.top + win.pageYOffset - docEl.clientTop,
+        left: rect.left + win.pageXOffset - docEl.clientLeft
+      };
+    },
+
+    offsetParent: function () {
+      return cash(this[0].offsetParent);
+    }
+
+  });
+
+  fn.extend({
+    children: function (selector) {
+      var elems = [];
+      this.each(function (el) {
+        push.apply(elems, el.children);
+      });
+      elems = unique(elems);
+
+      return !selector ? elems : elems.filter(function (v) {
+        return matches(v, selector);
+      });
+    },
+
+    closest: function (selector) {
+      if (!selector || this.length < 1) {
+        return cash();
+      }
+      if (this.is(selector)) {
+        return this.filter(selector);
+      }
+      return this.parent().closest(selector);
+    },
+
+    is: function (selector) {
+      if (!selector) {
+        return false;
+      }
+
+      var match = false,
+          comparator = getCompareFunction(selector);
+
+      this.each(function (el) {
+        match = comparator(el, selector);
+        return !match;
+      });
+
+      return match;
+    },
+
+    find: function (selector) {
+      if (!selector || selector.nodeType) {
+        return cash(selector && this.has(selector).length ? selector : null);
+      }
+
+      var elems = [];
+      this.each(function (el) {
+        push.apply(elems, find(selector, el));
+      });
+
+      return unique(elems);
+    },
+
+    has: function (selector) {
+      var comparator = isString(selector) ? function (el) {
+        return find(selector, el).length !== 0;
+      } : function (el) {
+        return el.contains(selector);
+      };
+
+      return this.filter(comparator);
+    },
+
+    next: function () {
+      return cash(this[0].nextElementSibling);
+    },
+
+    not: function (selector) {
+      if (!selector) {
+        return this;
+      }
+
+      var comparator = getCompareFunction(selector);
+
+      return this.filter(function (el) {
+        return !comparator(el, selector);
+      });
+    },
+
+    parent: function () {
+      var result = [];
+
+      this.each(function (item) {
+        if (item && item.parentNode) {
+          result.push(item.parentNode);
+        }
+      });
+
+      return unique(result);
+    },
+
+    parents: function (selector) {
+      var last,
+          result = [];
+
+      this.each(function (item) {
+        last = item;
+
+        while (last && last.parentNode && last !== doc.body.parentNode) {
+          last = last.parentNode;
+
+          if (!selector || selector && matches(last, selector)) {
+            result.push(last);
+          }
+        }
+      });
+
+      return unique(result);
+    },
+
+    prev: function () {
+      return cash(this[0].previousElementSibling);
+    },
+
+    siblings: function (selector) {
+      var collection = this.parent().children(selector),
+          el = this[0];
+
+      return collection.filter(function (i) {
+        return i !== el;
+      });
+    }
+
+  });
+
+  return cash;
+});
+;
+var Component = function () {
+  /**
+   * Generic constructor for all components
+   * @constructor
+   * @param {Element} el
+   * @param {Object} options
+   */
+  function Component(classDef, el, options) {
+    _classCallCheck(this, Component);
+
+    // Display error if el is valid HTML Element
+    if (!(el instanceof Element)) {
+      console.error(Error(el + ' is not an HTML Element'));
+    }
+
+    // If exists, destroy and reinitialize in child
+    var ins = classDef.getInstance(el);
+    if (!!ins) {
+      ins.destroy();
+    }
+
+    this.el = el;
+    this.$el = cash(el);
+  }
+
+  /**
+   * Initializes components
+   * @param {class} classDef
+   * @param {Element | NodeList | jQuery} els
+   * @param {Object} options
+   */
+
+
+  _createClass(Component, null, [{
+    key: "init",
+    value: function init(classDef, els, options) {
+      var instances = null;
+      if (els instanceof Element) {
+        instances = new classDef(els, options);
+      } else if (!!els && (els.jquery || els.cash || els instanceof NodeList)) {
+        var instancesArr = [];
+        for (var i = 0; i < els.length; i++) {
+          instancesArr.push(new classDef(els[i], options));
+        }
+        instances = instancesArr;
+      }
+
+      return instances;
+    }
+  }]);
+
+  return Component;
+}();
+
+; // Required for Meteor package, the use of window prevents export by Meteor
+(function (window) {
+  if (window.Package) {
+    M = {};
+  } else {
+    window.M = {};
+  }
+
+  // Check for jQuery
+  M.jQueryLoaded = !!window.jQuery;
+})(window);
+
+// AMD
+if (typeof define === 'function' && define.amd) {
+  define('M', [], function () {
+    return M;
+  });
+
+  // Common JS
+} else if (typeof exports !== 'undefined' && !exports.nodeType) {
+  if (typeof module !== 'undefined' && !module.nodeType && module.exports) {
+    exports = module.exports = M;
+  }
+  exports.default = M;
+}
+
+M.version = '1.0.0';
+
+M.keys = {
+  TAB: 9,
+  ENTER: 13,
+  ESC: 27,
+  ARROW_UP: 38,
+  ARROW_DOWN: 40
+};
+
+/**
+ * TabPress Keydown handler
+ */
+M.tabPressed = false;
+M.keyDown = false;
+var docHandleKeydown = function (e) {
+  M.keyDown = true;
+  if (e.which === M.keys.TAB || e.which === M.keys.ARROW_DOWN || e.which === M.keys.ARROW_UP) {
+    M.tabPressed = true;
+  }
+};
+var docHandleKeyup = function (e) {
+  M.keyDown = false;
+  if (e.which === M.keys.TAB || e.which === M.keys.ARROW_DOWN || e.which === M.keys.ARROW_UP) {
+    M.tabPressed = false;
+  }
+};
+var docHandleFocus = function (e) {
+  if (M.keyDown) {
+    document.body.classList.add('keyboard-focused');
+  }
+};
+var docHandleBlur = function (e) {
+  document.body.classList.remove('keyboard-focused');
+};
+document.addEventListener('keydown', docHandleKeydown, true);
+document.addEventListener('keyup', docHandleKeyup, true);
+document.addEventListener('focus', docHandleFocus, true);
+document.addEventListener('blur', docHandleBlur, true);
+
+/**
+ * Initialize jQuery wrapper for plugin
+ * @param {Class} plugin  javascript class
+ * @param {string} pluginName  jQuery plugin name
+ * @param {string} classRef  Class reference name
+ */
+M.initializeJqueryWrapper = function (plugin, pluginName, classRef) {
+  jQuery.fn[pluginName] = function (methodOrOptions) {
+    // Call plugin method if valid method name is passed in
+    if (plugin.prototype[methodOrOptions]) {
+      var params = Array.prototype.slice.call(arguments, 1);
+
+      // Getter methods
+      if (methodOrOptions.slice(0, 3) === 'get') {
+        var instance = this.first()[0][classRef];
+        return instance[methodOrOptions].apply(instance, params);
+      }
+
+      // Void methods
+      return this.each(function () {
+        var instance = this[classRef];
+        instance[methodOrOptions].apply(instance, params);
+      });
+
+      // Initialize plugin if options or no argument is passed in
+    } else if (typeof methodOrOptions === 'object' || !methodOrOptions) {
+      plugin.init(this, arguments[0]);
+      return this;
+    }
+
+    // Return error if an unrecognized  method name is passed in
+    jQuery.error("Method " + methodOrOptions + " does not exist on jQuery." + pluginName);
+  };
+};
+
+/**
+ * Automatically initialize components
+ * @param {Element} context  DOM Element to search within for components
+ */
+M.AutoInit = function (context) {
+  // Use document.body if no context is given
+  var root = !!context ? context : document.body;
+
+  var registry = {
+    Autocomplete: root.querySelectorAll('.autocomplete:not(.no-autoinit)'),
+    Carousel: root.querySelectorAll('.carousel:not(.no-autoinit)'),
+    Chips: root.querySelectorAll('.chips:not(.no-autoinit)'),
+    Collapsible: root.querySelectorAll('.collapsible:not(.no-autoinit)'),
+    Datepicker: root.querySelectorAll('.datepicker:not(.no-autoinit)'),
+    Dropdown: root.querySelectorAll('.dropdown-trigger:not(.no-autoinit)'),
+    Materialbox: root.querySelectorAll('.materialboxed:not(.no-autoinit)'),
+    Modal: root.querySelectorAll('.modal:not(.no-autoinit)'),
+    Parallax: root.querySelectorAll('.parallax:not(.no-autoinit)'),
+    Pushpin: root.querySelectorAll('.pushpin:not(.no-autoinit)'),
+    ScrollSpy: root.querySelectorAll('.scrollspy:not(.no-autoinit)'),
+    FormSelect: root.querySelectorAll('select:not(.no-autoinit)'),
+    Sidenav: root.querySelectorAll('.sidenav:not(.no-autoinit)'),
+    Tabs: root.querySelectorAll('.tabs:not(.no-autoinit)'),
+    TapTarget: root.querySelectorAll('.tap-target:not(.no-autoinit)'),
+    Timepicker: root.querySelectorAll('.timepicker:not(.no-autoinit)'),
+    Tooltip: root.querySelectorAll('.tooltipped:not(.no-autoinit)'),
+    FloatingActionButton: root.querySelectorAll('.fixed-action-btn:not(.no-autoinit)')
+  };
+
+  for (var pluginName in registry) {
+    var plugin = M[pluginName];
+    plugin.init(registry[pluginName]);
+  }
+};
+
+/**
+ * Generate approximated selector string for a jQuery object
+ * @param {jQuery} obj  jQuery object to be parsed
+ * @returns {string}
+ */
+M.objectSelectorString = function (obj) {
+  var tagStr = obj.prop('tagName') || '';
+  var idStr = obj.attr('id') || '';
+  var classStr = obj.attr('class') || '';
+  return (tagStr + idStr + classStr).replace(/\s/g, '');
+};
+
+// Unique Random ID
+M.guid = function () {
+  function s4() {
+    return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
+  }
+  return function () {
+    return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
+  };
+}();
+
+/**
+ * Escapes hash from special characters
+ * @param {string} hash  String returned from this.hash
+ * @returns {string}
+ */
+M.escapeHash = function (hash) {
+  return hash.replace(/(:|\.|\[|\]|,|=|\/)/g, '\\$1');
+};
+
+M.elementOrParentIsFixed = function (element) {
+  var $element = $(element);
+  var $checkElements = $element.add($element.parents());
+  var isFixed = false;
+  $checkElements.each(function () {
+    if ($(this).css('position') === 'fixed') {
+      isFixed = true;
+      return false;
+    }
+  });
+  return isFixed;
+};
+
+/**
+ * @typedef {Object} Edges
+ * @property {Boolean} top  If the top edge was exceeded
+ * @property {Boolean} right  If the right edge was exceeded
+ * @property {Boolean} bottom  If the bottom edge was exceeded
+ * @property {Boolean} left  If the left edge was exceeded
+ */
+
+/**
+ * @typedef {Object} Bounding
+ * @property {Number} left  left offset coordinate
+ * @property {Number} top  top offset coordinate
+ * @property {Number} width
+ * @property {Number} height
+ */
+
+/**
+ * Escapes hash from special characters
+ * @param {Element} container  Container element that acts as the boundary
+ * @param {Bounding} bounding  element bounding that is being checked
+ * @param {Number} offset  offset from edge that counts as exceeding
+ * @returns {Edges}
+ */
+M.checkWithinContainer = function (container, bounding, offset) {
+  var edges = {
+    top: false,
+    right: false,
+    bottom: false,
+    left: false
+  };
+
+  var containerRect = container.getBoundingClientRect();
+  // If body element is smaller than viewport, use viewport height instead.
+  var containerBottom = container === document.body ? Math.max(containerRect.bottom, window.innerHeight) : containerRect.bottom;
+
+  var scrollLeft = container.scrollLeft;
+  var scrollTop = container.scrollTop;
+
+  var scrolledX = bounding.left - scrollLeft;
+  var scrolledY = bounding.top - scrollTop;
+
+  // Check for container and viewport for each edge
+  if (scrolledX < containerRect.left + offset || scrolledX < offset) {
+    edges.left = true;
+  }
+
+  if (scrolledX + bounding.width > containerRect.right - offset || scrolledX + bounding.width > window.innerWidth - offset) {
+    edges.right = true;
+  }
+
+  if (scrolledY < containerRect.top + offset || scrolledY < offset) {
+    edges.top = true;
+  }
+
+  if (scrolledY + bounding.height > containerBottom - offset || scrolledY + bounding.height > window.innerHeight - offset) {
+    edges.bottom = true;
+  }
+
+  return edges;
+};
+
+M.checkPossibleAlignments = function (el, container, bounding, offset) {
+  var canAlign = {
+    top: true,
+    right: true,
+    bottom: true,
+    left: true,
+    spaceOnTop: null,
+    spaceOnRight: null,
+    spaceOnBottom: null,
+    spaceOnLeft: null
+  };
+
+  var containerAllowsOverflow = getComputedStyle(container).overflow === 'visible';
+  var containerRect = container.getBoundingClientRect();
+  var containerHeight = Math.min(containerRect.height, window.innerHeight);
+  var containerWidth = Math.min(containerRect.width, window.innerWidth);
+  var elOffsetRect = el.getBoundingClientRect();
+
+  var scrollLeft = container.scrollLeft;
+  var scrollTop = container.scrollTop;
+
+  var scrolledX = bounding.left - scrollLeft;
+  var scrolledYTopEdge = bounding.top - scrollTop;
+  var scrolledYBottomEdge = bounding.top + elOffsetRect.height - scrollTop;
+
+  // Check for container and viewport for left
+  canAlign.spaceOnRight = !containerAllowsOverflow ? containerWidth - (scrolledX + bounding.width) : window.innerWidth - (elOffsetRect.left + bounding.width);
+  if (canAlign.spaceOnRight < 0) {
+    canAlign.left = false;
+  }
+
+  // Check for container and viewport for Right
+  canAlign.spaceOnLeft = !containerAllowsOverflow ? scrolledX - bounding.width + elOffsetRect.width : elOffsetRect.right - bounding.width;
+  if (canAlign.spaceOnLeft < 0) {
+    canAlign.right = false;
+  }
+
+  // Check for container and viewport for Top
+  canAlign.spaceOnBottom = !containerAllowsOverflow ? containerHeight - (scrolledYTopEdge + bounding.height + offset) : window.innerHeight - (elOffsetRect.top + bounding.height + offset);
+  if (canAlign.spaceOnBottom < 0) {
+    canAlign.top = false;
+  }
+
+  // Check for container and viewport for Bottom
+  canAlign.spaceOnTop = !containerAllowsOverflow ? scrolledYBottomEdge - (bounding.height - offset) : elOffsetRect.bottom - (bounding.height + offset);
+  if (canAlign.spaceOnTop < 0) {
+    canAlign.bottom = false;
+  }
+
+  return canAlign;
+};
+
+M.getOverflowParent = function (element) {
+  if (element == null) {
+    return null;
+  }
+
+  if (element === document.body || getComputedStyle(element).overflow !== 'visible') {
+    return element;
+  }
+
+  return M.getOverflowParent(element.parentElement);
+};
+
+/**
+ * Gets id of component from a trigger
+ * @param {Element} trigger  trigger
+ * @returns {string}
+ */
+M.getIdFromTrigger = function (trigger) {
+  var id = trigger.getAttribute('data-target');
+  if (!id) {
+    id = trigger.getAttribute('href');
+    if (id) {
+      id = id.slice(1);
+    } else {
+      id = '';
+    }
+  }
+  return id;
+};
+
+/**
+ * Multi browser support for document scroll top
+ * @returns {Number}
+ */
+M.getDocumentScrollTop = function () {
+  return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
+};
+
+/**
+ * Multi browser support for document scroll left
+ * @returns {Number}
+ */
+M.getDocumentScrollLeft = function () {
+  return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;
+};
+
+/**
+ * @typedef {Object} Edges
+ * @property {Boolean} top  If the top edge was exceeded
+ * @property {Boolean} right  If the right edge was exceeded
+ * @property {Boolean} bottom  If the bottom edge was exceeded
+ * @property {Boolean} left  If the left edge was exceeded
+ */
+
+/**
+ * @typedef {Object} Bounding
+ * @property {Number} left  left offset coordinate
+ * @property {Number} top  top offset coordinate
+ * @property {Number} width
+ * @property {Number} height
+ */
+
+/**
+ * Get time in ms
+ * @license https://raw.github.com/jashkenas/underscore/master/LICENSE
+ * @type {function}
+ * @return {number}
+ */
+var getTime = Date.now || function () {
+  return new Date().getTime();
+};
+
+/**
+ * Returns a function, that, when invoked, will only be triggered at most once
+ * during a given window of time. Normally, the throttled function will run
+ * as much as it can, without ever going more than once per `wait` duration;
+ * but if you'd like to disable the execution on the leading edge, pass
+ * `{leading: false}`. To disable execution on the trailing edge, ditto.
+ * @license https://raw.github.com/jashkenas/underscore/master/LICENSE
+ * @param {function} func
+ * @param {number} wait
+ * @param {Object=} options
+ * @returns {Function}
+ */
+M.throttle = function (func, wait, options) {
+  var context = void 0,
+      args = void 0,
+      result = void 0;
+  var timeout = null;
+  var previous = 0;
+  options || (options = {});
+  var later = function () {
+    previous = options.leading === false ? 0 : getTime();
+    timeout = null;
+    result = func.apply(context, args);
+    context = args = null;
+  };
+  return function () {
+    var now = getTime();
+    if (!previous && options.leading === false) previous = now;
+    var remaining = wait - (now - previous);
+    context = this;
+    args = arguments;
+    if (remaining <= 0) {
+      clearTimeout(timeout);
+      timeout = null;
+      previous = now;
+      result = func.apply(context, args);
+      context = args = null;
+    } else if (!timeout && options.trailing !== false) {
+      timeout = setTimeout(later, remaining);
+    }
+    return result;
+  };
+};
+; /*
+  v2.2.0
+  2017 Julian Garnier
+  Released under the MIT license
+  */
+var $jscomp = { scope: {} };$jscomp.defineProperty = "function" == typeof Object.defineProperties ? Object.defineProperty : function (e, r, p) {
+  if (p.get || p.set) throw new TypeError("ES3 does not support getters and setters.");e != Array.prototype && e != Object.prototype && (e[r] = p.value);
+};$jscomp.getGlobal = function (e) {
+  return "undefined" != typeof window && window === e ? e : "undefined" != typeof global && null != global ? global : e;
+};$jscomp.global = $jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX = "jscomp_symbol_";
+$jscomp.initSymbol = function () {
+  $jscomp.initSymbol = function () {};$jscomp.global.Symbol || ($jscomp.global.Symbol = $jscomp.Symbol);
+};$jscomp.symbolCounter_ = 0;$jscomp.Symbol = function (e) {
+  return $jscomp.SYMBOL_PREFIX + (e || "") + $jscomp.symbolCounter_++;
+};
+$jscomp.initSymbolIterator = function () {
+  $jscomp.initSymbol();var e = $jscomp.global.Symbol.iterator;e || (e = $jscomp.global.Symbol.iterator = $jscomp.global.Symbol("iterator"));"function" != typeof Array.prototype[e] && $jscomp.defineProperty(Array.prototype, e, { configurable: !0, writable: !0, value: function () {
+      return $jscomp.arrayIterator(this);
+    } });$jscomp.initSymbolIterator = function () {};
+};$jscomp.arrayIterator = function (e) {
+  var r = 0;return $jscomp.iteratorPrototype(function () {
+    return r < e.length ? { done: !1, value: e[r++] } : { done: !0 };
+  });
+};
+$jscomp.iteratorPrototype = function (e) {
+  $jscomp.initSymbolIterator();e = { next: e };e[$jscomp.global.Symbol.iterator] = function () {
+    return this;
+  };return e;
+};$jscomp.array = $jscomp.array || {};$jscomp.iteratorFromArray = function (e, r) {
+  $jscomp.initSymbolIterator();e instanceof String && (e += "");var p = 0,
+      m = { next: function () {
+      if (p < e.length) {
+        var u = p++;return { value: r(u, e[u]), done: !1 };
+      }m.next = function () {
+        return { done: !0, value: void 0 };
+      };return m.next();
+    } };m[Symbol.iterator] = function () {
+    return m;
+  };return m;
+};
+$jscomp.polyfill = function (e, r, p, m) {
+  if (r) {
+    p = $jscomp.global;e = e.split(".");for (m = 0; m < e.length - 1; m++) {
+      var u = e[m];u in p || (p[u] = {});p = p[u];
+    }e = e[e.length - 1];m = p[e];r = r(m);r != m && null != r && $jscomp.defineProperty(p, e, { configurable: !0, writable: !0, value: r });
+  }
+};$jscomp.polyfill("Array.prototype.keys", function (e) {
+  return e ? e : function () {
+    return $jscomp.iteratorFromArray(this, function (e) {
+      return e;
+    });
+  };
+}, "es6-impl", "es3");var $jscomp$this = this;
+(function (r) {
+  M.anime = r();
+})(function () {
+  function e(a) {
+    if (!h.col(a)) try {
+      return document.querySelectorAll(a);
+    } catch (c) {}
+  }function r(a, c) {
+    for (var d = a.length, b = 2 <= arguments.length ? arguments[1] : void 0, f = [], n = 0; n < d; n++) {
+      if (n in a) {
+        var k = a[n];c.call(b, k, n, a) && f.push(k);
+      }
+    }return f;
+  }function p(a) {
+    return a.reduce(function (a, d) {
+      return a.concat(h.arr(d) ? p(d) : d);
+    }, []);
+  }function m(a) {
+    if (h.arr(a)) return a;
+    h.str(a) && (a = e(a) || a);return a instanceof NodeList || a instanceof HTMLCollection ? [].slice.call(a) : [a];
+  }function u(a, c) {
+    return a.some(function (a) {
+      return a === c;
+    });
+  }function C(a) {
+    var c = {},
+        d;for (d in a) {
+      c[d] = a[d];
+    }return c;
+  }function D(a, c) {
+    var d = C(a),
+        b;for (b in a) {
+      d[b] = c.hasOwnProperty(b) ? c[b] : a[b];
+    }return d;
+  }function z(a, c) {
+    var d = C(a),
+        b;for (b in c) {
+      d[b] = h.und(a[b]) ? c[b] : a[b];
+    }return d;
+  }function T(a) {
+    a = a.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, function (a, c, d, k) {
+      return c + c + d + d + k + k;
+    });var c = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a);
+    a = parseInt(c[1], 16);var d = parseInt(c[2], 16),
+        c = parseInt(c[3], 16);return "rgba(" + a + "," + d + "," + c + ",1)";
+  }function U(a) {
+    function c(a, c, b) {
+      0 > b && (b += 1);1 < b && --b;return b < 1 / 6 ? a + 6 * (c - a) * b : .5 > b ? c : b < 2 / 3 ? a + (c - a) * (2 / 3 - b) * 6 : a;
+    }var d = /hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(a) || /hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(a);a = parseInt(d[1]) / 360;var b = parseInt(d[2]) / 100,
+        f = parseInt(d[3]) / 100,
+        d = d[4] || 1;if (0 == b) f = b = a = f;else {
+      var n = .5 > f ? f * (1 + b) : f + b - f * b,
+          k = 2 * f - n,
+          f = c(k, n, a + 1 / 3),
+          b = c(k, n, a);a = c(k, n, a - 1 / 3);
+    }return "rgba(" + 255 * f + "," + 255 * b + "," + 255 * a + "," + d + ")";
+  }function y(a) {
+    if (a = /([\+\-]?[0-9#\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(a)) return a[2];
+  }function V(a) {
+    if (-1 < a.indexOf("translate") || "perspective" === a) return "px";if (-1 < a.indexOf("rotate") || -1 < a.indexOf("skew")) return "deg";
+  }function I(a, c) {
+    return h.fnc(a) ? a(c.target, c.id, c.total) : a;
+  }function E(a, c) {
+    if (c in a.style) return getComputedStyle(a).getPropertyValue(c.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase()) || "0";
+  }function J(a, c) {
+    if (h.dom(a) && u(W, c)) return "transform";if (h.dom(a) && (a.getAttribute(c) || h.svg(a) && a[c])) return "attribute";if (h.dom(a) && "transform" !== c && E(a, c)) return "css";if (null != a[c]) return "object";
+  }function X(a, c) {
+    var d = V(c),
+        d = -1 < c.indexOf("scale") ? 1 : 0 + d;a = a.style.transform;if (!a) return d;for (var b = [], f = [], n = [], k = /(\w+)\((.+?)\)/g; b = k.exec(a);) {
+      f.push(b[1]), n.push(b[2]);
+    }a = r(n, function (a, b) {
+      return f[b] === c;
+    });return a.length ? a[0] : d;
+  }function K(a, c) {
+    switch (J(a, c)) {case "transform":
+        return X(a, c);case "css":
+        return E(a, c);case "attribute":
+        return a.getAttribute(c);}return a[c] || 0;
+  }function L(a, c) {
+    var d = /^(\*=|\+=|-=)/.exec(a);if (!d) return a;var b = y(a) || 0;c = parseFloat(c);a = parseFloat(a.replace(d[0], ""));switch (d[0][0]) {case "+":
+        return c + a + b;case "-":
+        return c - a + b;case "*":
+        return c * a + b;}
+  }function F(a, c) {
+    return Math.sqrt(Math.pow(c.x - a.x, 2) + Math.pow(c.y - a.y, 2));
+  }function M(a) {
+    a = a.points;for (var c = 0, d, b = 0; b < a.numberOfItems; b++) {
+      var f = a.getItem(b);0 < b && (c += F(d, f));d = f;
+    }return c;
+  }function N(a) {
+    if (a.getTotalLength) return a.getTotalLength();switch (a.tagName.toLowerCase()) {case "circle":
+        return 2 * Math.PI * a.getAttribute("r");case "rect":
+        return 2 * a.getAttribute("width") + 2 * a.getAttribute("height");case "line":
+        return F({ x: a.getAttribute("x1"), y: a.getAttribute("y1") }, { x: a.getAttribute("x2"), y: a.getAttribute("y2") });case "polyline":
+        return M(a);case "polygon":
+        var c = a.points;return M(a) + F(c.getItem(c.numberOfItems - 1), c.getItem(0));}
+  }function Y(a, c) {
+    function d(b) {
+      b = void 0 === b ? 0 : b;return a.el.getPointAtLength(1 <= c + b ? c + b : 0);
+    }var b = d(),
+        f = d(-1),
+        n = d(1);switch (a.property) {case "x":
+        return b.x;case "y":
+        return b.y;
+      case "angle":
+        return 180 * Math.atan2(n.y - f.y, n.x - f.x) / Math.PI;}
+  }function O(a, c) {
+    var d = /-?\d*\.?\d+/g,
+        b;b = h.pth(a) ? a.totalLength : a;if (h.col(b)) {
+      if (h.rgb(b)) {
+        var f = /rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g.exec(b);b = f ? "rgba(" + f[1] + ",1)" : b;
+      } else b = h.hex(b) ? T(b) : h.hsl(b) ? U(b) : void 0;
+    } else f = (f = y(b)) ? b.substr(0, b.length - f.length) : b, b = c && !/\s/g.test(b) ? f + c : f;b += "";return { original: b, numbers: b.match(d) ? b.match(d).map(Number) : [0], strings: h.str(a) || c ? b.split(d) : [] };
+  }function P(a) {
+    a = a ? p(h.arr(a) ? a.map(m) : m(a)) : [];return r(a, function (a, d, b) {
+      return b.indexOf(a) === d;
+    });
+  }function Z(a) {
+    var c = P(a);return c.map(function (a, b) {
+      return { target: a, id: b, total: c.length };
+    });
+  }function aa(a, c) {
+    var d = C(c);if (h.arr(a)) {
+      var b = a.length;2 !== b || h.obj(a[0]) ? h.fnc(c.duration) || (d.duration = c.duration / b) : a = { value: a };
+    }return m(a).map(function (a, b) {
+      b = b ? 0 : c.delay;a = h.obj(a) && !h.pth(a) ? a : { value: a };h.und(a.delay) && (a.delay = b);return a;
+    }).map(function (a) {
+      return z(a, d);
+    });
+  }function ba(a, c) {
+    var d = {},
+        b;for (b in a) {
+      var f = I(a[b], c);h.arr(f) && (f = f.map(function (a) {
+        return I(a, c);
+      }), 1 === f.length && (f = f[0]));d[b] = f;
+    }d.duration = parseFloat(d.duration);d.delay = parseFloat(d.delay);return d;
+  }function ca(a) {
+    return h.arr(a) ? A.apply(this, a) : Q[a];
+  }function da(a, c) {
+    var d;return a.tweens.map(function (b) {
+      b = ba(b, c);var f = b.value,
+          e = K(c.target, a.name),
+          k = d ? d.to.original : e,
+          k = h.arr(f) ? f[0] : k,
+          w = L(h.arr(f) ? f[1] : f, k),
+          e = y(w) || y(k) || y(e);b.from = O(k, e);b.to = O(w, e);b.start = d ? d.end : a.offset;b.end = b.start + b.delay + b.duration;b.easing = ca(b.easing);b.elasticity = (1E3 - Math.min(Math.max(b.elasticity, 1), 999)) / 1E3;b.isPath = h.pth(f);b.isColor = h.col(b.from.original);b.isColor && (b.round = 1);return d = b;
+    });
+  }function ea(a, c) {
+    return r(p(a.map(function (a) {
+      return c.map(function (b) {
+        var c = J(a.target, b.name);if (c) {
+          var d = da(b, a);b = { type: c, property: b.name, animatable: a, tweens: d, duration: d[d.length - 1].end, delay: d[0].delay };
+        } else b = void 0;return b;
+      });
+    })), function (a) {
+      return !h.und(a);
+    });
+  }function R(a, c, d, b) {
+    var f = "delay" === a;return c.length ? (f ? Math.min : Math.max).apply(Math, c.map(function (b) {
+      return b[a];
+    })) : f ? b.delay : d.offset + b.delay + b.duration;
+  }function fa(a) {
+    var c = D(ga, a),
+        d = D(S, a),
+        b = Z(a.targets),
+        f = [],
+        e = z(c, d),
+        k;for (k in a) {
+      e.hasOwnProperty(k) || "targets" === k || f.push({ name: k, offset: e.offset, tweens: aa(a[k], d) });
+    }a = ea(b, f);return z(c, { children: [], animatables: b, animations: a, duration: R("duration", a, c, d), delay: R("delay", a, c, d) });
+  }function q(a) {
+    function c() {
+      return window.Promise && new Promise(function (a) {
+        return p = a;
+      });
+    }function d(a) {
+      return g.reversed ? g.duration - a : a;
+    }function b(a) {
+      for (var b = 0, c = {}, d = g.animations, f = d.length; b < f;) {
+        var e = d[b],
+            k = e.animatable,
+            h = e.tweens,
+            n = h.length - 1,
+            l = h[n];n && (l = r(h, function (b) {
+          return a < b.end;
+        })[0] || l);for (var h = Math.min(Math.max(a - l.start - l.delay, 0), l.duration) / l.duration, w = isNaN(h) ? 1 : l.easing(h, l.elasticity), h = l.to.strings, p = l.round, n = [], m = void 0, m = l.to.numbers.length, t = 0; t < m; t++) {
+          var x = void 0,
+              x = l.to.numbers[t],
+              q = l.from.numbers[t],
+              x = l.isPath ? Y(l.value, w * x) : q + w * (x - q);p && (l.isColor && 2 < t || (x = Math.round(x * p) / p));n.push(x);
+        }if (l = h.length) for (m = h[0], w = 0; w < l; w++) {
+          p = h[w + 1], t = n[w], isNaN(t) || (m = p ? m + (t + p) : m + (t + " "));
+        } else m = n[0];ha[e.type](k.target, e.property, m, c, k.id);e.currentValue = m;b++;
+      }if (b = Object.keys(c).length) for (d = 0; d < b; d++) {
+        H || (H = E(document.body, "transform") ? "transform" : "-webkit-transform"), g.animatables[d].target.style[H] = c[d].join(" ");
+      }g.currentTime = a;g.progress = a / g.duration * 100;
+    }function f(a) {
+      if (g[a]) g[a](g);
+    }function e() {
+      g.remaining && !0 !== g.remaining && g.remaining--;
+    }function k(a) {
+      var k = g.duration,
+          n = g.offset,
+          w = n + g.delay,
+          r = g.currentTime,
+          x = g.reversed,
+          q = d(a);if (g.children.length) {
+        var u = g.children,
+            v = u.length;
+        if (q >= g.currentTime) for (var G = 0; G < v; G++) {
+          u[G].seek(q);
+        } else for (; v--;) {
+          u[v].seek(q);
+        }
+      }if (q >= w || !k) g.began || (g.began = !0, f("begin")), f("run");if (q > n && q < k) b(q);else if (q <= n && 0 !== r && (b(0), x && e()), q >= k && r !== k || !k) b(k), x || e();f("update");a >= k && (g.remaining ? (t = h, "alternate" === g.direction && (g.reversed = !g.reversed)) : (g.pause(), g.completed || (g.completed = !0, f("complete"), "Promise" in window && (p(), m = c()))), l = 0);
+    }a = void 0 === a ? {} : a;var h,
+        t,
+        l = 0,
+        p = null,
+        m = c(),
+        g = fa(a);g.reset = function () {
+      var a = g.direction,
+          c = g.loop;g.currentTime = 0;g.progress = 0;g.paused = !0;g.began = !1;g.completed = !1;g.reversed = "reverse" === a;g.remaining = "alternate" === a && 1 === c ? 2 : c;b(0);for (a = g.children.length; a--;) {
+        g.children[a].reset();
+      }
+    };g.tick = function (a) {
+      h = a;t || (t = h);k((l + h - t) * q.speed);
+    };g.seek = function (a) {
+      k(d(a));
+    };g.pause = function () {
+      var a = v.indexOf(g);-1 < a && v.splice(a, 1);g.paused = !0;
+    };g.play = function () {
+      g.paused && (g.paused = !1, t = 0, l = d(g.currentTime), v.push(g), B || ia());
+    };g.reverse = function () {
+      g.reversed = !g.reversed;t = 0;l = d(g.currentTime);
+    };g.restart = function () {
+      g.pause();
+      g.reset();g.play();
+    };g.finished = m;g.reset();g.autoplay && g.play();return g;
+  }var ga = { update: void 0, begin: void 0, run: void 0, complete: void 0, loop: 1, direction: "normal", autoplay: !0, offset: 0 },
+      S = { duration: 1E3, delay: 0, easing: "easeOutElastic", elasticity: 500, round: 0 },
+      W = "translateX translateY translateZ rotate rotateX rotateY rotateZ scale scaleX scaleY scaleZ skewX skewY perspective".split(" "),
+      H,
+      h = { arr: function (a) {
+      return Array.isArray(a);
+    }, obj: function (a) {
+      return -1 < Object.prototype.toString.call(a).indexOf("Object");
+    },
+    pth: function (a) {
+      return h.obj(a) && a.hasOwnProperty("totalLength");
+    }, svg: function (a) {
+      return a instanceof SVGElement;
+    }, dom: function (a) {
+      return a.nodeType || h.svg(a);
+    }, str: function (a) {
+      return "string" === typeof a;
+    }, fnc: function (a) {
+      return "function" === typeof a;
+    }, und: function (a) {
+      return "undefined" === typeof a;
+    }, hex: function (a) {
+      return (/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a)
+      );
+    }, rgb: function (a) {
+      return (/^rgb/.test(a)
+      );
+    }, hsl: function (a) {
+      return (/^hsl/.test(a)
+      );
+    }, col: function (a) {
+      return h.hex(a) || h.rgb(a) || h.hsl(a);
+    } },
+      A = function () {
+    function a(a, d, b) {
+      return (((1 - 3 * b + 3 * d) * a + (3 * b - 6 * d)) * a + 3 * d) * a;
+    }return function (c, d, b, f) {
+      if (0 <= c && 1 >= c && 0 <= b && 1 >= b) {
+        var e = new Float32Array(11);if (c !== d || b !== f) for (var k = 0; 11 > k; ++k) {
+          e[k] = a(.1 * k, c, b);
+        }return function (k) {
+          if (c === d && b === f) return k;if (0 === k) return 0;if (1 === k) return 1;for (var h = 0, l = 1; 10 !== l && e[l] <= k; ++l) {
+            h += .1;
+          }--l;var l = h + (k - e[l]) / (e[l + 1] - e[l]) * .1,
+              n = 3 * (1 - 3 * b + 3 * c) * l * l + 2 * (3 * b - 6 * c) * l + 3 * c;if (.001 <= n) {
+            for (h = 0; 4 > h; ++h) {
+              n = 3 * (1 - 3 * b + 3 * c) * l * l + 2 * (3 * b - 6 * c) * l + 3 * c;if (0 === n) break;var m = a(l, c, b) - k,
+                  l = l - m / n;
+            }k = l;
+          } else if (0 === n) k = l;else {
+            var l = h,
+                h = h + .1,
+                g = 0;do {
+              m = l + (h - l) / 2, n = a(m, c, b) - k, 0 < n ? h = m : l = m;
+            } while (1e-7 < Math.abs(n) && 10 > ++g);k = m;
+          }return a(k, d, f);
+        };
+      }
+    };
+  }(),
+      Q = function () {
+    function a(a, b) {
+      return 0 === a || 1 === a ? a : -Math.pow(2, 10 * (a - 1)) * Math.sin(2 * (a - 1 - b / (2 * Math.PI) * Math.asin(1)) * Math.PI / b);
+    }var c = "Quad Cubic Quart Quint Sine Expo Circ Back Elastic".split(" "),
+        d = { In: [[.55, .085, .68, .53], [.55, .055, .675, .19], [.895, .03, .685, .22], [.755, .05, .855, .06], [.47, 0, .745, .715], [.95, .05, .795, .035], [.6, .04, .98, .335], [.6, -.28, .735, .045], a], Out: [[.25, .46, .45, .94], [.215, .61, .355, 1], [.165, .84, .44, 1], [.23, 1, .32, 1], [.39, .575, .565, 1], [.19, 1, .22, 1], [.075, .82, .165, 1], [.175, .885, .32, 1.275], function (b, c) {
+        return 1 - a(1 - b, c);
+      }], InOut: [[.455, .03, .515, .955], [.645, .045, .355, 1], [.77, 0, .175, 1], [.86, 0, .07, 1], [.445, .05, .55, .95], [1, 0, 0, 1], [.785, .135, .15, .86], [.68, -.55, .265, 1.55], function (b, c) {
+        return .5 > b ? a(2 * b, c) / 2 : 1 - a(-2 * b + 2, c) / 2;
+      }] },
+        b = { linear: A(.25, .25, .75, .75) },
+        f = {},
+        e;for (e in d) {
+      f.type = e, d[f.type].forEach(function (a) {
+        return function (d, f) {
+          b["ease" + a.type + c[f]] = h.fnc(d) ? d : A.apply($jscomp$this, d);
+        };
+      }(f)), f = { type: f.type };
+    }return b;
+  }(),
+      ha = { css: function (a, c, d) {
+      return a.style[c] = d;
+    }, attribute: function (a, c, d) {
+      return a.setAttribute(c, d);
+    }, object: function (a, c, d) {
+      return a[c] = d;
+    }, transform: function (a, c, d, b, f) {
+      b[f] || (b[f] = []);b[f].push(c + "(" + d + ")");
+    } },
+      v = [],
+      B = 0,
+      ia = function () {
+    function a() {
+      B = requestAnimationFrame(c);
+    }function c(c) {
+      var b = v.length;if (b) {
+        for (var d = 0; d < b;) {
+          v[d] && v[d].tick(c), d++;
+        }a();
+      } else cancelAnimationFrame(B), B = 0;
+    }return a;
+  }();q.version = "2.2.0";q.speed = 1;q.running = v;q.remove = function (a) {
+    a = P(a);for (var c = v.length; c--;) {
+      for (var d = v[c], b = d.animations, f = b.length; f--;) {
+        u(a, b[f].animatable.target) && (b.splice(f, 1), b.length || d.pause());
+      }
+    }
+  };q.getValue = K;q.path = function (a, c) {
+    var d = h.str(a) ? e(a)[0] : a,
+        b = c || 100;return function (a) {
+      return { el: d, property: a, totalLength: N(d) * (b / 100) };
+    };
+  };q.setDashoffset = function (a) {
+    var c = N(a);a.setAttribute("stroke-dasharray", c);return c;
+  };q.bezier = A;q.easings = Q;q.timeline = function (a) {
+    var c = q(a);c.pause();c.duration = 0;c.add = function (d) {
+      c.children.forEach(function (a) {
+        a.began = !0;a.completed = !0;
+      });m(d).forEach(function (b) {
+        var d = z(b, D(S, a || {}));d.targets = d.targets || a.targets;b = c.duration;var e = d.offset;d.autoplay = !1;d.direction = c.direction;d.offset = h.und(e) ? b : L(e, b);c.began = !0;c.completed = !0;c.seek(d.offset);d = q(d);d.began = !0;d.completed = !0;d.duration > b && (c.duration = d.duration);c.children.push(d);
+      });c.seek(0);c.reset();c.autoplay && c.restart();return c;
+    };return c;
+  };q.random = function (a, c) {
+    return Math.floor(Math.random() * (c - a + 1)) + a;
+  };return q;
+});
+;(function ($, anim) {
+  'use strict';
+
+  var _defaults = {
+    accordion: true,
+    onOpenStart: undefined,
+    onOpenEnd: undefined,
+    onCloseStart: undefined,
+    onCloseEnd: undefined,
+    inDuration: 300,
+    outDuration: 300
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var Collapsible = function (_Component) {
+    _inherits(Collapsible, _Component);
+
+    /**
+     * Construct Collapsible instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Collapsible(el, options) {
+      _classCallCheck(this, Collapsible);
+
+      var _this3 = _possibleConstructorReturn(this, (Collapsible.__proto__ || Object.getPrototypeOf(Collapsible)).call(this, Collapsible, el, options));
+
+      _this3.el.M_Collapsible = _this3;
+
+      /**
+       * Options for the collapsible
+       * @member Collapsible#options
+       * @prop {Boolean} [accordion=false] - Type of the collapsible
+       * @prop {Function} onOpenStart - Callback function called before collapsible is opened
+       * @prop {Function} onOpenEnd - Callback function called after collapsible is opened
+       * @prop {Function} onCloseStart - Callback function called before collapsible is closed
+       * @prop {Function} onCloseEnd - Callback function called after collapsible is closed
+       * @prop {Number} inDuration - Transition in duration in milliseconds.
+       * @prop {Number} outDuration - Transition duration in milliseconds.
+       */
+      _this3.options = $.extend({}, Collapsible.defaults, options);
+
+      // Setup tab indices
+      _this3.$headers = _this3.$el.children('li').children('.collapsible-header');
+      _this3.$headers.attr('tabindex', 0);
+
+      _this3._setupEventHandlers();
+
+      // Open first active
+      var $activeBodies = _this3.$el.children('li.active').children('.collapsible-body');
+      if (_this3.options.accordion) {
+        // Handle Accordion
+        $activeBodies.first().css('display', 'block');
+      } else {
+        // Handle Expandables
+        $activeBodies.css('display', 'block');
+      }
+      return _this3;
+    }
+
+    _createClass(Collapsible, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this.el.M_Collapsible = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        var _this4 = this;
+
+        this._handleCollapsibleClickBound = this._handleCollapsibleClick.bind(this);
+        this._handleCollapsibleKeydownBound = this._handleCollapsibleKeydown.bind(this);
+        this.el.addEventListener('click', this._handleCollapsibleClickBound);
+        this.$headers.each(function (header) {
+          header.addEventListener('keydown', _this4._handleCollapsibleKeydownBound);
+        });
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        var _this5 = this;
+
+        this.el.removeEventListener('click', this._handleCollapsibleClickBound);
+        this.$headers.each(function (header) {
+          header.removeEventListener('keydown', _this5._handleCollapsibleKeydownBound);
+        });
+      }
+
+      /**
+       * Handle Collapsible Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleCollapsibleClick",
+      value: function _handleCollapsibleClick(e) {
+        var $header = $(e.target).closest('.collapsible-header');
+        if (e.target && $header.length) {
+          var $collapsible = $header.closest('.collapsible');
+          if ($collapsible[0] === this.el) {
+            var $collapsibleLi = $header.closest('li');
+            var $collapsibleLis = $collapsible.children('li');
+            var isActive = $collapsibleLi[0].classList.contains('active');
+            var index = $collapsibleLis.index($collapsibleLi);
+
+            if (isActive) {
+              this.close(index);
+            } else {
+              this.open(index);
+            }
+          }
+        }
+      }
+
+      /**
+       * Handle Collapsible Keydown
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleCollapsibleKeydown",
+      value: function _handleCollapsibleKeydown(e) {
+        if (e.keyCode === 13) {
+          this._handleCollapsibleClickBound(e);
+        }
+      }
+
+      /**
+       * Animate in collapsible slide
+       * @param {Number} index - 0th index of slide
+       */
+
+    }, {
+      key: "_animateIn",
+      value: function _animateIn(index) {
+        var _this6 = this;
+
+        var $collapsibleLi = this.$el.children('li').eq(index);
+        if ($collapsibleLi.length) {
+          var $body = $collapsibleLi.children('.collapsible-body');
+
+          anim.remove($body[0]);
+          $body.css({
+            display: 'block',
+            overflow: 'hidden',
+            height: 0,
+            paddingTop: '',
+            paddingBottom: ''
+          });
+
+          var pTop = $body.css('padding-top');
+          var pBottom = $body.css('padding-bottom');
+          var finalHeight = $body[0].scrollHeight;
+          $body.css({
+            paddingTop: 0,
+            paddingBottom: 0
+          });
+
+          anim({
+            targets: $body[0],
+            height: finalHeight,
+            paddingTop: pTop,
+            paddingBottom: pBottom,
+            duration: this.options.inDuration,
+            easing: 'easeInOutCubic',
+            complete: function (anim) {
+              $body.css({
+                overflow: '',
+                paddingTop: '',
+                paddingBottom: '',
+                height: ''
+              });
+
+              // onOpenEnd callback
+              if (typeof _this6.options.onOpenEnd === 'function') {
+                _this6.options.onOpenEnd.call(_this6, $collapsibleLi[0]);
+              }
+            }
+          });
+        }
+      }
+
+      /**
+       * Animate out collapsible slide
+       * @param {Number} index - 0th index of slide to open
+       */
+
+    }, {
+      key: "_animateOut",
+      value: function _animateOut(index) {
+        var _this7 = this;
+
+        var $collapsibleLi = this.$el.children('li').eq(index);
+        if ($collapsibleLi.length) {
+          var $body = $collapsibleLi.children('.collapsible-body');
+          anim.remove($body[0]);
+          $body.css('overflow', 'hidden');
+          anim({
+            targets: $body[0],
+            height: 0,
+            paddingTop: 0,
+            paddingBottom: 0,
+            duration: this.options.outDuration,
+            easing: 'easeInOutCubic',
+            complete: function () {
+              $body.css({
+                height: '',
+                overflow: '',
+                padding: '',
+                display: ''
+              });
+
+              // onCloseEnd callback
+              if (typeof _this7.options.onCloseEnd === 'function') {
+                _this7.options.onCloseEnd.call(_this7, $collapsibleLi[0]);
+              }
+            }
+          });
+        }
+      }
+
+      /**
+       * Open Collapsible
+       * @param {Number} index - 0th index of slide
+       */
+
+    }, {
+      key: "open",
+      value: function open(index) {
+        var _this8 = this;
+
+        var $collapsibleLi = this.$el.children('li').eq(index);
+        if ($collapsibleLi.length && !$collapsibleLi[0].classList.contains('active')) {
+          // onOpenStart callback
+          if (typeof this.options.onOpenStart === 'function') {
+            this.options.onOpenStart.call(this, $collapsibleLi[0]);
+          }
+
+          // Handle accordion behavior
+          if (this.options.accordion) {
+            var $collapsibleLis = this.$el.children('li');
+            var $activeLis = this.$el.children('li.active');
+            $activeLis.each(function (el) {
+              var index = $collapsibleLis.index($(el));
+              _this8.close(index);
+            });
+          }
+
+          // Animate in
+          $collapsibleLi[0].classList.add('active');
+          this._animateIn(index);
+        }
+      }
+
+      /**
+       * Close Collapsible
+       * @param {Number} index - 0th index of slide
+       */
+
+    }, {
+      key: "close",
+      value: function close(index) {
+        var $collapsibleLi = this.$el.children('li').eq(index);
+        if ($collapsibleLi.length && $collapsibleLi[0].classList.contains('active')) {
+          // onCloseStart callback
+          if (typeof this.options.onCloseStart === 'function') {
+            this.options.onCloseStart.call(this, $collapsibleLi[0]);
+          }
+
+          // Animate out
+          $collapsibleLi[0].classList.remove('active');
+          this._animateOut(index);
+        }
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Collapsible.__proto__ || Object.getPrototypeOf(Collapsible), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Collapsible;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Collapsible;
+  }(Component);
+
+  M.Collapsible = Collapsible;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Collapsible, 'collapsible', 'M_Collapsible');
+  }
+})(cash, M.anime);
+;(function ($, anim) {
+  'use strict';
+
+  var _defaults = {
+    alignment: 'left',
+    autoFocus: true,
+    constrainWidth: true,
+    container: null,
+    coverTrigger: true,
+    closeOnClick: true,
+    hover: false,
+    inDuration: 150,
+    outDuration: 250,
+    onOpenStart: null,
+    onOpenEnd: null,
+    onCloseStart: null,
+    onCloseEnd: null,
+    onItemClick: null
+  };
+
+  /**
+   * @class
+   */
+
+  var Dropdown = function (_Component2) {
+    _inherits(Dropdown, _Component2);
+
+    function Dropdown(el, options) {
+      _classCallCheck(this, Dropdown);
+
+      var _this9 = _possibleConstructorReturn(this, (Dropdown.__proto__ || Object.getPrototypeOf(Dropdown)).call(this, Dropdown, el, options));
+
+      _this9.el.M_Dropdown = _this9;
+      Dropdown._dropdowns.push(_this9);
+
+      _this9.id = M.getIdFromTrigger(el);
+      _this9.dropdownEl = document.getElementById(_this9.id);
+      _this9.$dropdownEl = $(_this9.dropdownEl);
+
+      /**
+       * Options for the dropdown
+       * @member Dropdown#options
+       * @prop {String} [alignment='left'] - Edge which the dropdown is aligned to
+       * @prop {Boolean} [autoFocus=true] - Automatically focus dropdown el for keyboard
+       * @prop {Boolean} [constrainWidth=true] - Constrain width to width of the button
+       * @prop {Element} container - Container element to attach dropdown to (optional)
+       * @prop {Boolean} [coverTrigger=true] - Place dropdown over trigger
+       * @prop {Boolean} [closeOnClick=true] - Close on click of dropdown item
+       * @prop {Boolean} [hover=false] - Open dropdown on hover
+       * @prop {Number} [inDuration=150] - Duration of open animation in ms
+       * @prop {Number} [outDuration=250] - Duration of close animation in ms
+       * @prop {Function} onOpenStart - Function called when dropdown starts opening
+       * @prop {Function} onOpenEnd - Function called when dropdown finishes opening
+       * @prop {Function} onCloseStart - Function called when dropdown starts closing
+       * @prop {Function} onCloseEnd - Function called when dropdown finishes closing
+       */
+      _this9.options = $.extend({}, Dropdown.defaults, options);
+
+      /**
+       * Describes open/close state of dropdown
+       * @type {Boolean}
+       */
+      _this9.isOpen = false;
+
+      /**
+       * Describes if dropdown content is scrollable
+       * @type {Boolean}
+       */
+      _this9.isScrollable = false;
+
+      /**
+       * Describes if touch moving on dropdown content
+       * @type {Boolean}
+       */
+      _this9.isTouchMoving = false;
+
+      _this9.focusedIndex = -1;
+      _this9.filterQuery = [];
+
+      // Move dropdown-content after dropdown-trigger
+      if (!!_this9.options.container) {
+        $(_this9.options.container).append(_this9.dropdownEl);
+      } else {
+        _this9.$el.after(_this9.dropdownEl);
+      }
+
+      _this9._makeDropdownFocusable();
+      _this9._resetFilterQueryBound = _this9._resetFilterQuery.bind(_this9);
+      _this9._handleDocumentClickBound = _this9._handleDocumentClick.bind(_this9);
+      _this9._handleDocumentTouchmoveBound = _this9._handleDocumentTouchmove.bind(_this9);
+      _this9._handleDropdownClickBound = _this9._handleDropdownClick.bind(_this9);
+      _this9._handleDropdownKeydownBound = _this9._handleDropdownKeydown.bind(_this9);
+      _this9._handleTriggerKeydownBound = _this9._handleTriggerKeydown.bind(_this9);
+      _this9._setupEventHandlers();
+      return _this9;
+    }
+
+    _createClass(Dropdown, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._resetDropdownStyles();
+        this._removeEventHandlers();
+        Dropdown._dropdowns.splice(Dropdown._dropdowns.indexOf(this), 1);
+        this.el.M_Dropdown = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        // Trigger keydown handler
+        this.el.addEventListener('keydown', this._handleTriggerKeydownBound);
+
+        // Item click handler
+        this.dropdownEl.addEventListener('click', this._handleDropdownClickBound);
+
+        // Hover event handlers
+        if (this.options.hover) {
+          this._handleMouseEnterBound = this._handleMouseEnter.bind(this);
+          this.el.addEventListener('mouseenter', this._handleMouseEnterBound);
+          this._handleMouseLeaveBound = this._handleMouseLeave.bind(this);
+          this.el.addEventListener('mouseleave', this._handleMouseLeaveBound);
+          this.dropdownEl.addEventListener('mouseleave', this._handleMouseLeaveBound);
+
+          // Click event handlers
+        } else {
+          this._handleClickBound = this._handleClick.bind(this);
+          this.el.addEventListener('click', this._handleClickBound);
+        }
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        this.el.removeEventListener('keydown', this._handleTriggerKeydownBound);
+        this.dropdownEl.removeEventListener('click', this._handleDropdownClickBound);
+
+        if (this.options.hover) {
+          this.el.removeEventListener('mouseenter', this._handleMouseEnterBound);
+          this.el.removeEventListener('mouseleave', this._handleMouseLeaveBound);
+          this.dropdownEl.removeEventListener('mouseleave', this._handleMouseLeaveBound);
+        } else {
+          this.el.removeEventListener('click', this._handleClickBound);
+        }
+      }
+    }, {
+      key: "_setupTemporaryEventHandlers",
+      value: function _setupTemporaryEventHandlers() {
+        // Use capture phase event handler to prevent click
+        document.body.addEventListener('click', this._handleDocumentClickBound, true);
+        document.body.addEventListener('touchend', this._handleDocumentClickBound);
+        document.body.addEventListener('touchmove', this._handleDocumentTouchmoveBound);
+        this.dropdownEl.addEventListener('keydown', this._handleDropdownKeydownBound);
+      }
+    }, {
+      key: "_removeTemporaryEventHandlers",
+      value: function _removeTemporaryEventHandlers() {
+        // Use capture phase event handler to prevent click
+        document.body.removeEventListener('click', this._handleDocumentClickBound, true);
+        document.body.removeEventListener('touchend', this._handleDocumentClickBound);
+        document.body.removeEventListener('touchmove', this._handleDocumentTouchmoveBound);
+        this.dropdownEl.removeEventListener('keydown', this._handleDropdownKeydownBound);
+      }
+    }, {
+      key: "_handleClick",
+      value: function _handleClick(e) {
+        e.preventDefault();
+        this.open();
+      }
+    }, {
+      key: "_handleMouseEnter",
+      value: function _handleMouseEnter() {
+        this.open();
+      }
+    }, {
+      key: "_handleMouseLeave",
+      value: function _handleMouseLeave(e) {
+        var toEl = e.toElement || e.relatedTarget;
+        var leaveToDropdownContent = !!$(toEl).closest('.dropdown-content').length;
+        var leaveToActiveDropdownTrigger = false;
+
+        var $closestTrigger = $(toEl).closest('.dropdown-trigger');
+        if ($closestTrigger.length && !!$closestTrigger[0].M_Dropdown && $closestTrigger[0].M_Dropdown.isOpen) {
+          leaveToActiveDropdownTrigger = true;
+        }
+
+        // Close hover dropdown if mouse did not leave to either active dropdown-trigger or dropdown-content
+        if (!leaveToActiveDropdownTrigger && !leaveToDropdownContent) {
+          this.close();
+        }
+      }
+    }, {
+      key: "_handleDocumentClick",
+      value: function _handleDocumentClick(e) {
+        var _this10 = this;
+
+        var $target = $(e.target);
+        if (this.options.closeOnClick && $target.closest('.dropdown-content').length && !this.isTouchMoving) {
+          // isTouchMoving to check if scrolling on mobile.
+          setTimeout(function () {
+            _this10.close();
+          }, 0);
+        } else if ($target.closest('.dropdown-trigger').length || !$target.closest('.dropdown-content').length) {
+          setTimeout(function () {
+            _this10.close();
+          }, 0);
+        }
+        this.isTouchMoving = false;
+      }
+    }, {
+      key: "_handleTriggerKeydown",
+      value: function _handleTriggerKeydown(e) {
+        // ARROW DOWN OR ENTER WHEN SELECT IS CLOSED - open Dropdown
+        if ((e.which === M.keys.ARROW_DOWN || e.which === M.keys.ENTER) && !this.isOpen) {
+          e.preventDefault();
+          this.open();
+        }
+      }
+
+      /**
+       * Handle Document Touchmove
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleDocumentTouchmove",
+      value: function _handleDocumentTouchmove(e) {
+        var $target = $(e.target);
+        if ($target.closest('.dropdown-content').length) {
+          this.isTouchMoving = true;
+        }
+      }
+
+      /**
+       * Handle Dropdown Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleDropdownClick",
+      value: function _handleDropdownClick(e) {
+        // onItemClick callback
+        if (typeof this.options.onItemClick === 'function') {
+          var itemEl = $(e.target).closest('li')[0];
+          this.options.onItemClick.call(this, itemEl);
+        }
+      }
+
+      /**
+       * Handle Dropdown Keydown
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleDropdownKeydown",
+      value: function _handleDropdownKeydown(e) {
+        if (e.which === M.keys.TAB) {
+          e.preventDefault();
+          this.close();
+
+          // Navigate down dropdown list
+        } else if ((e.which === M.keys.ARROW_DOWN || e.which === M.keys.ARROW_UP) && this.isOpen) {
+          e.preventDefault();
+          var direction = e.which === M.keys.ARROW_DOWN ? 1 : -1;
+          var newFocusedIndex = this.focusedIndex;
+          var foundNewIndex = false;
+          do {
+            newFocusedIndex = newFocusedIndex + direction;
+
+            if (!!this.dropdownEl.children[newFocusedIndex] && this.dropdownEl.children[newFocusedIndex].tabIndex !== -1) {
+              foundNewIndex = true;
+              break;
+            }
+          } while (newFocusedIndex < this.dropdownEl.children.length && newFocusedIndex >= 0);
+
+          if (foundNewIndex) {
+            this.focusedIndex = newFocusedIndex;
+            this._focusFocusedItem();
+          }
+
+          // ENTER selects choice on focused item
+        } else if (e.which === M.keys.ENTER && this.isOpen) {
+          // Search for <a> and <button>
+          var focusedElement = this.dropdownEl.children[this.focusedIndex];
+          var $activatableElement = $(focusedElement).find('a, button').first();
+
+          // Click a or button tag if exists, otherwise click li tag
+          if (!!$activatableElement.length) {
+            $activatableElement[0].click();
+          } else if (!!focusedElement) {
+            focusedElement.click();
+          }
+
+          // Close dropdown on ESC
+        } else if (e.which === M.keys.ESC && this.isOpen) {
+          e.preventDefault();
+          this.close();
+        }
+
+        // CASE WHEN USER TYPE LETTERS
+        var letter = String.fromCharCode(e.which).toLowerCase(),
+            nonLetters = [9, 13, 27, 38, 40];
+        if (letter && nonLetters.indexOf(e.which) === -1) {
+          this.filterQuery.push(letter);
+
+          var string = this.filterQuery.join(''),
+              newOptionEl = $(this.dropdownEl).find('li').filter(function (el) {
+            return $(el).text().toLowerCase().indexOf(string) === 0;
+          })[0];
+
+          if (newOptionEl) {
+            this.focusedIndex = $(newOptionEl).index();
+            this._focusFocusedItem();
+          }
+        }
+
+        this.filterTimeout = setTimeout(this._resetFilterQueryBound, 1000);
+      }
+
+      /**
+       * Setup dropdown
+       */
+
+    }, {
+      key: "_resetFilterQuery",
+      value: function _resetFilterQuery() {
+        this.filterQuery = [];
+      }
+    }, {
+      key: "_resetDropdownStyles",
+      value: function _resetDropdownStyles() {
+        this.$dropdownEl.css({
+          display: '',
+          width: '',
+          height: '',
+          left: '',
+          top: '',
+          'transform-origin': '',
+          transform: '',
+          opacity: ''
+        });
+      }
+    }, {
+      key: "_makeDropdownFocusable",
+      value: function _makeDropdownFocusable() {
+        // Needed for arrow key navigation
+        this.dropdownEl.tabIndex = 0;
+
+        // Only set tabindex if it hasn't been set by user
+        $(this.dropdownEl).children().each(function (el) {
+          if (!el.getAttribute('tabindex')) {
+            el.setAttribute('tabindex', 0);
+          }
+        });
+      }
+    }, {
+      key: "_focusFocusedItem",
+      value: function _focusFocusedItem() {
+        if (this.focusedIndex >= 0 && this.focusedIndex < this.dropdownEl.children.length && this.options.autoFocus) {
+          this.dropdownEl.children[this.focusedIndex].focus();
+        }
+      }
+    }, {
+      key: "_getDropdownPosition",
+      value: function _getDropdownPosition() {
+        var offsetParentBRect = this.el.offsetParent.getBoundingClientRect();
+        var triggerBRect = this.el.getBoundingClientRect();
+        var dropdownBRect = this.dropdownEl.getBoundingClientRect();
+
+        var idealHeight = dropdownBRect.height;
+        var idealWidth = dropdownBRect.width;
+        var idealXPos = triggerBRect.left - dropdownBRect.left;
+        var idealYPos = triggerBRect.top - dropdownBRect.top;
+
+        var dropdownBounds = {
+          left: idealXPos,
+          top: idealYPos,
+          height: idealHeight,
+          width: idealWidth
+        };
+
+        // Countainer here will be closest ancestor with overflow: hidden
+        var closestOverflowParent = !!this.dropdownEl.offsetParent ? this.dropdownEl.offsetParent : this.dropdownEl.parentNode;
+
+        var alignments = M.checkPossibleAlignments(this.el, closestOverflowParent, dropdownBounds, this.options.coverTrigger ? 0 : triggerBRect.height);
+
+        var verticalAlignment = 'top';
+        var horizontalAlignment = this.options.alignment;
+        idealYPos += this.options.coverTrigger ? 0 : triggerBRect.height;
+
+        // Reset isScrollable
+        this.isScrollable = false;
+
+        if (!alignments.top) {
+          if (alignments.bottom) {
+            verticalAlignment = 'bottom';
+          } else {
+            this.isScrollable = true;
+
+            // Determine which side has most space and cutoff at correct height
+            if (alignments.spaceOnTop > alignments.spaceOnBottom) {
+              verticalAlignment = 'bottom';
+              idealHeight += alignments.spaceOnTop;
+              idealYPos -= alignments.spaceOnTop;
+            } else {
+              idealHeight += alignments.spaceOnBottom;
+            }
+          }
+        }
+
+        // If preferred horizontal alignment is possible
+        if (!alignments[horizontalAlignment]) {
+          var oppositeAlignment = horizontalAlignment === 'left' ? 'right' : 'left';
+          if (alignments[oppositeAlignment]) {
+            horizontalAlignment = oppositeAlignment;
+          } else {
+            // Determine which side has most space and cutoff at correct height
+            if (alignments.spaceOnLeft > alignments.spaceOnRight) {
+              horizontalAlignment = 'right';
+              idealWidth += alignments.spaceOnLeft;
+              idealXPos -= alignments.spaceOnLeft;
+            } else {
+              horizontalAlignment = 'left';
+              idealWidth += alignments.spaceOnRight;
+            }
+          }
+        }
+
+        if (verticalAlignment === 'bottom') {
+          idealYPos = idealYPos - dropdownBRect.height + (this.options.coverTrigger ? triggerBRect.height : 0);
+        }
+        if (horizontalAlignment === 'right') {
+          idealXPos = idealXPos - dropdownBRect.width + triggerBRect.width;
+        }
+        return {
+          x: idealXPos,
+          y: idealYPos,
+          verticalAlignment: verticalAlignment,
+          horizontalAlignment: horizontalAlignment,
+          height: idealHeight,
+          width: idealWidth
+        };
+      }
+
+      /**
+       * Animate in dropdown
+       */
+
+    }, {
+      key: "_animateIn",
+      value: function _animateIn() {
+        var _this11 = this;
+
+        anim.remove(this.dropdownEl);
+        anim({
+          targets: this.dropdownEl,
+          opacity: {
+            value: [0, 1],
+            easing: 'easeOutQuad'
+          },
+          scaleX: [0.3, 1],
+          scaleY: [0.3, 1],
+          duration: this.options.inDuration,
+          easing: 'easeOutQuint',
+          complete: function (anim) {
+            if (_this11.options.autoFocus) {
+              _this11.dropdownEl.focus();
+            }
+
+            // onOpenEnd callback
+            if (typeof _this11.options.onOpenEnd === 'function') {
+              _this11.options.onOpenEnd.call(_this11, _this11.el);
+            }
+          }
+        });
+      }
+
+      /**
+       * Animate out dropdown
+       */
+
+    }, {
+      key: "_animateOut",
+      value: function _animateOut() {
+        var _this12 = this;
+
+        anim.remove(this.dropdownEl);
+        anim({
+          targets: this.dropdownEl,
+          opacity: {
+            value: 0,
+            easing: 'easeOutQuint'
+          },
+          scaleX: 0.3,
+          scaleY: 0.3,
+          duration: this.options.outDuration,
+          easing: 'easeOutQuint',
+          complete: function (anim) {
+            _this12._resetDropdownStyles();
+
+            // onCloseEnd callback
+            if (typeof _this12.options.onCloseEnd === 'function') {
+              _this12.options.onCloseEnd.call(_this12, _this12.el);
+            }
+          }
+        });
+      }
+
+      /**
+       * Place dropdown
+       */
+
+    }, {
+      key: "_placeDropdown",
+      value: function _placeDropdown() {
+        // Set width before calculating positionInfo
+        var idealWidth = this.options.constrainWidth ? this.el.getBoundingClientRect().width : this.dropdownEl.getBoundingClientRect().width;
+        this.dropdownEl.style.width = idealWidth + 'px';
+
+        var positionInfo = this._getDropdownPosition();
+        this.dropdownEl.style.left = positionInfo.x + 'px';
+        this.dropdownEl.style.top = positionInfo.y + 'px';
+        this.dropdownEl.style.height = positionInfo.height + 'px';
+        this.dropdownEl.style.width = positionInfo.width + 'px';
+        this.dropdownEl.style.transformOrigin = (positionInfo.horizontalAlignment === 'left' ? '0' : '100%') + " " + (positionInfo.verticalAlignment === 'top' ? '0' : '100%');
+      }
+
+      /**
+       * Open Dropdown
+       */
+
+    }, {
+      key: "open",
+      value: function open() {
+        if (this.isOpen) {
+          return;
+        }
+        this.isOpen = true;
+
+        // onOpenStart callback
+        if (typeof this.options.onOpenStart === 'function') {
+          this.options.onOpenStart.call(this, this.el);
+        }
+
+        // Reset styles
+        this._resetDropdownStyles();
+        this.dropdownEl.style.display = 'block';
+
+        this._placeDropdown();
+        this._animateIn();
+        this._setupTemporaryEventHandlers();
+      }
+
+      /**
+       * Close Dropdown
+       */
+
+    }, {
+      key: "close",
+      value: function close() {
+        if (!this.isOpen) {
+          return;
+        }
+        this.isOpen = false;
+        this.focusedIndex = -1;
+
+        // onCloseStart callback
+        if (typeof this.options.onCloseStart === 'function') {
+          this.options.onCloseStart.call(this, this.el);
+        }
+
+        this._animateOut();
+        this._removeTemporaryEventHandlers();
+
+        if (this.options.autoFocus) {
+          this.el.focus();
+        }
+      }
+
+      /**
+       * Recalculate dimensions
+       */
+
+    }, {
+      key: "recalculateDimensions",
+      value: function recalculateDimensions() {
+        if (this.isOpen) {
+          this.$dropdownEl.css({
+            width: '',
+            height: '',
+            left: '',
+            top: '',
+            'transform-origin': ''
+          });
+          this._placeDropdown();
+        }
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Dropdown.__proto__ || Object.getPrototypeOf(Dropdown), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Dropdown;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Dropdown;
+  }(Component);
+
+  /**
+   * @static
+   * @memberof Dropdown
+   */
+
+
+  Dropdown._dropdowns = [];
+
+  M.Dropdown = Dropdown;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Dropdown, 'dropdown', 'M_Dropdown');
+  }
+})(cash, M.anime);
+;(function ($, anim) {
+  'use strict';
+
+  var _defaults = {
+    opacity: 0.5,
+    inDuration: 250,
+    outDuration: 250,
+    onOpenStart: null,
+    onOpenEnd: null,
+    onCloseStart: null,
+    onCloseEnd: null,
+    preventScrolling: true,
+    dismissible: true,
+    startingTop: '4%',
+    endingTop: '10%'
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var Modal = function (_Component3) {
+    _inherits(Modal, _Component3);
+
+    /**
+     * Construct Modal instance and set up overlay
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Modal(el, options) {
+      _classCallCheck(this, Modal);
+
+      var _this13 = _possibleConstructorReturn(this, (Modal.__proto__ || Object.getPrototypeOf(Modal)).call(this, Modal, el, options));
+
+      _this13.el.M_Modal = _this13;
+
+      /**
+       * Options for the modal
+       * @member Modal#options
+       * @prop {Number} [opacity=0.5] - Opacity of the modal overlay
+       * @prop {Number} [inDuration=250] - Length in ms of enter transition
+       * @prop {Number} [outDuration=250] - Length in ms of exit transition
+       * @prop {Function} onOpenStart - Callback function called before modal is opened
+       * @prop {Function} onOpenEnd - Callback function called after modal is opened
+       * @prop {Function} onCloseStart - Callback function called before modal is closed
+       * @prop {Function} onCloseEnd - Callback function called after modal is closed
+       * @prop {Boolean} [dismissible=true] - Allow modal to be dismissed by keyboard or overlay click
+       * @prop {String} [startingTop='4%'] - startingTop
+       * @prop {String} [endingTop='10%'] - endingTop
+       */
+      _this13.options = $.extend({}, Modal.defaults, options);
+
+      /**
+       * Describes open/close state of modal
+       * @type {Boolean}
+       */
+      _this13.isOpen = false;
+
+      _this13.id = _this13.$el.attr('id');
+      _this13._openingTrigger = undefined;
+      _this13.$overlay = $('<div class="modal-overlay"></div>');
+      _this13.el.tabIndex = 0;
+      _this13._nthModalOpened = 0;
+
+      Modal._count++;
+      _this13._setupEventHandlers();
+      return _this13;
+    }
+
+    _createClass(Modal, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        Modal._count--;
+        this._removeEventHandlers();
+        this.el.removeAttribute('style');
+        this.$overlay.remove();
+        this.el.M_Modal = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleOverlayClickBound = this._handleOverlayClick.bind(this);
+        this._handleModalCloseClickBound = this._handleModalCloseClick.bind(this);
+
+        if (Modal._count === 1) {
+          document.body.addEventListener('click', this._handleTriggerClick);
+        }
+        this.$overlay[0].addEventListener('click', this._handleOverlayClickBound);
+        this.el.addEventListener('click', this._handleModalCloseClickBound);
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        if (Modal._count === 0) {
+          document.body.removeEventListener('click', this._handleTriggerClick);
+        }
+        this.$overlay[0].removeEventListener('click', this._handleOverlayClickBound);
+        this.el.removeEventListener('click', this._handleModalCloseClickBound);
+      }
+
+      /**
+       * Handle Trigger Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleTriggerClick",
+      value: function _handleTriggerClick(e) {
+        var $trigger = $(e.target).closest('.modal-trigger');
+        if ($trigger.length) {
+          var modalId = M.getIdFromTrigger($trigger[0]);
+          var modalInstance = document.getElementById(modalId).M_Modal;
+          if (modalInstance) {
+            modalInstance.open($trigger);
+          }
+          e.preventDefault();
+        }
+      }
+
+      /**
+       * Handle Overlay Click
+       */
+
+    }, {
+      key: "_handleOverlayClick",
+      value: function _handleOverlayClick() {
+        if (this.options.dismissible) {
+          this.close();
+        }
+      }
+
+      /**
+       * Handle Modal Close Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleModalCloseClick",
+      value: function _handleModalCloseClick(e) {
+        var $closeTrigger = $(e.target).closest('.modal-close');
+        if ($closeTrigger.length) {
+          this.close();
+        }
+      }
+
+      /**
+       * Handle Keydown
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleKeydown",
+      value: function _handleKeydown(e) {
+        // ESC key
+        if (e.keyCode === 27 && this.options.dismissible) {
+          this.close();
+        }
+      }
+
+      /**
+       * Handle Focus
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleFocus",
+      value: function _handleFocus(e) {
+        // Only trap focus if this modal is the last model opened (prevents loops in nested modals).
+        if (!this.el.contains(e.target) && this._nthModalOpened === Modal._modalsOpen) {
+          this.el.focus();
+        }
+      }
+
+      /**
+       * Animate in modal
+       */
+
+    }, {
+      key: "_animateIn",
+      value: function _animateIn() {
+        var _this14 = this;
+
+        // Set initial styles
+        $.extend(this.el.style, {
+          display: 'block',
+          opacity: 0
+        });
+        $.extend(this.$overlay[0].style, {
+          display: 'block',
+          opacity: 0
+        });
+
+        // Animate overlay
+        anim({
+          targets: this.$overlay[0],
+          opacity: this.options.opacity,
+          duration: this.options.inDuration,
+          easing: 'easeOutQuad'
+        });
+
+        // Define modal animation options
+        var enterAnimOptions = {
+          targets: this.el,
+          duration: this.options.inDuration,
+          easing: 'easeOutCubic',
+          // Handle modal onOpenEnd callback
+          complete: function () {
+            if (typeof _this14.options.onOpenEnd === 'function') {
+              _this14.options.onOpenEnd.call(_this14, _this14.el, _this14._openingTrigger);
+            }
+          }
+        };
+
+        // Bottom sheet animation
+        if (this.el.classList.contains('bottom-sheet')) {
+          $.extend(enterAnimOptions, {
+            bottom: 0,
+            opacity: 1
+          });
+          anim(enterAnimOptions);
+
+          // Normal modal animation
+        } else {
+          $.extend(enterAnimOptions, {
+            top: [this.options.startingTop, this.options.endingTop],
+            opacity: 1,
+            scaleX: [0.8, 1],
+            scaleY: [0.8, 1]
+          });
+          anim(enterAnimOptions);
+        }
+      }
+
+      /**
+       * Animate out modal
+       */
+
+    }, {
+      key: "_animateOut",
+      value: function _animateOut() {
+        var _this15 = this;
+
+        // Animate overlay
+        anim({
+          targets: this.$overlay[0],
+          opacity: 0,
+          duration: this.options.outDuration,
+          easing: 'easeOutQuart'
+        });
+
+        // Define modal animation options
+        var exitAnimOptions = {
+          targets: this.el,
+          duration: this.options.outDuration,
+          easing: 'easeOutCubic',
+          // Handle modal ready callback
+          complete: function () {
+            _this15.el.style.display = 'none';
+            _this15.$overlay.remove();
+
+            // Call onCloseEnd callback
+            if (typeof _this15.options.onCloseEnd === 'function') {
+              _this15.options.onCloseEnd.call(_this15, _this15.el);
+            }
+          }
+        };
+
+        // Bottom sheet animation
+        if (this.el.classList.contains('bottom-sheet')) {
+          $.extend(exitAnimOptions, {
+            bottom: '-100%',
+            opacity: 0
+          });
+          anim(exitAnimOptions);
+
+          // Normal modal animation
+        } else {
+          $.extend(exitAnimOptions, {
+            top: [this.options.endingTop, this.options.startingTop],
+            opacity: 0,
+            scaleX: 0.8,
+            scaleY: 0.8
+          });
+          anim(exitAnimOptions);
+        }
+      }
+
+      /**
+       * Open Modal
+       * @param {cash} [$trigger]
+       */
+
+    }, {
+      key: "open",
+      value: function open($trigger) {
+        if (this.isOpen) {
+          return;
+        }
+
+        this.isOpen = true;
+        Modal._modalsOpen++;
+        this._nthModalOpened = Modal._modalsOpen;
+
+        // Set Z-Index based on number of currently open modals
+        this.$overlay[0].style.zIndex = 1000 + Modal._modalsOpen * 2;
+        this.el.style.zIndex = 1000 + Modal._modalsOpen * 2 + 1;
+
+        // Set opening trigger, undefined indicates modal was opened by javascript
+        this._openingTrigger = !!$trigger ? $trigger[0] : undefined;
+
+        // onOpenStart callback
+        if (typeof this.options.onOpenStart === 'function') {
+          this.options.onOpenStart.call(this, this.el, this._openingTrigger);
+        }
+
+        if (this.options.preventScrolling) {
+          document.body.style.overflow = 'hidden';
+        }
+
+        this.el.classList.add('open');
+        this.el.insertAdjacentElement('afterend', this.$overlay[0]);
+
+        if (this.options.dismissible) {
+          this._handleKeydownBound = this._handleKeydown.bind(this);
+          this._handleFocusBound = this._handleFocus.bind(this);
+          document.addEventListener('keydown', this._handleKeydownBound);
+          document.addEventListener('focus', this._handleFocusBound, true);
+        }
+
+        anim.remove(this.el);
+        anim.remove(this.$overlay[0]);
+        this._animateIn();
+
+        // Focus modal
+        this.el.focus();
+
+        return this;
+      }
+
+      /**
+       * Close Modal
+       */
+
+    }, {
+      key: "close",
+      value: function close() {
+        if (!this.isOpen) {
+          return;
+        }
+
+        this.isOpen = false;
+        Modal._modalsOpen--;
+        this._nthModalOpened = 0;
+
+        // Call onCloseStart callback
+        if (typeof this.options.onCloseStart === 'function') {
+          this.options.onCloseStart.call(this, this.el);
+        }
+
+        this.el.classList.remove('open');
+
+        // Enable body scrolling only if there are no more modals open.
+        if (Modal._modalsOpen === 0) {
+          document.body.style.overflow = '';
+        }
+
+        if (this.options.dismissible) {
+          document.removeEventListener('keydown', this._handleKeydownBound);
+          document.removeEventListener('focus', this._handleFocusBound, true);
+        }
+
+        anim.remove(this.el);
+        anim.remove(this.$overlay[0]);
+        this._animateOut();
+        return this;
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Modal.__proto__ || Object.getPrototypeOf(Modal), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Modal;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Modal;
+  }(Component);
+
+  /**
+   * @static
+   * @memberof Modal
+   */
+
+
+  Modal._modalsOpen = 0;
+
+  /**
+   * @static
+   * @memberof Modal
+   */
+  Modal._count = 0;
+
+  M.Modal = Modal;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Modal, 'modal', 'M_Modal');
+  }
+})(cash, M.anime);
+;(function ($, anim) {
+  'use strict';
+
+  var _defaults = {
+    inDuration: 275,
+    outDuration: 200,
+    onOpenStart: null,
+    onOpenEnd: null,
+    onCloseStart: null,
+    onCloseEnd: null
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var Materialbox = function (_Component4) {
+    _inherits(Materialbox, _Component4);
+
+    /**
+     * Construct Materialbox instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Materialbox(el, options) {
+      _classCallCheck(this, Materialbox);
+
+      var _this16 = _possibleConstructorReturn(this, (Materialbox.__proto__ || Object.getPrototypeOf(Materialbox)).call(this, Materialbox, el, options));
+
+      _this16.el.M_Materialbox = _this16;
+
+      /**
+       * Options for the modal
+       * @member Materialbox#options
+       * @prop {Number} [inDuration=275] - Length in ms of enter transition
+       * @prop {Number} [outDuration=200] - Length in ms of exit transition
+       * @prop {Function} onOpenStart - Callback function called before materialbox is opened
+       * @prop {Function} onOpenEnd - Callback function called after materialbox is opened
+       * @prop {Function} onCloseStart - Callback function called before materialbox is closed
+       * @prop {Function} onCloseEnd - Callback function called after materialbox is closed
+       */
+      _this16.options = $.extend({}, Materialbox.defaults, options);
+
+      _this16.overlayActive = false;
+      _this16.doneAnimating = true;
+      _this16.placeholder = $('<div></div>').addClass('material-placeholder');
+      _this16.originalWidth = 0;
+      _this16.originalHeight = 0;
+      _this16.originInlineStyles = _this16.$el.attr('style');
+      _this16.caption = _this16.el.getAttribute('data-caption') || '';
+
+      // Wrap
+      _this16.$el.before(_this16.placeholder);
+      _this16.placeholder.append(_this16.$el);
+
+      _this16._setupEventHandlers();
+      return _this16;
+    }
+
+    _createClass(Materialbox, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this.el.M_Materialbox = undefined;
+
+        // Unwrap image
+        $(this.placeholder).after(this.el).remove();
+
+        this.$el.removeAttr('style');
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleMaterialboxClickBound = this._handleMaterialboxClick.bind(this);
+        this.el.addEventListener('click', this._handleMaterialboxClickBound);
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        this.el.removeEventListener('click', this._handleMaterialboxClickBound);
+      }
+
+      /**
+       * Handle Materialbox Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleMaterialboxClick",
+      value: function _handleMaterialboxClick(e) {
+        // If already modal, return to original
+        if (this.doneAnimating === false || this.overlayActive && this.doneAnimating) {
+          this.close();
+        } else {
+          this.open();
+        }
+      }
+
+      /**
+       * Handle Window Scroll
+       */
+
+    }, {
+      key: "_handleWindowScroll",
+      value: function _handleWindowScroll() {
+        if (this.overlayActive) {
+          this.close();
+        }
+      }
+
+      /**
+       * Handle Window Resize
+       */
+
+    }, {
+      key: "_handleWindowResize",
+      value: function _handleWindowResize() {
+        if (this.overlayActive) {
+          this.close();
+        }
+      }
+
+      /**
+       * Handle Window Resize
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleWindowEscape",
+      value: function _handleWindowEscape(e) {
+        // ESC key
+        if (e.keyCode === 27 && this.doneAnimating && this.overlayActive) {
+          this.close();
+        }
+      }
+
+      /**
+       * Find ancestors with overflow: hidden; and make visible
+       */
+
+    }, {
+      key: "_makeAncestorsOverflowVisible",
+      value: function _makeAncestorsOverflowVisible() {
+        this.ancestorsChanged = $();
+        var ancestor = this.placeholder[0].parentNode;
+        while (ancestor !== null && !$(ancestor).is(document)) {
+          var curr = $(ancestor);
+          if (curr.css('overflow') !== 'visible') {
+            curr.css('overflow', 'visible');
+            if (this.ancestorsChanged === undefined) {
+              this.ancestorsChanged = curr;
+            } else {
+              this.ancestorsChanged = this.ancestorsChanged.add(curr);
+            }
+          }
+          ancestor = ancestor.parentNode;
+        }
+      }
+
+      /**
+       * Animate image in
+       */
+
+    }, {
+      key: "_animateImageIn",
+      value: function _animateImageIn() {
+        var _this17 = this;
+
+        var animOptions = {
+          targets: this.el,
+          height: [this.originalHeight, this.newHeight],
+          width: [this.originalWidth, this.newWidth],
+          left: M.getDocumentScrollLeft() + this.windowWidth / 2 - this.placeholder.offset().left - this.newWidth / 2,
+          top: M.getDocumentScrollTop() + this.windowHeight / 2 - this.placeholder.offset().top - this.newHeight / 2,
+          duration: this.options.inDuration,
+          easing: 'easeOutQuad',
+          complete: function () {
+            _this17.doneAnimating = true;
+
+            // onOpenEnd callback
+            if (typeof _this17.options.onOpenEnd === 'function') {
+              _this17.options.onOpenEnd.call(_this17, _this17.el);
+            }
+          }
+        };
+
+        // Override max-width or max-height if needed
+        this.maxWidth = this.$el.css('max-width');
+        this.maxHeight = this.$el.css('max-height');
+        if (this.maxWidth !== 'none') {
+          animOptions.maxWidth = this.newWidth;
+        }
+        if (this.maxHeight !== 'none') {
+          animOptions.maxHeight = this.newHeight;
+        }
+
+        anim(animOptions);
+      }
+
+      /**
+       * Animate image out
+       */
+
+    }, {
+      key: "_animateImageOut",
+      value: function _animateImageOut() {
+        var _this18 = this;
+
+        var animOptions = {
+          targets: this.el,
+          width: this.originalWidth,
+          height: this.originalHeight,
+          left: 0,
+          top: 0,
+          duration: this.options.outDuration,
+          easing: 'easeOutQuad',
+          complete: function () {
+            _this18.placeholder.css({
+              height: '',
+              width: '',
+              position: '',
+              top: '',
+              left: ''
+            });
+
+            // Revert to width or height attribute
+            if (_this18.attrWidth) {
+              _this18.$el.attr('width', _this18.attrWidth);
+            }
+            if (_this18.attrHeight) {
+              _this18.$el.attr('height', _this18.attrHeight);
+            }
+
+            _this18.$el.removeAttr('style');
+            _this18.originInlineStyles && _this18.$el.attr('style', _this18.originInlineStyles);
+
+            // Remove class
+            _this18.$el.removeClass('active');
+            _this18.doneAnimating = true;
+
+            // Remove overflow overrides on ancestors
+            if (_this18.ancestorsChanged.length) {
+              _this18.ancestorsChanged.css('overflow', '');
+            }
+
+            // onCloseEnd callback
+            if (typeof _this18.options.onCloseEnd === 'function') {
+              _this18.options.onCloseEnd.call(_this18, _this18.el);
+            }
+          }
+        };
+
+        anim(animOptions);
+      }
+
+      /**
+       * Update open and close vars
+       */
+
+    }, {
+      key: "_updateVars",
+      value: function _updateVars() {
+        this.windowWidth = window.innerWidth;
+        this.windowHeight = window.innerHeight;
+        this.caption = this.el.getAttribute('data-caption') || '';
+      }
+
+      /**
+       * Open Materialbox
+       */
+
+    }, {
+      key: "open",
+      value: function open() {
+        var _this19 = this;
+
+        this._updateVars();
+        this.originalWidth = this.el.getBoundingClientRect().width;
+        this.originalHeight = this.el.getBoundingClientRect().height;
+
+        // Set states
+        this.doneAnimating = false;
+        this.$el.addClass('active');
+        this.overlayActive = true;
+
+        // onOpenStart callback
+        if (typeof this.options.onOpenStart === 'function') {
+          this.options.onOpenStart.call(this, this.el);
+        }
+
+        // Set positioning for placeholder
+        this.placeholder.css({
+          width: this.placeholder[0].getBoundingClientRect().width + 'px',
+          height: this.placeholder[0].getBoundingClientRect().height + 'px',
+          position: 'relative',
+          top: 0,
+          left: 0
+        });
+
+        this._makeAncestorsOverflowVisible();
+
+        // Set css on origin
+        this.$el.css({
+          position: 'absolute',
+          'z-index': 1000,
+          'will-change': 'left, top, width, height'
+        });
+
+        // Change from width or height attribute to css
+        this.attrWidth = this.$el.attr('width');
+        this.attrHeight = this.$el.attr('height');
+        if (this.attrWidth) {
+          this.$el.css('width', this.attrWidth + 'px');
+          this.$el.removeAttr('width');
+        }
+        if (this.attrHeight) {
+          this.$el.css('width', this.attrHeight + 'px');
+          this.$el.removeAttr('height');
+        }
+
+        // Add overlay
+        this.$overlay = $('<div id="materialbox-overlay"></div>').css({
+          opacity: 0
+        }).one('click', function () {
+          if (_this19.doneAnimating) {
+            _this19.close();
+          }
+        });
+
+        // Put before in origin image to preserve z-index layering.
+        this.$el.before(this.$overlay);
+
+        // Set dimensions if needed
+        var overlayOffset = this.$overlay[0].getBoundingClientRect();
+        this.$overlay.css({
+          width: this.windowWidth + 'px',
+          height: this.windowHeight + 'px',
+          left: -1 * overlayOffset.left + 'px',
+          top: -1 * overlayOffset.top + 'px'
+        });
+
+        anim.remove(this.el);
+        anim.remove(this.$overlay[0]);
+
+        // Animate Overlay
+        anim({
+          targets: this.$overlay[0],
+          opacity: 1,
+          duration: this.options.inDuration,
+          easing: 'easeOutQuad'
+        });
+
+        // Add and animate caption if it exists
+        if (this.caption !== '') {
+          if (this.$photocaption) {
+            anim.remove(this.$photoCaption[0]);
+          }
+          this.$photoCaption = $('<div class="materialbox-caption"></div>');
+          this.$photoCaption.text(this.caption);
+          $('body').append(this.$photoCaption);
+          this.$photoCaption.css({ display: 'inline' });
+
+          anim({
+            targets: this.$photoCaption[0],
+            opacity: 1,
+            duration: this.options.inDuration,
+            easing: 'easeOutQuad'
+          });
+        }
+
+        // Resize Image
+        var ratio = 0;
+        var widthPercent = this.originalWidth / this.windowWidth;
+        var heightPercent = this.originalHeight / this.windowHeight;
+        this.newWidth = 0;
+        this.newHeight = 0;
+
+        if (widthPercent > heightPercent) {
+          ratio = this.originalHeight / this.originalWidth;
+          this.newWidth = this.windowWidth * 0.9;
+          this.newHeight = this.windowWidth * 0.9 * ratio;
+        } else {
+          ratio = this.originalWidth / this.originalHeight;
+          this.newWidth = this.windowHeight * 0.9 * ratio;
+          this.newHeight = this.windowHeight * 0.9;
+        }
+
+        this._animateImageIn();
+
+        // Handle Exit triggers
+        this._handleWindowScrollBound = this._handleWindowScroll.bind(this);
+        this._handleWindowResizeBound = this._handleWindowResize.bind(this);
+        this._handleWindowEscapeBound = this._handleWindowEscape.bind(this);
+
+        window.addEventListener('scroll', this._handleWindowScrollBound);
+        window.addEventListener('resize', this._handleWindowResizeBound);
+        window.addEventListener('keyup', this._handleWindowEscapeBound);
+      }
+
+      /**
+       * Close Materialbox
+       */
+
+    }, {
+      key: "close",
+      value: function close() {
+        var _this20 = this;
+
+        this._updateVars();
+        this.doneAnimating = false;
+
+        // onCloseStart callback
+        if (typeof this.options.onCloseStart === 'function') {
+          this.options.onCloseStart.call(this, this.el);
+        }
+
+        anim.remove(this.el);
+        anim.remove(this.$overlay[0]);
+
+        if (this.caption !== '') {
+          anim.remove(this.$photoCaption[0]);
+        }
+
+        // disable exit handlers
+        window.removeEventListener('scroll', this._handleWindowScrollBound);
+        window.removeEventListener('resize', this._handleWindowResizeBound);
+        window.removeEventListener('keyup', this._handleWindowEscapeBound);
+
+        anim({
+          targets: this.$overlay[0],
+          opacity: 0,
+          duration: this.options.outDuration,
+          easing: 'easeOutQuad',
+          complete: function () {
+            _this20.overlayActive = false;
+            _this20.$overlay.remove();
+          }
+        });
+
+        this._animateImageOut();
+
+        // Remove Caption + reset css settings on image
+        if (this.caption !== '') {
+          anim({
+            targets: this.$photoCaption[0],
+            opacity: 0,
+            duration: this.options.outDuration,
+            easing: 'easeOutQuad',
+            complete: function () {
+              _this20.$photoCaption.remove();
+            }
+          });
+        }
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Materialbox.__proto__ || Object.getPrototypeOf(Materialbox), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Materialbox;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Materialbox;
+  }(Component);
+
+  M.Materialbox = Materialbox;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Materialbox, 'materialbox', 'M_Materialbox');
+  }
+})(cash, M.anime);
+;(function ($) {
+  'use strict';
+
+  var _defaults = {
+    responsiveThreshold: 0 // breakpoint for swipeable
+  };
+
+  var Parallax = function (_Component5) {
+    _inherits(Parallax, _Component5);
+
+    function Parallax(el, options) {
+      _classCallCheck(this, Parallax);
+
+      var _this21 = _possibleConstructorReturn(this, (Parallax.__proto__ || Object.getPrototypeOf(Parallax)).call(this, Parallax, el, options));
+
+      _this21.el.M_Parallax = _this21;
+
+      /**
+       * Options for the Parallax
+       * @member Parallax#options
+       * @prop {Number} responsiveThreshold
+       */
+      _this21.options = $.extend({}, Parallax.defaults, options);
+      _this21._enabled = window.innerWidth > _this21.options.responsiveThreshold;
+
+      _this21.$img = _this21.$el.find('img').first();
+      _this21.$img.each(function () {
+        var el = this;
+        if (el.complete) $(el).trigger('load');
+      });
+
+      _this21._updateParallax();
+      _this21._setupEventHandlers();
+      _this21._setupStyles();
+
+      Parallax._parallaxes.push(_this21);
+      return _this21;
+    }
+
+    _createClass(Parallax, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        Parallax._parallaxes.splice(Parallax._parallaxes.indexOf(this), 1);
+        this.$img[0].style.transform = '';
+        this._removeEventHandlers();
+
+        this.$el[0].M_Parallax = undefined;
+      }
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleImageLoadBound = this._handleImageLoad.bind(this);
+        this.$img[0].addEventListener('load', this._handleImageLoadBound);
+
+        if (Parallax._parallaxes.length === 0) {
+          Parallax._handleScrollThrottled = M.throttle(Parallax._handleScroll, 5);
+          window.addEventListener('scroll', Parallax._handleScrollThrottled);
+
+          Parallax._handleWindowResizeThrottled = M.throttle(Parallax._handleWindowResize, 5);
+          window.addEventListener('resize', Parallax._handleWindowResizeThrottled);
+        }
+      }
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        this.$img[0].removeEventListener('load', this._handleImageLoadBound);
+
+        if (Parallax._parallaxes.length === 0) {
+          window.removeEventListener('scroll', Parallax._handleScrollThrottled);
+          window.removeEventListener('resize', Parallax._handleWindowResizeThrottled);
+        }
+      }
+    }, {
+      key: "_setupStyles",
+      value: function _setupStyles() {
+        this.$img[0].style.opacity = 1;
+      }
+    }, {
+      key: "_handleImageLoad",
+      value: function _handleImageLoad() {
+        this._updateParallax();
+      }
+    }, {
+      key: "_updateParallax",
+      value: function _updateParallax() {
+        var containerHeight = this.$el.height() > 0 ? this.el.parentNode.offsetHeight : 500;
+        var imgHeight = this.$img[0].offsetHeight;
+        var parallaxDist = imgHeight - containerHeight;
+        var bottom = this.$el.offset().top + containerHeight;
+        var top = this.$el.offset().top;
+        var scrollTop = M.getDocumentScrollTop();
+        var windowHeight = window.innerHeight;
+        var windowBottom = scrollTop + windowHeight;
+        var percentScrolled = (windowBottom - top) / (containerHeight + windowHeight);
+        var parallax = parallaxDist * percentScrolled;
+
+        if (!this._enabled) {
+          this.$img[0].style.transform = '';
+        } else if (bottom > scrollTop && top < scrollTop + windowHeight) {
+          this.$img[0].style.transform = "translate3D(-50%, " + parallax + "px, 0)";
+        }
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Parallax.__proto__ || Object.getPrototypeOf(Parallax), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Parallax;
+      }
+    }, {
+      key: "_handleScroll",
+      value: function _handleScroll() {
+        for (var i = 0; i < Parallax._parallaxes.length; i++) {
+          var parallaxInstance = Parallax._parallaxes[i];
+          parallaxInstance._updateParallax.call(parallaxInstance);
+        }
+      }
+    }, {
+      key: "_handleWindowResize",
+      value: function _handleWindowResize() {
+        for (var i = 0; i < Parallax._parallaxes.length; i++) {
+          var parallaxInstance = Parallax._parallaxes[i];
+          parallaxInstance._enabled = window.innerWidth > parallaxInstance.options.responsiveThreshold;
+        }
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Parallax;
+  }(Component);
+
+  /**
+   * @static
+   * @memberof Parallax
+   */
+
+
+  Parallax._parallaxes = [];
+
+  M.Parallax = Parallax;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Parallax, 'parallax', 'M_Parallax');
+  }
+})(cash);
+;(function ($, anim) {
+  'use strict';
+
+  var _defaults = {
+    duration: 300,
+    onShow: null,
+    swipeable: false,
+    responsiveThreshold: Infinity // breakpoint for swipeable
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var Tabs = function (_Component6) {
+    _inherits(Tabs, _Component6);
+
+    /**
+     * Construct Tabs instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Tabs(el, options) {
+      _classCallCheck(this, Tabs);
+
+      var _this22 = _possibleConstructorReturn(this, (Tabs.__proto__ || Object.getPrototypeOf(Tabs)).call(this, Tabs, el, options));
+
+      _this22.el.M_Tabs = _this22;
+
+      /**
+       * Options for the Tabs
+       * @member Tabs#options
+       * @prop {Number} duration
+       * @prop {Function} onShow
+       * @prop {Boolean} swipeable
+       * @prop {Number} responsiveThreshold
+       */
+      _this22.options = $.extend({}, Tabs.defaults, options);
+
+      // Setup
+      _this22.$tabLinks = _this22.$el.children('li.tab').children('a');
+      _this22.index = 0;
+      _this22._setupActiveTabLink();
+
+      // Setup tabs content
+      if (_this22.options.swipeable) {
+        _this22._setupSwipeableTabs();
+      } else {
+        _this22._setupNormalTabs();
+      }
+
+      // Setup tabs indicator after content to ensure accurate widths
+      _this22._setTabsAndTabWidth();
+      _this22._createIndicator();
+
+      _this22._setupEventHandlers();
+      return _this22;
+    }
+
+    _createClass(Tabs, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this._indicator.parentNode.removeChild(this._indicator);
+
+        if (this.options.swipeable) {
+          this._teardownSwipeableTabs();
+        } else {
+          this._teardownNormalTabs();
+        }
+
+        this.$el[0].M_Tabs = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleWindowResizeBound = this._handleWindowResize.bind(this);
+        window.addEventListener('resize', this._handleWindowResizeBound);
+
+        this._handleTabClickBound = this._handleTabClick.bind(this);
+        this.el.addEventListener('click', this._handleTabClickBound);
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        window.removeEventListener('resize', this._handleWindowResizeBound);
+        this.el.removeEventListener('click', this._handleTabClickBound);
+      }
+
+      /**
+       * Handle window Resize
+       */
+
+    }, {
+      key: "_handleWindowResize",
+      value: function _handleWindowResize() {
+        this._setTabsAndTabWidth();
+
+        if (this.tabWidth !== 0 && this.tabsWidth !== 0) {
+          this._indicator.style.left = this._calcLeftPos(this.$activeTabLink) + 'px';
+          this._indicator.style.right = this._calcRightPos(this.$activeTabLink) + 'px';
+        }
+      }
+
+      /**
+       * Handle tab click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleTabClick",
+      value: function _handleTabClick(e) {
+        var _this23 = this;
+
+        var tab = $(e.target).closest('li.tab');
+        var tabLink = $(e.target).closest('a');
+
+        // Handle click on tab link only
+        if (!tabLink.length || !tabLink.parent().hasClass('tab')) {
+          return;
+        }
+
+        if (tab.hasClass('disabled')) {
+          e.preventDefault();
+          return;
+        }
+
+        // Act as regular link if target attribute is specified.
+        if (!!tabLink.attr('target')) {
+          return;
+        }
+
+        // Make the old tab inactive.
+        this.$activeTabLink.removeClass('active');
+        var $oldContent = this.$content;
+
+        // Update the variables with the new link and content
+        this.$activeTabLink = tabLink;
+        this.$content = $(M.escapeHash(tabLink[0].hash));
+        this.$tabLinks = this.$el.children('li.tab').children('a');
+
+        // Make the tab active.
+        this.$activeTabLink.addClass('active');
+        var prevIndex = this.index;
+        this.index = Math.max(this.$tabLinks.index(tabLink), 0);
+
+        // Swap content
+        if (this.options.swipeable) {
+          if (this._tabsCarousel) {
+            this._tabsCarousel.set(this.index, function () {
+              if (typeof _this23.options.onShow === 'function') {
+                _this23.options.onShow.call(_this23, _this23.$content[0]);
+              }
+            });
+          }
+        } else {
+          if (this.$content.length) {
+            this.$content[0].style.display = 'block';
+            this.$content.addClass('active');
+            if (typeof this.options.onShow === 'function') {
+              this.options.onShow.call(this, this.$content[0]);
+            }
+
+            if ($oldContent.length && !$oldContent.is(this.$content)) {
+              $oldContent[0].style.display = 'none';
+              $oldContent.removeClass('active');
+            }
+          }
+        }
+
+        // Update widths after content is swapped (scrollbar bugfix)
+        this._setTabsAndTabWidth();
+
+        // Update indicator
+        this._animateIndicator(prevIndex);
+
+        // Prevent the anchor's default click action
+        e.preventDefault();
+      }
+
+      /**
+       * Generate elements for tab indicator.
+       */
+
+    }, {
+      key: "_createIndicator",
+      value: function _createIndicator() {
+        var _this24 = this;
+
+        var indicator = document.createElement('li');
+        indicator.classList.add('indicator');
+
+        this.el.appendChild(indicator);
+        this._indicator = indicator;
+
+        setTimeout(function () {
+          _this24._indicator.style.left = _this24._calcLeftPos(_this24.$activeTabLink) + 'px';
+          _this24._indicator.style.right = _this24._calcRightPos(_this24.$activeTabLink) + 'px';
+        }, 0);
+      }
+
+      /**
+       * Setup first active tab link.
+       */
+
+    }, {
+      key: "_setupActiveTabLink",
+      value: function _setupActiveTabLink() {
+        // If the location.hash matches one of the links, use that as the active tab.
+        this.$activeTabLink = $(this.$tabLinks.filter('[href="' + location.hash + '"]'));
+
+        // If no match is found, use the first link or any with class 'active' as the initial active tab.
+        if (this.$activeTabLink.length === 0) {
+          this.$activeTabLink = this.$el.children('li.tab').children('a.active').first();
+        }
+        if (this.$activeTabLink.length === 0) {
+          this.$activeTabLink = this.$el.children('li.tab').children('a').first();
+        }
+
+        this.$tabLinks.removeClass('active');
+        this.$activeTabLink[0].classList.add('active');
+
+        this.index = Math.max(this.$tabLinks.index(this.$activeTabLink), 0);
+
+        if (this.$activeTabLink.length) {
+          this.$content = $(M.escapeHash(this.$activeTabLink[0].hash));
+          this.$content.addClass('active');
+        }
+      }
+
+      /**
+       * Setup swipeable tabs
+       */
+
+    }, {
+      key: "_setupSwipeableTabs",
+      value: function _setupSwipeableTabs() {
+        var _this25 = this;
+
+        // Change swipeable according to responsive threshold
+        if (window.innerWidth > this.options.responsiveThreshold) {
+          this.options.swipeable = false;
+        }
+
+        var $tabsContent = $();
+        this.$tabLinks.each(function (link) {
+          var $currContent = $(M.escapeHash(link.hash));
+          $currContent.addClass('carousel-item');
+          $tabsContent = $tabsContent.add($currContent);
+        });
+
+        var $tabsWrapper = $('<div class="tabs-content carousel carousel-slider"></div>');
+        $tabsContent.first().before($tabsWrapper);
+        $tabsWrapper.append($tabsContent);
+        $tabsContent[0].style.display = '';
+
+        // Keep active tab index to set initial carousel slide
+        var activeTabIndex = this.$activeTabLink.closest('.tab').index();
+
+        this._tabsCarousel = M.Carousel.init($tabsWrapper[0], {
+          fullWidth: true,
+          noWrap: true,
+          onCycleTo: function (item) {
+            var prevIndex = _this25.index;
+            _this25.index = $(item).index();
+            _this25.$activeTabLink.removeClass('active');
+            _this25.$activeTabLink = _this25.$tabLinks.eq(_this25.index);
+            _this25.$activeTabLink.addClass('active');
+            _this25._animateIndicator(prevIndex);
+            if (typeof _this25.options.onShow === 'function') {
+              _this25.options.onShow.call(_this25, _this25.$content[0]);
+            }
+          }
+        });
+
+        // Set initial carousel slide to active tab
+        this._tabsCarousel.set(activeTabIndex);
+      }
+
+      /**
+       * Teardown normal tabs.
+       */
+
+    }, {
+      key: "_teardownSwipeableTabs",
+      value: function _teardownSwipeableTabs() {
+        var $tabsWrapper = this._tabsCarousel.$el;
+        this._tabsCarousel.destroy();
+
+        // Unwrap
+        $tabsWrapper.after($tabsWrapper.children());
+        $tabsWrapper.remove();
+      }
+
+      /**
+       * Setup normal tabs.
+       */
+
+    }, {
+      key: "_setupNormalTabs",
+      value: function _setupNormalTabs() {
+        // Hide Tabs Content
+        this.$tabLinks.not(this.$activeTabLink).each(function (link) {
+          if (!!link.hash) {
+            var $currContent = $(M.escapeHash(link.hash));
+            if ($currContent.length) {
+              $currContent[0].style.display = 'none';
+            }
+          }
+        });
+      }
+
+      /**
+       * Teardown normal tabs.
+       */
+
+    }, {
+      key: "_teardownNormalTabs",
+      value: function _teardownNormalTabs() {
+        // show Tabs Content
+        this.$tabLinks.each(function (link) {
+          if (!!link.hash) {
+            var $currContent = $(M.escapeHash(link.hash));
+            if ($currContent.length) {
+              $currContent[0].style.display = '';
+            }
+          }
+        });
+      }
+
+      /**
+       * set tabs and tab width
+       */
+
+    }, {
+      key: "_setTabsAndTabWidth",
+      value: function _setTabsAndTabWidth() {
+        this.tabsWidth = this.$el.width();
+        this.tabWidth = Math.max(this.tabsWidth, this.el.scrollWidth) / this.$tabLinks.length;
+      }
+
+      /**
+       * Finds right attribute for indicator based on active tab.
+       * @param {cash} el
+       */
+
+    }, {
+      key: "_calcRightPos",
+      value: function _calcRightPos(el) {
+        return Math.ceil(this.tabsWidth - el.position().left - el[0].getBoundingClientRect().width);
+      }
+
+      /**
+       * Finds left attribute for indicator based on active tab.
+       * @param {cash} el
+       */
+
+    }, {
+      key: "_calcLeftPos",
+      value: function _calcLeftPos(el) {
+        return Math.floor(el.position().left);
+      }
+    }, {
+      key: "updateTabIndicator",
+      value: function updateTabIndicator() {
+        this._setTabsAndTabWidth();
+        this._animateIndicator(this.index);
+      }
+
+      /**
+       * Animates Indicator to active tab.
+       * @param {Number} prevIndex
+       */
+
+    }, {
+      key: "_animateIndicator",
+      value: function _animateIndicator(prevIndex) {
+        var leftDelay = 0,
+            rightDelay = 0;
+
+        if (this.index - prevIndex >= 0) {
+          leftDelay = 90;
+        } else {
+          rightDelay = 90;
+        }
+
+        // Animate
+        var animOptions = {
+          targets: this._indicator,
+          left: {
+            value: this._calcLeftPos(this.$activeTabLink),
+            delay: leftDelay
+          },
+          right: {
+            value: this._calcRightPos(this.$activeTabLink),
+            delay: rightDelay
+          },
+          duration: this.options.duration,
+          easing: 'easeOutQuad'
+        };
+        anim.remove(this._indicator);
+        anim(animOptions);
+      }
+
+      /**
+       * Select tab.
+       * @param {String} tabId
+       */
+
+    }, {
+      key: "select",
+      value: function select(tabId) {
+        var tab = this.$tabLinks.filter('[href="#' + tabId + '"]');
+        if (tab.length) {
+          tab.trigger('click');
+        }
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Tabs.__proto__ || Object.getPrototypeOf(Tabs), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Tabs;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Tabs;
+  }(Component);
+
+  M.Tabs = Tabs;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Tabs, 'tabs', 'M_Tabs');
+  }
+})(cash, M.anime);
+;(function ($, anim) {
+  'use strict';
+
+  var _defaults = {
+    exitDelay: 200,
+    enterDelay: 0,
+    html: null,
+    margin: 5,
+    inDuration: 250,
+    outDuration: 200,
+    position: 'bottom',
+    transitionMovement: 10
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var Tooltip = function (_Component7) {
+    _inherits(Tooltip, _Component7);
+
+    /**
+     * Construct Tooltip instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Tooltip(el, options) {
+      _classCallCheck(this, Tooltip);
+
+      var _this26 = _possibleConstructorReturn(this, (Tooltip.__proto__ || Object.getPrototypeOf(Tooltip)).call(this, Tooltip, el, options));
+
+      _this26.el.M_Tooltip = _this26;
+      _this26.options = $.extend({}, Tooltip.defaults, options);
+
+      _this26.isOpen = false;
+      _this26.isHovered = false;
+      _this26.isFocused = false;
+      _this26._appendTooltipEl();
+      _this26._setupEventHandlers();
+      return _this26;
+    }
+
+    _createClass(Tooltip, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        $(this.tooltipEl).remove();
+        this._removeEventHandlers();
+        this.el.M_Tooltip = undefined;
+      }
+    }, {
+      key: "_appendTooltipEl",
+      value: function _appendTooltipEl() {
+        var tooltipEl = document.createElement('div');
+        tooltipEl.classList.add('material-tooltip');
+        this.tooltipEl = tooltipEl;
+
+        var tooltipContentEl = document.createElement('div');
+        tooltipContentEl.classList.add('tooltip-content');
+        tooltipContentEl.innerHTML = this.options.html;
+        tooltipEl.appendChild(tooltipContentEl);
+        document.body.appendChild(tooltipEl);
+      }
+    }, {
+      key: "_updateTooltipContent",
+      value: function _updateTooltipContent() {
+        this.tooltipEl.querySelector('.tooltip-content').innerHTML = this.options.html;
+      }
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleMouseEnterBound = this._handleMouseEnter.bind(this);
+        this._handleMouseLeaveBound = this._handleMouseLeave.bind(this);
+        this._handleFocusBound = this._handleFocus.bind(this);
+        this._handleBlurBound = this._handleBlur.bind(this);
+        this.el.addEventListener('mouseenter', this._handleMouseEnterBound);
+        this.el.addEventListener('mouseleave', this._handleMouseLeaveBound);
+        this.el.addEventListener('focus', this._handleFocusBound, true);
+        this.el.addEventListener('blur', this._handleBlurBound, true);
+      }
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        this.el.removeEventListener('mouseenter', this._handleMouseEnterBound);
+        this.el.removeEventListener('mouseleave', this._handleMouseLeaveBound);
+        this.el.removeEventListener('focus', this._handleFocusBound, true);
+        this.el.removeEventListener('blur', this._handleBlurBound, true);
+      }
+    }, {
+      key: "open",
+      value: function open(isManual) {
+        if (this.isOpen) {
+          return;
+        }
+        isManual = isManual === undefined ? true : undefined; // Default value true
+        this.isOpen = true;
+        // Update tooltip content with HTML attribute options
+        this.options = $.extend({}, this.options, this._getAttributeOptions());
+        this._updateTooltipContent();
+        this._setEnterDelayTimeout(isManual);
+      }
+    }, {
+      key: "close",
+      value: function close() {
+        if (!this.isOpen) {
+          return;
+        }
+
+        this.isHovered = false;
+        this.isFocused = false;
+        this.isOpen = false;
+        this._setExitDelayTimeout();
+      }
+
+      /**
+       * Create timeout which delays when the tooltip closes
+       */
+
+    }, {
+      key: "_setExitDelayTimeout",
+      value: function _setExitDelayTimeout() {
+        var _this27 = this;
+
+        clearTimeout(this._exitDelayTimeout);
+
+        this._exitDelayTimeout = setTimeout(function () {
+          if (_this27.isHovered || _this27.isFocused) {
+            return;
+          }
+
+          _this27._animateOut();
+        }, this.options.exitDelay);
+      }
+
+      /**
+       * Create timeout which delays when the toast closes
+       */
+
+    }, {
+      key: "_setEnterDelayTimeout",
+      value: function _setEnterDelayTimeout(isManual) {
+        var _this28 = this;
+
+        clearTimeout(this._enterDelayTimeout);
+
+        this._enterDelayTimeout = setTimeout(function () {
+          if (!_this28.isHovered && !_this28.isFocused && !isManual) {
+            return;
+          }
+
+          _this28._animateIn();
+        }, this.options.enterDelay);
+      }
+    }, {
+      key: "_positionTooltip",
+      value: function _positionTooltip() {
+        var origin = this.el,
+            tooltip = this.tooltipEl,
+            originHeight = origin.offsetHeight,
+            originWidth = origin.offsetWidth,
+            tooltipHeight = tooltip.offsetHeight,
+            tooltipWidth = tooltip.offsetWidth,
+            newCoordinates = void 0,
+            margin = this.options.margin,
+            targetTop = void 0,
+            targetLeft = void 0;
+
+        this.xMovement = 0, this.yMovement = 0;
+
+        targetTop = origin.getBoundingClientRect().top + M.getDocumentScrollTop();
+        targetLeft = origin.getBoundingClientRect().left + M.getDocumentScrollLeft();
+
+        if (this.options.position === 'top') {
+          targetTop += -tooltipHeight - margin;
+          targetLeft += originWidth / 2 - tooltipWidth / 2;
+          this.yMovement = -this.options.transitionMovement;
+        } else if (this.options.position === 'right') {
+          targetTop += originHeight / 2 - tooltipHeight / 2;
+          targetLeft += originWidth + margin;
+          this.xMovement = this.options.transitionMovement;
+        } else if (this.options.position === 'left') {
+          targetTop += originHeight / 2 - tooltipHeight / 2;
+          targetLeft += -tooltipWidth - margin;
+          this.xMovement = -this.options.transitionMovement;
+        } else {
+          targetTop += originHeight + margin;
+          targetLeft += originWidth / 2 - tooltipWidth / 2;
+          this.yMovement = this.options.transitionMovement;
+        }
+
+        newCoordinates = this._repositionWithinScreen(targetLeft, targetTop, tooltipWidth, tooltipHeight);
+        $(tooltip).css({
+          top: newCoordinates.y + 'px',
+          left: newCoordinates.x + 'px'
+        });
+      }
+    }, {
+      key: "_repositionWithinScreen",
+      value: function _repositionWithinScreen(x, y, width, height) {
+        var scrollLeft = M.getDocumentScrollLeft();
+        var scrollTop = M.getDocumentScrollTop();
+        var newX = x - scrollLeft;
+        var newY = y - scrollTop;
+
+        var bounding = {
+          left: newX,
+          top: newY,
+          width: width,
+          height: height
+        };
+
+        var offset = this.options.margin + this.options.transitionMovement;
+        var edges = M.checkWithinContainer(document.body, bounding, offset);
+
+        if (edges.left) {
+          newX = offset;
+        } else if (edges.right) {
+          newX -= newX + width - window.innerWidth;
+        }
+
+        if (edges.top) {
+          newY = offset;
+        } else if (edges.bottom) {
+          newY -= newY + height - window.innerHeight;
+        }
+
+        return {
+          x: newX + scrollLeft,
+          y: newY + scrollTop
+        };
+      }
+    }, {
+      key: "_animateIn",
+      value: function _animateIn() {
+        this._positionTooltip();
+        this.tooltipEl.style.visibility = 'visible';
+        anim.remove(this.tooltipEl);
+        anim({
+          targets: this.tooltipEl,
+          opacity: 1,
+          translateX: this.xMovement,
+          translateY: this.yMovement,
+          duration: this.options.inDuration,
+          easing: 'easeOutCubic'
+        });
+      }
+    }, {
+      key: "_animateOut",
+      value: function _animateOut() {
+        anim.remove(this.tooltipEl);
+        anim({
+          targets: this.tooltipEl,
+          opacity: 0,
+          translateX: 0,
+          translateY: 0,
+          duration: this.options.outDuration,
+          easing: 'easeOutCubic'
+        });
+      }
+    }, {
+      key: "_handleMouseEnter",
+      value: function _handleMouseEnter() {
+        this.isHovered = true;
+        this.isFocused = false; // Allows close of tooltip when opened by focus.
+        this.open(false);
+      }
+    }, {
+      key: "_handleMouseLeave",
+      value: function _handleMouseLeave() {
+        this.isHovered = false;
+        this.isFocused = false; // Allows close of tooltip when opened by focus.
+        this.close();
+      }
+    }, {
+      key: "_handleFocus",
+      value: function _handleFocus() {
+        if (M.tabPressed) {
+          this.isFocused = true;
+          this.open(false);
+        }
+      }
+    }, {
+      key: "_handleBlur",
+      value: function _handleBlur() {
+        this.isFocused = false;
+        this.close();
+      }
+    }, {
+      key: "_getAttributeOptions",
+      value: function _getAttributeOptions() {
+        var attributeOptions = {};
+        var tooltipTextOption = this.el.getAttribute('data-tooltip');
+        var positionOption = this.el.getAttribute('data-position');
+
+        if (tooltipTextOption) {
+          attributeOptions.html = tooltipTextOption;
+        }
+
+        if (positionOption) {
+          attributeOptions.position = positionOption;
+        }
+        return attributeOptions;
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Tooltip.__proto__ || Object.getPrototypeOf(Tooltip), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Tooltip;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Tooltip;
+  }(Component);
+
+  M.Tooltip = Tooltip;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Tooltip, 'tooltip', 'M_Tooltip');
+  }
+})(cash, M.anime);
+; /*!
+  * Waves v0.6.4
+  * http://fian.my.id/Waves
+  *
+  * Copyright 2014 Alfiana E. Sibuea and other contributors
+  * Released under the MIT license
+  * https://github.com/fians/Waves/blob/master/LICENSE
+  */
+
+;(function (window) {
+  'use strict';
+
+  var Waves = Waves || {};
+  var $$ = document.querySelectorAll.bind(document);
+
+  // Find exact position of element
+  function isWindow(obj) {
+    return obj !== null && obj === obj.window;
+  }
+
+  function getWindow(elem) {
+    return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView;
+  }
+
+  function offset(elem) {
+    var docElem,
+        win,
+        box = { top: 0, left: 0 },
+        doc = elem && elem.ownerDocument;
+
+    docElem = doc.documentElement;
+
+    if (typeof elem.getBoundingClientRect !== typeof undefined) {
+      box = elem.getBoundingClientRect();
+    }
+    win = getWindow(doc);
+    return {
+      top: box.top + win.pageYOffset - docElem.clientTop,
+      left: box.left + win.pageXOffset - docElem.clientLeft
+    };
+  }
+
+  function convertStyle(obj) {
+    var style = '';
+
+    for (var a in obj) {
+      if (obj.hasOwnProperty(a)) {
+        style += a + ':' + obj[a] + ';';
+      }
+    }
+
+    return style;
+  }
+
+  var Effect = {
+
+    // Effect delay
+    duration: 750,
+
+    show: function (e, element) {
+
+      // Disable right click
+      if (e.button === 2) {
+        return false;
+      }
+
+      var el = element || this;
+
+      // Create ripple
+      var ripple = document.createElement('div');
+      ripple.className = 'waves-ripple';
+      el.appendChild(ripple);
+
+      // Get click coordinate and element witdh
+      var pos = offset(el);
+      var relativeY = e.pageY - pos.top;
+      var relativeX = e.pageX - pos.left;
+      var scale = 'scale(' + el.clientWidth / 100 * 10 + ')';
+
+      // Support for touch devices
+      if ('touches' in e) {
+        relativeY = e.touches[0].pageY - pos.top;
+        relativeX = e.touches[0].pageX - pos.left;
+      }
+
+      // Attach data to element
+      ripple.setAttribute('data-hold', Date.now());
+      ripple.setAttribute('data-scale', scale);
+      ripple.setAttribute('data-x', relativeX);
+      ripple.setAttribute('data-y', relativeY);
+
+      // Set ripple position
+      var rippleStyle = {
+        'top': relativeY + 'px',
+        'left': relativeX + 'px'
+      };
+
+      ripple.className = ripple.className + ' waves-notransition';
+      ripple.setAttribute('style', convertStyle(rippleStyle));
+      ripple.className = ripple.className.replace('waves-notransition', '');
+
+      // Scale the ripple
+      rippleStyle['-webkit-transform'] = scale;
+      rippleStyle['-moz-transform'] = scale;
+      rippleStyle['-ms-transform'] = scale;
+      rippleStyle['-o-transform'] = scale;
+      rippleStyle.transform = scale;
+      rippleStyle.opacity = '1';
+
+      rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms';
+      rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms';
+      rippleStyle['-o-transition-duration'] = Effect.duration + 'ms';
+      rippleStyle['transition-duration'] = Effect.duration + 'ms';
+
+      rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
+      rippleStyle['-moz-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
+      rippleStyle['-o-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
+      rippleStyle['transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)';
+
+      ripple.setAttribute('style', convertStyle(rippleStyle));
+    },
+
+    hide: function (e) {
+      TouchHandler.touchup(e);
+
+      var el = this;
+      var width = el.clientWidth * 1.4;
+
+      // Get first ripple
+      var ripple = null;
+      var ripples = el.getElementsByClassName('waves-ripple');
+      if (ripples.length > 0) {
+        ripple = ripples[ripples.length - 1];
+      } else {
+        return false;
+      }
+
+      var relativeX = ripple.getAttribute('data-x');
+      var relativeY = ripple.getAttribute('data-y');
+      var scale = ripple.getAttribute('data-scale');
+
+      // Get delay beetween mousedown and mouse leave
+      var diff = Date.now() - Number(ripple.getAttribute('data-hold'));
+      var delay = 350 - diff;
+
+      if (delay < 0) {
+        delay = 0;
+      }
+
+      // Fade out ripple after delay
+      setTimeout(function () {
+        var style = {
+          'top': relativeY + 'px',
+          'left': relativeX + 'px',
+          'opacity': '0',
+
+          // Duration
+          '-webkit-transition-duration': Effect.duration + 'ms',
+          '-moz-transition-duration': Effect.duration + 'ms',
+          '-o-transition-duration': Effect.duration + 'ms',
+          'transition-duration': Effect.duration + 'ms',
+          '-webkit-transform': scale,
+          '-moz-transform': scale,
+          '-ms-transform': scale,
+          '-o-transform': scale,
+          'transform': scale
+        };
+
+        ripple.setAttribute('style', convertStyle(style));
+
+        setTimeout(function () {
+          try {
+            el.removeChild(ripple);
+          } catch (e) {
+            return false;
+          }
+        }, Effect.duration);
+      }, delay);
+    },
+
+    // Little hack to make <input> can perform waves effect
+    wrapInput: function (elements) {
+      for (var a = 0; a < elements.length; a++) {
+        var el = elements[a];
+
+        if (el.tagName.toLowerCase() === 'input') {
+          var parent = el.parentNode;
+
+          // If input already have parent just pass through
+          if (parent.tagName.toLowerCase() === 'i' && parent.className.indexOf('waves-effect') !== -1) {
+            continue;
+          }
+
+          // Put element class and style to the specified parent
+          var wrapper = document.createElement('i');
+          wrapper.className = el.className + ' waves-input-wrapper';
+
+          var elementStyle = el.getAttribute('style');
+
+          if (!elementStyle) {
+            elementStyle = '';
+          }
+
+          wrapper.setAttribute('style', elementStyle);
+
+          el.className = 'waves-button-input';
+          el.removeAttribute('style');
+
+          // Put element as child
+          parent.replaceChild(wrapper, el);
+          wrapper.appendChild(el);
+        }
+      }
+    }
+  };
+
+  /**
+   * Disable mousedown event for 500ms during and after touch
+   */
+  var TouchHandler = {
+    /* uses an integer rather than bool so there's no issues with
+     * needing to clear timeouts if another touch event occurred
+     * within the 500ms. Cannot mouseup between touchstart and
+     * touchend, nor in the 500ms after touchend. */
+    touches: 0,
+    allowEvent: function (e) {
+      var allow = true;
+
+      if (e.type === 'touchstart') {
+        TouchHandler.touches += 1; //push
+      } else if (e.type === 'touchend' || e.type === 'touchcancel') {
+        setTimeout(function () {
+          if (TouchHandler.touches > 0) {
+            TouchHandler.touches -= 1; //pop after 500ms
+          }
+        }, 500);
+      } else if (e.type === 'mousedown' && TouchHandler.touches > 0) {
+        allow = false;
+      }
+
+      return allow;
+    },
+    touchup: function (e) {
+      TouchHandler.allowEvent(e);
+    }
+  };
+
+  /**
+   * Delegated click handler for .waves-effect element.
+   * returns null when .waves-effect element not in "click tree"
+   */
+  function getWavesEffectElement(e) {
+    if (TouchHandler.allowEvent(e) === false) {
+      return null;
+    }
+
+    var element = null;
+    var target = e.target || e.srcElement;
+
+    while (target.parentNode !== null) {
+      if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) {
+        element = target;
+        break;
+      }
+      target = target.parentNode;
+    }
+    return element;
+  }
+
+  /**
+   * Bubble the click and show effect if .waves-effect elem was found
+   */
+  function showEffect(e) {
+    var element = getWavesEffectElement(e);
+
+    if (element !== null) {
+      Effect.show(e, element);
+
+      if ('ontouchstart' in window) {
+        element.addEventListener('touchend', Effect.hide, false);
+        element.addEventListener('touchcancel', Effect.hide, false);
+      }
+
+      element.addEventListener('mouseup', Effect.hide, false);
+      element.addEventListener('mouseleave', Effect.hide, false);
+      element.addEventListener('dragend', Effect.hide, false);
+    }
+  }
+
+  Waves.displayEffect = function (options) {
+    options = options || {};
+
+    if ('duration' in options) {
+      Effect.duration = options.duration;
+    }
+
+    //Wrap input inside <i> tag
+    Effect.wrapInput($$('.waves-effect'));
+
+    if ('ontouchstart' in window) {
+      document.body.addEventListener('touchstart', showEffect, false);
+    }
+
+    document.body.addEventListener('mousedown', showEffect, false);
+  };
+
+  /**
+   * Attach Waves to an input element (or any element which doesn't
+   * bubble mouseup/mousedown events).
+   *   Intended to be used with dynamically loaded forms/inputs, or
+   * where the user doesn't want a delegated click handler.
+   */
+  Waves.attach = function (element) {
+    //FUTURE: automatically add waves classes and allow users
+    // to specify them with an options param? Eg. light/classic/button
+    if (element.tagName.toLowerCase() === 'input') {
+      Effect.wrapInput([element]);
+      element = element.parentNode;
+    }
+
+    if ('ontouchstart' in window) {
+      element.addEventListener('touchstart', showEffect, false);
+    }
+
+    element.addEventListener('mousedown', showEffect, false);
+  };
+
+  window.Waves = Waves;
+
+  document.addEventListener('DOMContentLoaded', function () {
+    Waves.displayEffect();
+  }, false);
+})(window);
+;(function ($, anim) {
+  'use strict';
+
+  var _defaults = {
+    html: '',
+    displayLength: 4000,
+    inDuration: 300,
+    outDuration: 375,
+    classes: '',
+    completeCallback: null,
+    activationPercent: 0.8
+  };
+
+  var Toast = function () {
+    function Toast(options) {
+      _classCallCheck(this, Toast);
+
+      /**
+       * Options for the toast
+       * @member Toast#options
+       */
+      this.options = $.extend({}, Toast.defaults, options);
+      this.message = this.options.html;
+
+      /**
+       * Describes current pan state toast
+       * @type {Boolean}
+       */
+      this.panning = false;
+
+      /**
+       * Time remaining until toast is removed
+       */
+      this.timeRemaining = this.options.displayLength;
+
+      if (Toast._toasts.length === 0) {
+        Toast._createContainer();
+      }
+
+      // Create new toast
+      Toast._toasts.push(this);
+      var toastElement = this._createToast();
+      toastElement.M_Toast = this;
+      this.el = toastElement;
+      this.$el = $(toastElement);
+      this._animateIn();
+      this._setTimer();
+    }
+
+    _createClass(Toast, [{
+      key: "_createToast",
+
+
+      /**
+       * Create toast and append it to toast container
+       */
+      value: function _createToast() {
+        var toast = document.createElement('div');
+        toast.classList.add('toast');
+
+        // Add custom classes onto toast
+        if (!!this.options.classes.length) {
+          $(toast).addClass(this.options.classes);
+        }
+
+        // Set content
+        if (typeof HTMLElement === 'object' ? this.message instanceof HTMLElement : this.message && typeof this.message === 'object' && this.message !== null && this.message.nodeType === 1 && typeof this.message.nodeName === 'string') {
+          toast.appendChild(this.message);
+
+          // Check if it is jQuery object
+        } else if (!!this.message.jquery) {
+          $(toast).append(this.message[0]);
+
+          // Insert as html;
+        } else {
+          toast.innerHTML = this.message;
+        }
+
+        // Append toasft
+        Toast._container.appendChild(toast);
+        return toast;
+      }
+
+      /**
+       * Animate in toast
+       */
+
+    }, {
+      key: "_animateIn",
+      value: function _animateIn() {
+        // Animate toast in
+        anim({
+          targets: this.el,
+          top: 0,
+          opacity: 1,
+          duration: this.options.inDuration,
+          easing: 'easeOutCubic'
+        });
+      }
+
+      /**
+       * Create setInterval which automatically removes toast when timeRemaining >= 0
+       * has been reached
+       */
+
+    }, {
+      key: "_setTimer",
+      value: function _setTimer() {
+        var _this29 = this;
+
+        if (this.timeRemaining !== Infinity) {
+          this.counterInterval = setInterval(function () {
+            // If toast is not being dragged, decrease its time remaining
+            if (!_this29.panning) {
+              _this29.timeRemaining -= 20;
+            }
+
+            // Animate toast out
+            if (_this29.timeRemaining <= 0) {
+              _this29.dismiss();
+            }
+          }, 20);
+        }
+      }
+
+      /**
+       * Dismiss toast with animation
+       */
+
+    }, {
+      key: "dismiss",
+      value: function dismiss() {
+        var _this30 = this;
+
+        window.clearInterval(this.counterInterval);
+        var activationDistance = this.el.offsetWidth * this.options.activationPercent;
+
+        if (this.wasSwiped) {
+          this.el.style.transition = 'transform .05s, opacity .05s';
+          this.el.style.transform = "translateX(" + activationDistance + "px)";
+          this.el.style.opacity = 0;
+        }
+
+        anim({
+          targets: this.el,
+          opacity: 0,
+          marginTop: -40,
+          duration: this.options.outDuration,
+          easing: 'easeOutExpo',
+          complete: function () {
+            // Call the optional callback
+            if (typeof _this30.options.completeCallback === 'function') {
+              _this30.options.completeCallback();
+            }
+            // Remove toast from DOM
+            _this30.$el.remove();
+            Toast._toasts.splice(Toast._toasts.indexOf(_this30), 1);
+            if (Toast._toasts.length === 0) {
+              Toast._removeContainer();
+            }
+          }
+        });
+      }
+    }], [{
+      key: "getInstance",
+
+
+      /**
+       * Get Instance
+       */
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Toast;
+      }
+
+      /**
+       * Append toast container and add event handlers
+       */
+
+    }, {
+      key: "_createContainer",
+      value: function _createContainer() {
+        var container = document.createElement('div');
+        container.setAttribute('id', 'toast-container');
+
+        // Add event handler
+        container.addEventListener('touchstart', Toast._onDragStart);
+        container.addEventListener('touchmove', Toast._onDragMove);
+        container.addEventListener('touchend', Toast._onDragEnd);
+
+        container.addEventListener('mousedown', Toast._onDragStart);
+        document.addEventListener('mousemove', Toast._onDragMove);
+        document.addEventListener('mouseup', Toast._onDragEnd);
+
+        document.body.appendChild(container);
+        Toast._container = container;
+      }
+
+      /**
+       * Remove toast container and event handlers
+       */
+
+    }, {
+      key: "_removeContainer",
+      value: function _removeContainer() {
+        // Add event handler
+        document.removeEventListener('mousemove', Toast._onDragMove);
+        document.removeEventListener('mouseup', Toast._onDragEnd);
+
+        $(Toast._container).remove();
+        Toast._container = null;
+      }
+
+      /**
+       * Begin drag handler
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_onDragStart",
+      value: function _onDragStart(e) {
+        if (e.target && $(e.target).closest('.toast').length) {
+          var $toast = $(e.target).closest('.toast');
+          var toast = $toast[0].M_Toast;
+          toast.panning = true;
+          Toast._draggedToast = toast;
+          toast.el.classList.add('panning');
+          toast.el.style.transition = '';
+          toast.startingXPos = Toast._xPos(e);
+          toast.time = Date.now();
+          toast.xPos = Toast._xPos(e);
+        }
+      }
+
+      /**
+       * Drag move handler
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_onDragMove",
+      value: function _onDragMove(e) {
+        if (!!Toast._draggedToast) {
+          e.preventDefault();
+          var toast = Toast._draggedToast;
+          toast.deltaX = Math.abs(toast.xPos - Toast._xPos(e));
+          toast.xPos = Toast._xPos(e);
+          toast.velocityX = toast.deltaX / (Date.now() - toast.time);
+          toast.time = Date.now();
+
+          var totalDeltaX = toast.xPos - toast.startingXPos;
+          var activationDistance = toast.el.offsetWidth * toast.options.activationPercent;
+          toast.el.style.transform = "translateX(" + totalDeltaX + "px)";
+          toast.el.style.opacity = 1 - Math.abs(totalDeltaX / activationDistance);
+        }
+      }
+
+      /**
+       * End drag handler
+       */
+
+    }, {
+      key: "_onDragEnd",
+      value: function _onDragEnd() {
+        if (!!Toast._draggedToast) {
+          var toast = Toast._draggedToast;
+          toast.panning = false;
+          toast.el.classList.remove('panning');
+
+          var totalDeltaX = toast.xPos - toast.startingXPos;
+          var activationDistance = toast.el.offsetWidth * toast.options.activationPercent;
+          var shouldBeDismissed = Math.abs(totalDeltaX) > activationDistance || toast.velocityX > 1;
+
+          // Remove toast
+          if (shouldBeDismissed) {
+            toast.wasSwiped = true;
+            toast.dismiss();
+
+            // Animate toast back to original position
+          } else {
+            toast.el.style.transition = 'transform .2s, opacity .2s';
+            toast.el.style.transform = '';
+            toast.el.style.opacity = '';
+          }
+          Toast._draggedToast = null;
+        }
+      }
+
+      /**
+       * Get x position of mouse or touch event
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_xPos",
+      value: function _xPos(e) {
+        if (e.targetTouches && e.targetTouches.length >= 1) {
+          return e.targetTouches[0].clientX;
+        }
+        // mouse event
+        return e.clientX;
+      }
+
+      /**
+       * Remove all toasts
+       */
+
+    }, {
+      key: "dismissAll",
+      value: function dismissAll() {
+        for (var toastIndex in Toast._toasts) {
+          Toast._toasts[toastIndex].dismiss();
+        }
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Toast;
+  }();
+
+  /**
+   * @static
+   * @memberof Toast
+   * @type {Array.<Toast>}
+   */
+
+
+  Toast._toasts = [];
+
+  /**
+   * @static
+   * @memberof Toast
+   */
+  Toast._container = null;
+
+  /**
+   * @static
+   * @memberof Toast
+   * @type {Toast}
+   */
+  Toast._draggedToast = null;
+
+  M.Toast = Toast;
+  M.toast = function (options) {
+    return new Toast(options);
+  };
+})(cash, M.anime);
+;(function ($, anim) {
+  'use strict';
+
+  var _defaults = {
+    edge: 'left',
+    draggable: true,
+    inDuration: 250,
+    outDuration: 200,
+    onOpenStart: null,
+    onOpenEnd: null,
+    onCloseStart: null,
+    onCloseEnd: null,
+    preventScrolling: true
+  };
+
+  /**
+   * @class
+   */
+
+  var Sidenav = function (_Component8) {
+    _inherits(Sidenav, _Component8);
+
+    /**
+     * Construct Sidenav instance and set up overlay
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Sidenav(el, options) {
+      _classCallCheck(this, Sidenav);
+
+      var _this31 = _possibleConstructorReturn(this, (Sidenav.__proto__ || Object.getPrototypeOf(Sidenav)).call(this, Sidenav, el, options));
+
+      _this31.el.M_Sidenav = _this31;
+      _this31.id = _this31.$el.attr('id');
+
+      /**
+       * Options for the Sidenav
+       * @member Sidenav#options
+       * @prop {String} [edge='left'] - Side of screen on which Sidenav appears
+       * @prop {Boolean} [draggable=true] - Allow swipe gestures to open/close Sidenav
+       * @prop {Number} [inDuration=250] - Length in ms of enter transition
+       * @prop {Number} [outDuration=200] - Length in ms of exit transition
+       * @prop {Function} onOpenStart - Function called when sidenav starts entering
+       * @prop {Function} onOpenEnd - Function called when sidenav finishes entering
+       * @prop {Function} onCloseStart - Function called when sidenav starts exiting
+       * @prop {Function} onCloseEnd - Function called when sidenav finishes exiting
+       */
+      _this31.options = $.extend({}, Sidenav.defaults, options);
+
+      /**
+       * Describes open/close state of Sidenav
+       * @type {Boolean}
+       */
+      _this31.isOpen = false;
+
+      /**
+       * Describes if Sidenav is fixed
+       * @type {Boolean}
+       */
+      _this31.isFixed = _this31.el.classList.contains('sidenav-fixed');
+
+      /**
+       * Describes if Sidenav is being draggeed
+       * @type {Boolean}
+       */
+      _this31.isDragged = false;
+
+      // Window size variables for window resize checks
+      _this31.lastWindowWidth = window.innerWidth;
+      _this31.lastWindowHeight = window.innerHeight;
+
+      _this31._createOverlay();
+      _this31._createDragTarget();
+      _this31._setupEventHandlers();
+      _this31._setupClasses();
+      _this31._setupFixed();
+
+      Sidenav._sidenavs.push(_this31);
+      return _this31;
+    }
+
+    _createClass(Sidenav, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this._enableBodyScrolling();
+        this._overlay.parentNode.removeChild(this._overlay);
+        this.dragTarget.parentNode.removeChild(this.dragTarget);
+        this.el.M_Sidenav = undefined;
+        this.el.style.transform = '';
+
+        var index = Sidenav._sidenavs.indexOf(this);
+        if (index >= 0) {
+          Sidenav._sidenavs.splice(index, 1);
+        }
+      }
+    }, {
+      key: "_createOverlay",
+      value: function _createOverlay() {
+        var overlay = document.createElement('div');
+        this._closeBound = this.close.bind(this);
+        overlay.classList.add('sidenav-overlay');
+
+        overlay.addEventListener('click', this._closeBound);
+
+        document.body.appendChild(overlay);
+        this._overlay = overlay;
+      }
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        if (Sidenav._sidenavs.length === 0) {
+          document.body.addEventListener('click', this._handleTriggerClick);
+        }
+
+        this._handleDragTargetDragBound = this._handleDragTargetDrag.bind(this);
+        this._handleDragTargetReleaseBound = this._handleDragTargetRelease.bind(this);
+        this._handleCloseDragBound = this._handleCloseDrag.bind(this);
+        this._handleCloseReleaseBound = this._handleCloseRelease.bind(this);
+        this._handleCloseTriggerClickBound = this._handleCloseTriggerClick.bind(this);
+
+        this.dragTarget.addEventListener('touchmove', this._handleDragTargetDragBound);
+        this.dragTarget.addEventListener('touchend', this._handleDragTargetReleaseBound);
+        this._overlay.addEventListener('touchmove', this._handleCloseDragBound);
+        this._overlay.addEventListener('touchend', this._handleCloseReleaseBound);
+        this.el.addEventListener('touchmove', this._handleCloseDragBound);
+        this.el.addEventListener('touchend', this._handleCloseReleaseBound);
+        this.el.addEventListener('click', this._handleCloseTriggerClickBound);
+
+        // Add resize for side nav fixed
+        if (this.isFixed) {
+          this._handleWindowResizeBound = this._handleWindowResize.bind(this);
+          window.addEventListener('resize', this._handleWindowResizeBound);
+        }
+      }
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        if (Sidenav._sidenavs.length === 1) {
+          document.body.removeEventListener('click', this._handleTriggerClick);
+        }
+
+        this.dragTarget.removeEventListener('touchmove', this._handleDragTargetDragBound);
+        this.dragTarget.removeEventListener('touchend', this._handleDragTargetReleaseBound);
+        this._overlay.removeEventListener('touchmove', this._handleCloseDragBound);
+        this._overlay.removeEventListener('touchend', this._handleCloseReleaseBound);
+        this.el.removeEventListener('touchmove', this._handleCloseDragBound);
+        this.el.removeEventListener('touchend', this._handleCloseReleaseBound);
+        this.el.removeEventListener('click', this._handleCloseTriggerClickBound);
+
+        // Remove resize for side nav fixed
+        if (this.isFixed) {
+          window.removeEventListener('resize', this._handleWindowResizeBound);
+        }
+      }
+
+      /**
+       * Handle Trigger Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleTriggerClick",
+      value: function _handleTriggerClick(e) {
+        var $trigger = $(e.target).closest('.sidenav-trigger');
+        if (e.target && $trigger.length) {
+          var sidenavId = M.getIdFromTrigger($trigger[0]);
+
+          var sidenavInstance = document.getElementById(sidenavId).M_Sidenav;
+          if (sidenavInstance) {
+            sidenavInstance.open($trigger);
+          }
+          e.preventDefault();
+        }
+      }
+
+      /**
+       * Set variables needed at the beggining of drag
+       * and stop any current transition.
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_startDrag",
+      value: function _startDrag(e) {
+        var clientX = e.targetTouches[0].clientX;
+        this.isDragged = true;
+        this._startingXpos = clientX;
+        this._xPos = this._startingXpos;
+        this._time = Date.now();
+        this._width = this.el.getBoundingClientRect().width;
+        this._overlay.style.display = 'block';
+        this._initialScrollTop = this.isOpen ? this.el.scrollTop : M.getDocumentScrollTop();
+        this._verticallyScrolling = false;
+        anim.remove(this.el);
+        anim.remove(this._overlay);
+      }
+
+      /**
+       * Set variables needed at each drag move update tick
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_dragMoveUpdate",
+      value: function _dragMoveUpdate(e) {
+        var clientX = e.targetTouches[0].clientX;
+        var currentScrollTop = this.isOpen ? this.el.scrollTop : M.getDocumentScrollTop();
+        this.deltaX = Math.abs(this._xPos - clientX);
+        this._xPos = clientX;
+        this.velocityX = this.deltaX / (Date.now() - this._time);
+        this._time = Date.now();
+        if (this._initialScrollTop !== currentScrollTop) {
+          this._verticallyScrolling = true;
+        }
+      }
+
+      /**
+       * Handles Dragging of Sidenav
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleDragTargetDrag",
+      value: function _handleDragTargetDrag(e) {
+        // Check if draggable
+        if (!this.options.draggable || this._isCurrentlyFixed() || this._verticallyScrolling) {
+          return;
+        }
+
+        // If not being dragged, set initial drag start variables
+        if (!this.isDragged) {
+          this._startDrag(e);
+        }
+
+        // Run touchmove updates
+        this._dragMoveUpdate(e);
+
+        // Calculate raw deltaX
+        var totalDeltaX = this._xPos - this._startingXpos;
+
+        // dragDirection is the attempted user drag direction
+        var dragDirection = totalDeltaX > 0 ? 'right' : 'left';
+
+        // Don't allow totalDeltaX to exceed Sidenav width or be dragged in the opposite direction
+        totalDeltaX = Math.min(this._width, Math.abs(totalDeltaX));
+        if (this.options.edge === dragDirection) {
+          totalDeltaX = 0;
+        }
+
+        /**
+         * transformX is the drag displacement
+         * transformPrefix is the initial transform placement
+         * Invert values if Sidenav is right edge
+         */
+        var transformX = totalDeltaX;
+        var transformPrefix = 'translateX(-100%)';
+        if (this.options.edge === 'right') {
+          transformPrefix = 'translateX(100%)';
+          transformX = -transformX;
+        }
+
+        // Calculate open/close percentage of sidenav, with open = 1 and close = 0
+        this.percentOpen = Math.min(1, totalDeltaX / this._width);
+
+        // Set transform and opacity styles
+        this.el.style.transform = transformPrefix + " translateX(" + transformX + "px)";
+        this._overlay.style.opacity = this.percentOpen;
+      }
+
+      /**
+       * Handle Drag Target Release
+       */
+
+    }, {
+      key: "_handleDragTargetRelease",
+      value: function _handleDragTargetRelease() {
+        if (this.isDragged) {
+          if (this.percentOpen > 0.2) {
+            this.open();
+          } else {
+            this._animateOut();
+          }
+
+          this.isDragged = false;
+          this._verticallyScrolling = false;
+        }
+      }
+
+      /**
+       * Handle Close Drag
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleCloseDrag",
+      value: function _handleCloseDrag(e) {
+        if (this.isOpen) {
+          // Check if draggable
+          if (!this.options.draggable || this._isCurrentlyFixed() || this._verticallyScrolling) {
+            return;
+          }
+
+          // If not being dragged, set initial drag start variables
+          if (!this.isDragged) {
+            this._startDrag(e);
+          }
+
+          // Run touchmove updates
+          this._dragMoveUpdate(e);
+
+          // Calculate raw deltaX
+          var totalDeltaX = this._xPos - this._startingXpos;
+
+          // dragDirection is the attempted user drag direction
+          var dragDirection = totalDeltaX > 0 ? 'right' : 'left';
+
+          // Don't allow totalDeltaX to exceed Sidenav width or be dragged in the opposite direction
+          totalDeltaX = Math.min(this._width, Math.abs(totalDeltaX));
+          if (this.options.edge !== dragDirection) {
+            totalDeltaX = 0;
+          }
+
+          var transformX = -totalDeltaX;
+          if (this.options.edge === 'right') {
+            transformX = -transformX;
+          }
+
+          // Calculate open/close percentage of sidenav, with open = 1 and close = 0
+          this.percentOpen = Math.min(1, 1 - totalDeltaX / this._width);
+
+          // Set transform and opacity styles
+          this.el.style.transform = "translateX(" + transformX + "px)";
+          this._overlay.style.opacity = this.percentOpen;
+        }
+      }
+
+      /**
+       * Handle Close Release
+       */
+
+    }, {
+      key: "_handleCloseRelease",
+      value: function _handleCloseRelease() {
+        if (this.isOpen && this.isDragged) {
+          if (this.percentOpen > 0.8) {
+            this._animateIn();
+          } else {
+            this.close();
+          }
+
+          this.isDragged = false;
+          this._verticallyScrolling = false;
+        }
+      }
+
+      /**
+       * Handles closing of Sidenav when element with class .sidenav-close
+       */
+
+    }, {
+      key: "_handleCloseTriggerClick",
+      value: function _handleCloseTriggerClick(e) {
+        var $closeTrigger = $(e.target).closest('.sidenav-close');
+        if ($closeTrigger.length && !this._isCurrentlyFixed()) {
+          this.close();
+        }
+      }
+
+      /**
+       * Handle Window Resize
+       */
+
+    }, {
+      key: "_handleWindowResize",
+      value: function _handleWindowResize() {
+        // Only handle horizontal resizes
+        if (this.lastWindowWidth !== window.innerWidth) {
+          if (window.innerWidth > 992) {
+            this.open();
+          } else {
+            this.close();
+          }
+        }
+
+        this.lastWindowWidth = window.innerWidth;
+        this.lastWindowHeight = window.innerHeight;
+      }
+    }, {
+      key: "_setupClasses",
+      value: function _setupClasses() {
+        if (this.options.edge === 'right') {
+          this.el.classList.add('right-aligned');
+          this.dragTarget.classList.add('right-aligned');
+        }
+      }
+    }, {
+      key: "_removeClasses",
+      value: function _removeClasses() {
+        this.el.classList.remove('right-aligned');
+        this.dragTarget.classList.remove('right-aligned');
+      }
+    }, {
+      key: "_setupFixed",
+      value: function _setupFixed() {
+        if (this._isCurrentlyFixed()) {
+          this.open();
+        }
+      }
+    }, {
+      key: "_isCurrentlyFixed",
+      value: function _isCurrentlyFixed() {
+        return this.isFixed && window.innerWidth > 992;
+      }
+    }, {
+      key: "_createDragTarget",
+      value: function _createDragTarget() {
+        var dragTarget = document.createElement('div');
+        dragTarget.classList.add('drag-target');
+        document.body.appendChild(dragTarget);
+        this.dragTarget = dragTarget;
+      }
+    }, {
+      key: "_preventBodyScrolling",
+      value: function _preventBodyScrolling() {
+        var body = document.body;
+        body.style.overflow = 'hidden';
+      }
+    }, {
+      key: "_enableBodyScrolling",
+      value: function _enableBodyScrolling() {
+        var body = document.body;
+        body.style.overflow = '';
+      }
+    }, {
+      key: "open",
+      value: function open() {
+        if (this.isOpen === true) {
+          return;
+        }
+
+        this.isOpen = true;
+
+        // Run onOpenStart callback
+        if (typeof this.options.onOpenStart === 'function') {
+          this.options.onOpenStart.call(this, this.el);
+        }
+
+        // Handle fixed Sidenav
+        if (this._isCurrentlyFixed()) {
+          anim.remove(this.el);
+          anim({
+            targets: this.el,
+            translateX: 0,
+            duration: 0,
+            easing: 'easeOutQuad'
+          });
+          this._enableBodyScrolling();
+          this._overlay.style.display = 'none';
+
+          // Handle non-fixed Sidenav
+        } else {
+          if (this.options.preventScrolling) {
+            this._preventBodyScrolling();
+          }
+
+          if (!this.isDragged || this.percentOpen != 1) {
+            this._animateIn();
+          }
+        }
+      }
+    }, {
+      key: "close",
+      value: function close() {
+        if (this.isOpen === false) {
+          return;
+        }
+
+        this.isOpen = false;
+
+        // Run onCloseStart callback
+        if (typeof this.options.onCloseStart === 'function') {
+          this.options.onCloseStart.call(this, this.el);
+        }
+
+        // Handle fixed Sidenav
+        if (this._isCurrentlyFixed()) {
+          var transformX = this.options.edge === 'left' ? '-105%' : '105%';
+          this.el.style.transform = "translateX(" + transformX + ")";
+
+          // Handle non-fixed Sidenav
+        } else {
+          this._enableBodyScrolling();
+
+          if (!this.isDragged || this.percentOpen != 0) {
+            this._animateOut();
+          } else {
+            this._overlay.style.display = 'none';
+          }
+        }
+      }
+    }, {
+      key: "_animateIn",
+      value: function _animateIn() {
+        this._animateSidenavIn();
+        this._animateOverlayIn();
+      }
+    }, {
+      key: "_animateSidenavIn",
+      value: function _animateSidenavIn() {
+        var _this32 = this;
+
+        var slideOutPercent = this.options.edge === 'left' ? -1 : 1;
+        if (this.isDragged) {
+          slideOutPercent = this.options.edge === 'left' ? slideOutPercent + this.percentOpen : slideOutPercent - this.percentOpen;
+        }
+
+        anim.remove(this.el);
+        anim({
+          targets: this.el,
+          translateX: [slideOutPercent * 100 + "%", 0],
+          duration: this.options.inDuration,
+          easing: 'easeOutQuad',
+          complete: function () {
+            // Run onOpenEnd callback
+            if (typeof _this32.options.onOpenEnd === 'function') {
+              _this32.options.onOpenEnd.call(_this32, _this32.el);
+            }
+          }
+        });
+      }
+    }, {
+      key: "_animateOverlayIn",
+      value: function _animateOverlayIn() {
+        var start = 0;
+        if (this.isDragged) {
+          start = this.percentOpen;
+        } else {
+          $(this._overlay).css({
+            display: 'block'
+          });
+        }
+
+        anim.remove(this._overlay);
+        anim({
+          targets: this._overlay,
+          opacity: [start, 1],
+          duration: this.options.inDuration,
+          easing: 'easeOutQuad'
+        });
+      }
+    }, {
+      key: "_animateOut",
+      value: function _animateOut() {
+        this._animateSidenavOut();
+        this._animateOverlayOut();
+      }
+    }, {
+      key: "_animateSidenavOut",
+      value: function _animateSidenavOut() {
+        var _this33 = this;
+
+        var endPercent = this.options.edge === 'left' ? -1 : 1;
+        var slideOutPercent = 0;
+        if (this.isDragged) {
+          slideOutPercent = this.options.edge === 'left' ? endPercent + this.percentOpen : endPercent - this.percentOpen;
+        }
+
+        anim.remove(this.el);
+        anim({
+          targets: this.el,
+          translateX: [slideOutPercent * 100 + "%", endPercent * 105 + "%"],
+          duration: this.options.outDuration,
+          easing: 'easeOutQuad',
+          complete: function () {
+            // Run onOpenEnd callback
+            if (typeof _this33.options.onCloseEnd === 'function') {
+              _this33.options.onCloseEnd.call(_this33, _this33.el);
+            }
+          }
+        });
+      }
+    }, {
+      key: "_animateOverlayOut",
+      value: function _animateOverlayOut() {
+        var _this34 = this;
+
+        anim.remove(this._overlay);
+        anim({
+          targets: this._overlay,
+          opacity: 0,
+          duration: this.options.outDuration,
+          easing: 'easeOutQuad',
+          complete: function () {
+            $(_this34._overlay).css('display', 'none');
+          }
+        });
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Sidenav.__proto__ || Object.getPrototypeOf(Sidenav), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Sidenav;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Sidenav;
+  }(Component);
+
+  /**
+   * @static
+   * @memberof Sidenav
+   * @type {Array.<Sidenav>}
+   */
+
+
+  Sidenav._sidenavs = [];
+
+  M.Sidenav = Sidenav;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Sidenav, 'sidenav', 'M_Sidenav');
+  }
+})(cash, M.anime);
+;(function ($, anim) {
+  'use strict';
+
+  var _defaults = {
+    throttle: 100,
+    scrollOffset: 200, // offset - 200 allows elements near bottom of page to scroll
+    activeClass: 'active',
+    getActiveElement: function (id) {
+      return 'a[href="#' + id + '"]';
+    }
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var ScrollSpy = function (_Component9) {
+    _inherits(ScrollSpy, _Component9);
+
+    /**
+     * Construct ScrollSpy instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function ScrollSpy(el, options) {
+      _classCallCheck(this, ScrollSpy);
+
+      var _this35 = _possibleConstructorReturn(this, (ScrollSpy.__proto__ || Object.getPrototypeOf(ScrollSpy)).call(this, ScrollSpy, el, options));
+
+      _this35.el.M_ScrollSpy = _this35;
+
+      /**
+       * Options for the modal
+       * @member Modal#options
+       * @prop {Number} [throttle=100] - Throttle of scroll handler
+       * @prop {Number} [scrollOffset=200] - Offset for centering element when scrolled to
+       * @prop {String} [activeClass='active'] - Class applied to active elements
+       * @prop {Function} [getActiveElement] - Used to find active element
+       */
+      _this35.options = $.extend({}, ScrollSpy.defaults, options);
+
+      // setup
+      ScrollSpy._elements.push(_this35);
+      ScrollSpy._count++;
+      ScrollSpy._increment++;
+      _this35.tickId = -1;
+      _this35.id = ScrollSpy._increment;
+      _this35._setupEventHandlers();
+      _this35._handleWindowScroll();
+      return _this35;
+    }
+
+    _createClass(ScrollSpy, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        ScrollSpy._elements.splice(ScrollSpy._elements.indexOf(this), 1);
+        ScrollSpy._elementsInView.splice(ScrollSpy._elementsInView.indexOf(this), 1);
+        ScrollSpy._visibleElements.splice(ScrollSpy._visibleElements.indexOf(this.$el), 1);
+        ScrollSpy._count--;
+        this._removeEventHandlers();
+        $(this.options.getActiveElement(this.$el.attr('id'))).removeClass(this.options.activeClass);
+        this.el.M_ScrollSpy = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        var throttledResize = M.throttle(this._handleWindowScroll, 200);
+        this._handleThrottledResizeBound = throttledResize.bind(this);
+        this._handleWindowScrollBound = this._handleWindowScroll.bind(this);
+        if (ScrollSpy._count === 1) {
+          window.addEventListener('scroll', this._handleWindowScrollBound);
+          window.addEventListener('resize', this._handleThrottledResizeBound);
+          document.body.addEventListener('click', this._handleTriggerClick);
+        }
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        if (ScrollSpy._count === 0) {
+          window.removeEventListener('scroll', this._handleWindowScrollBound);
+          window.removeEventListener('resize', this._handleThrottledResizeBound);
+          document.body.removeEventListener('click', this._handleTriggerClick);
+        }
+      }
+
+      /**
+       * Handle Trigger Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleTriggerClick",
+      value: function _handleTriggerClick(e) {
+        var $trigger = $(e.target);
+        for (var i = ScrollSpy._elements.length - 1; i >= 0; i--) {
+          var scrollspy = ScrollSpy._elements[i];
+          if ($trigger.is('a[href="#' + scrollspy.$el.attr('id') + '"]')) {
+            e.preventDefault();
+            var offset = scrollspy.$el.offset().top + 1;
+
+            anim({
+              targets: [document.documentElement, document.body],
+              scrollTop: offset - scrollspy.options.scrollOffset,
+              duration: 400,
+              easing: 'easeOutCubic'
+            });
+            break;
+          }
+        }
+      }
+
+      /**
+       * Handle Window Scroll
+       */
+
+    }, {
+      key: "_handleWindowScroll",
+      value: function _handleWindowScroll() {
+        // unique tick id
+        ScrollSpy._ticks++;
+
+        // viewport rectangle
+        var top = M.getDocumentScrollTop(),
+            left = M.getDocumentScrollLeft(),
+            right = left + window.innerWidth,
+            bottom = top + window.innerHeight;
+
+        // determine which elements are in view
+        var intersections = ScrollSpy._findElements(top, right, bottom, left);
+        for (var i = 0; i < intersections.length; i++) {
+          var scrollspy = intersections[i];
+          var lastTick = scrollspy.tickId;
+          if (lastTick < 0) {
+            // entered into view
+            scrollspy._enter();
+          }
+
+          // update tick id
+          scrollspy.tickId = ScrollSpy._ticks;
+        }
+
+        for (var _i = 0; _i < ScrollSpy._elementsInView.length; _i++) {
+          var _scrollspy = ScrollSpy._elementsInView[_i];
+          var _lastTick = _scrollspy.tickId;
+          if (_lastTick >= 0 && _lastTick !== ScrollSpy._ticks) {
+            // exited from view
+            _scrollspy._exit();
+            _scrollspy.tickId = -1;
+          }
+        }
+
+        // remember elements in view for next tick
+        ScrollSpy._elementsInView = intersections;
+      }
+
+      /**
+       * Find elements that are within the boundary
+       * @param {number} top
+       * @param {number} right
+       * @param {number} bottom
+       * @param {number} left
+       * @return {Array.<ScrollSpy>}   A collection of elements
+       */
+
+    }, {
+      key: "_enter",
+      value: function _enter() {
+        ScrollSpy._visibleElements = ScrollSpy._visibleElements.filter(function (value) {
+          return value.height() != 0;
+        });
+
+        if (ScrollSpy._visibleElements[0]) {
+          $(this.options.getActiveElement(ScrollSpy._visibleElements[0].attr('id'))).removeClass(this.options.activeClass);
+          if (ScrollSpy._visibleElements[0][0].M_ScrollSpy && this.id < ScrollSpy._visibleElements[0][0].M_ScrollSpy.id) {
+            ScrollSpy._visibleElements.unshift(this.$el);
+          } else {
+            ScrollSpy._visibleElements.push(this.$el);
+          }
+        } else {
+          ScrollSpy._visibleElements.push(this.$el);
+        }
+
+        $(this.options.getActiveElement(ScrollSpy._visibleElements[0].attr('id'))).addClass(this.options.activeClass);
+      }
+    }, {
+      key: "_exit",
+      value: function _exit() {
+        var _this36 = this;
+
+        ScrollSpy._visibleElements = ScrollSpy._visibleElements.filter(function (value) {
+          return value.height() != 0;
+        });
+
+        if (ScrollSpy._visibleElements[0]) {
+          $(this.options.getActiveElement(ScrollSpy._visibleElements[0].attr('id'))).removeClass(this.options.activeClass);
+
+          ScrollSpy._visibleElements = ScrollSpy._visibleElements.filter(function (el) {
+            return el.attr('id') != _this36.$el.attr('id');
+          });
+          if (ScrollSpy._visibleElements[0]) {
+            // Check if empty
+            $(this.options.getActiveElement(ScrollSpy._visibleElements[0].attr('id'))).addClass(this.options.activeClass);
+          }
+        }
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(ScrollSpy.__proto__ || Object.getPrototypeOf(ScrollSpy), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_ScrollSpy;
+      }
+    }, {
+      key: "_findElements",
+      value: function _findElements(top, right, bottom, left) {
+        var hits = [];
+        for (var i = 0; i < ScrollSpy._elements.length; i++) {
+          var scrollspy = ScrollSpy._elements[i];
+          var currTop = top + scrollspy.options.scrollOffset || 200;
+
+          if (scrollspy.$el.height() > 0) {
+            var elTop = scrollspy.$el.offset().top,
+                elLeft = scrollspy.$el.offset().left,
+                elRight = elLeft + scrollspy.$el.width(),
+                elBottom = elTop + scrollspy.$el.height();
+
+            var isIntersect = !(elLeft > right || elRight < left || elTop > bottom || elBottom < currTop);
+
+            if (isIntersect) {
+              hits.push(scrollspy);
+            }
+          }
+        }
+        return hits;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return ScrollSpy;
+  }(Component);
+
+  /**
+   * @static
+   * @memberof ScrollSpy
+   * @type {Array.<ScrollSpy>}
+   */
+
+
+  ScrollSpy._elements = [];
+
+  /**
+   * @static
+   * @memberof ScrollSpy
+   * @type {Array.<ScrollSpy>}
+   */
+  ScrollSpy._elementsInView = [];
+
+  /**
+   * @static
+   * @memberof ScrollSpy
+   * @type {Array.<cash>}
+   */
+  ScrollSpy._visibleElements = [];
+
+  /**
+   * @static
+   * @memberof ScrollSpy
+   */
+  ScrollSpy._count = 0;
+
+  /**
+   * @static
+   * @memberof ScrollSpy
+   */
+  ScrollSpy._increment = 0;
+
+  /**
+   * @static
+   * @memberof ScrollSpy
+   */
+  ScrollSpy._ticks = 0;
+
+  M.ScrollSpy = ScrollSpy;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(ScrollSpy, 'scrollSpy', 'M_ScrollSpy');
+  }
+})(cash, M.anime);
+;(function ($) {
+  'use strict';
+
+  var _defaults = {
+    data: {}, // Autocomplete data set
+    limit: Infinity, // Limit of results the autocomplete shows
+    onAutocomplete: null, // Callback for when autocompleted
+    minLength: 1, // Min characters before autocomplete starts
+    sortFunction: function (a, b, inputString) {
+      // Sort function for sorting autocomplete results
+      return a.indexOf(inputString) - b.indexOf(inputString);
+    }
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var Autocomplete = function (_Component10) {
+    _inherits(Autocomplete, _Component10);
+
+    /**
+     * Construct Autocomplete instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Autocomplete(el, options) {
+      _classCallCheck(this, Autocomplete);
+
+      var _this37 = _possibleConstructorReturn(this, (Autocomplete.__proto__ || Object.getPrototypeOf(Autocomplete)).call(this, Autocomplete, el, options));
+
+      _this37.el.M_Autocomplete = _this37;
+
+      /**
+       * Options for the autocomplete
+       * @member Autocomplete#options
+       * @prop {Number} duration
+       * @prop {Number} dist
+       * @prop {number} shift
+       * @prop {number} padding
+       * @prop {Boolean} fullWidth
+       * @prop {Boolean} indicators
+       * @prop {Boolean} noWrap
+       * @prop {Function} onCycleTo
+       */
+      _this37.options = $.extend({}, Autocomplete.defaults, options);
+
+      // Setup
+      _this37.isOpen = false;
+      _this37.count = 0;
+      _this37.activeIndex = -1;
+      _this37.oldVal;
+      _this37.$inputField = _this37.$el.closest('.input-field');
+      _this37.$active = $();
+      _this37._mousedown = false;
+      _this37._setupDropdown();
+
+      _this37._setupEventHandlers();
+      return _this37;
+    }
+
+    _createClass(Autocomplete, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this._removeDropdown();
+        this.el.M_Autocomplete = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleInputBlurBound = this._handleInputBlur.bind(this);
+        this._handleInputKeyupAndFocusBound = this._handleInputKeyupAndFocus.bind(this);
+        this._handleInputKeydownBound = this._handleInputKeydown.bind(this);
+        this._handleInputClickBound = this._handleInputClick.bind(this);
+        this._handleContainerMousedownAndTouchstartBound = this._handleContainerMousedownAndTouchstart.bind(this);
+        this._handleContainerMouseupAndTouchendBound = this._handleContainerMouseupAndTouchend.bind(this);
+
+        this.el.addEventListener('blur', this._handleInputBlurBound);
+        this.el.addEventListener('keyup', this._handleInputKeyupAndFocusBound);
+        this.el.addEventListener('focus', this._handleInputKeyupAndFocusBound);
+        this.el.addEventListener('keydown', this._handleInputKeydownBound);
+        this.el.addEventListener('click', this._handleInputClickBound);
+        this.container.addEventListener('mousedown', this._handleContainerMousedownAndTouchstartBound);
+        this.container.addEventListener('mouseup', this._handleContainerMouseupAndTouchendBound);
+
+        if (typeof window.ontouchstart !== 'undefined') {
+          this.container.addEventListener('touchstart', this._handleContainerMousedownAndTouchstartBound);
+          this.container.addEventListener('touchend', this._handleContainerMouseupAndTouchendBound);
+        }
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        this.el.removeEventListener('blur', this._handleInputBlurBound);
+        this.el.removeEventListener('keyup', this._handleInputKeyupAndFocusBound);
+        this.el.removeEventListener('focus', this._handleInputKeyupAndFocusBound);
+        this.el.removeEventListener('keydown', this._handleInputKeydownBound);
+        this.el.removeEventListener('click', this._handleInputClickBound);
+        this.container.removeEventListener('mousedown', this._handleContainerMousedownAndTouchstartBound);
+        this.container.removeEventListener('mouseup', this._handleContainerMouseupAndTouchendBound);
+
+        if (typeof window.ontouchstart !== 'undefined') {
+          this.container.removeEventListener('touchstart', this._handleContainerMousedownAndTouchstartBound);
+          this.container.removeEventListener('touchend', this._handleContainerMouseupAndTouchendBound);
+        }
+      }
+
+      /**
+       * Setup dropdown
+       */
+
+    }, {
+      key: "_setupDropdown",
+      value: function _setupDropdown() {
+        var _this38 = this;
+
+        this.container = document.createElement('ul');
+        this.container.id = "autocomplete-options-" + M.guid();
+        $(this.container).addClass('autocomplete-content dropdown-content');
+        this.$inputField.append(this.container);
+        this.el.setAttribute('data-target', this.container.id);
+
+        this.dropdown = M.Dropdown.init(this.el, {
+          autoFocus: false,
+          closeOnClick: false,
+          coverTrigger: false,
+          onItemClick: function (itemEl) {
+            _this38.selectOption($(itemEl));
+          }
+        });
+
+        // Sketchy removal of dropdown click handler
+        this.el.removeEventListener('click', this.dropdown._handleClickBound);
+      }
+
+      /**
+       * Remove dropdown
+       */
+
+    }, {
+      key: "_removeDropdown",
+      value: function _removeDropdown() {
+        this.container.parentNode.removeChild(this.container);
+      }
+
+      /**
+       * Handle Input Blur
+       */
+
+    }, {
+      key: "_handleInputBlur",
+      value: function _handleInputBlur() {
+        if (!this._mousedown) {
+          this.close();
+          this._resetAutocomplete();
+        }
+      }
+
+      /**
+       * Handle Input Keyup and Focus
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleInputKeyupAndFocus",
+      value: function _handleInputKeyupAndFocus(e) {
+        if (e.type === 'keyup') {
+          Autocomplete._keydown = false;
+        }
+
+        this.count = 0;
+        var val = this.el.value.toLowerCase();
+
+        // Don't capture enter or arrow key usage.
+        if (e.keyCode === 13 || e.keyCode === 38 || e.keyCode === 40) {
+          return;
+        }
+
+        // Check if the input isn't empty
+        // Check if focus triggered by tab
+        if (this.oldVal !== val && (M.tabPressed || e.type !== 'focus')) {
+          this.open();
+        }
+
+        // Update oldVal
+        this.oldVal = val;
+      }
+
+      /**
+       * Handle Input Keydown
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleInputKeydown",
+      value: function _handleInputKeydown(e) {
+        Autocomplete._keydown = true;
+
+        // Arrow keys and enter key usage
+        var keyCode = e.keyCode,
+            liElement = void 0,
+            numItems = $(this.container).children('li').length;
+
+        // select element on Enter
+        if (keyCode === M.keys.ENTER && this.activeIndex >= 0) {
+          liElement = $(this.container).children('li').eq(this.activeIndex);
+          if (liElement.length) {
+            this.selectOption(liElement);
+            e.preventDefault();
+          }
+          return;
+        }
+
+        // Capture up and down key
+        if (keyCode === M.keys.ARROW_UP || keyCode === M.keys.ARROW_DOWN) {
+          e.preventDefault();
+
+          if (keyCode === M.keys.ARROW_UP && this.activeIndex > 0) {
+            this.activeIndex--;
+          }
+
+          if (keyCode === M.keys.ARROW_DOWN && this.activeIndex < numItems - 1) {
+            this.activeIndex++;
+          }
+
+          this.$active.removeClass('active');
+          if (this.activeIndex >= 0) {
+            this.$active = $(this.container).children('li').eq(this.activeIndex);
+            this.$active.addClass('active');
+          }
+        }
+      }
+
+      /**
+       * Handle Input Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleInputClick",
+      value: function _handleInputClick(e) {
+        this.open();
+      }
+
+      /**
+       * Handle Container Mousedown and Touchstart
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleContainerMousedownAndTouchstart",
+      value: function _handleContainerMousedownAndTouchstart(e) {
+        this._mousedown = true;
+      }
+
+      /**
+       * Handle Container Mouseup and Touchend
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleContainerMouseupAndTouchend",
+      value: function _handleContainerMouseupAndTouchend(e) {
+        this._mousedown = false;
+      }
+
+      /**
+       * Highlight partial match
+       */
+
+    }, {
+      key: "_highlight",
+      value: function _highlight(string, $el) {
+        var img = $el.find('img');
+        var matchStart = $el.text().toLowerCase().indexOf('' + string.toLowerCase() + ''),
+            matchEnd = matchStart + string.length - 1,
+            beforeMatch = $el.text().slice(0, matchStart),
+            matchText = $el.text().slice(matchStart, matchEnd + 1),
+            afterMatch = $el.text().slice(matchEnd + 1);
+        $el.html("<span>" + beforeMatch + "<span class='highlight'>" + matchText + "</span>" + afterMatch + "</span>");
+        if (img.length) {
+          $el.prepend(img);
+        }
+      }
+
+      /**
+       * Reset current element position
+       */
+
+    }, {
+      key: "_resetCurrentElement",
+      value: function _resetCurrentElement() {
+        this.activeIndex = -1;
+        this.$active.removeClass('active');
+      }
+
+      /**
+       * Reset autocomplete elements
+       */
+
+    }, {
+      key: "_resetAutocomplete",
+      value: function _resetAutocomplete() {
+        $(this.container).empty();
+        this._resetCurrentElement();
+        this.oldVal = null;
+        this.isOpen = false;
+        this._mousedown = false;
+      }
+
+      /**
+       * Select autocomplete option
+       * @param {Element} el  Autocomplete option list item element
+       */
+
+    }, {
+      key: "selectOption",
+      value: function selectOption(el) {
+        var text = el.text().trim();
+        this.el.value = text;
+        this.$el.trigger('change');
+        this._resetAutocomplete();
+        this.close();
+
+        // Handle onAutocomplete callback.
+        if (typeof this.options.onAutocomplete === 'function') {
+          this.options.onAutocomplete.call(this, text);
+        }
+      }
+
+      /**
+       * Render dropdown content
+       * @param {Object} data  data set
+       * @param {String} val  current input value
+       */
+
+    }, {
+      key: "_renderDropdown",
+      value: function _renderDropdown(data, val) {
+        var _this39 = this;
+
+        this._resetAutocomplete();
+
+        var matchingData = [];
+
+        // Gather all matching data
+        for (var key in data) {
+          if (data.hasOwnProperty(key) && key.toLowerCase().indexOf(val) !== -1) {
+            // Break if past limit
+            if (this.count >= this.options.limit) {
+              break;
+            }
+
+            var entry = {
+              data: data[key],
+              key: key
+            };
+            matchingData.push(entry);
+
+            this.count++;
+          }
+        }
+
+        // Sort
+        if (this.options.sortFunction) {
+          var sortFunctionBound = function (a, b) {
+            return _this39.options.sortFunction(a.key.toLowerCase(), b.key.toLowerCase(), val.toLowerCase());
+          };
+          matchingData.sort(sortFunctionBound);
+        }
+
+        // Render
+        for (var i = 0; i < matchingData.length; i++) {
+          var _entry = matchingData[i];
+          var $autocompleteOption = $('<li></li>');
+          if (!!_entry.data) {
+            $autocompleteOption.append("<img src=\"" + _entry.data + "\" class=\"right circle\"><span>" + _entry.key + "</span>");
+          } else {
+            $autocompleteOption.append('<span>' + _entry.key + '</span>');
+          }
+
+          $(this.container).append($autocompleteOption);
+          this._highlight(val, $autocompleteOption);
+        }
+      }
+
+      /**
+       * Open Autocomplete Dropdown
+       */
+
+    }, {
+      key: "open",
+      value: function open() {
+        var val = this.el.value.toLowerCase();
+
+        this._resetAutocomplete();
+
+        if (val.length >= this.options.minLength) {
+          this.isOpen = true;
+          this._renderDropdown(this.options.data, val);
+        }
+
+        // Open dropdown
+        if (!this.dropdown.isOpen) {
+          this.dropdown.open();
+        } else {
+          // Recalculate dropdown when its already open
+          this.dropdown.recalculateDimensions();
+        }
+      }
+
+      /**
+       * Close Autocomplete Dropdown
+       */
+
+    }, {
+      key: "close",
+      value: function close() {
+        this.dropdown.close();
+      }
+
+      /**
+       * Update Data
+       * @param {Object} data
+       */
+
+    }, {
+      key: "updateData",
+      value: function updateData(data) {
+        var val = this.el.value.toLowerCase();
+        this.options.data = data;
+
+        if (this.isOpen) {
+          this._renderDropdown(data, val);
+        }
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Autocomplete.__proto__ || Object.getPrototypeOf(Autocomplete), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Autocomplete;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Autocomplete;
+  }(Component);
+
+  /**
+   * @static
+   * @memberof Autocomplete
+   */
+
+
+  Autocomplete._keydown = false;
+
+  M.Autocomplete = Autocomplete;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Autocomplete, 'autocomplete', 'M_Autocomplete');
+  }
+})(cash);
+;(function ($) {
+  // Function to update labels of text fields
+  M.updateTextFields = function () {
+    var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], input[type=date], input[type=time], textarea';
+    $(input_selector).each(function (element, index) {
+      var $this = $(this);
+      if (element.value.length > 0 || $(element).is(':focus') || element.autofocus || $this.attr('placeholder') !== null) {
+        $this.siblings('label').addClass('active');
+      } else if (element.validity) {
+        $this.siblings('label').toggleClass('active', element.validity.badInput === true);
+      } else {
+        $this.siblings('label').removeClass('active');
+      }
+    });
+  };
+
+  M.validate_field = function (object) {
+    var hasLength = object.attr('data-length') !== null;
+    var lenAttr = parseInt(object.attr('data-length'));
+    var len = object[0].value.length;
+
+    if (len === 0 && object[0].validity.badInput === false && !object.is(':required')) {
+      if (object.hasClass('validate')) {
+        object.removeClass('valid');
+        object.removeClass('invalid');
+      }
+    } else {
+      if (object.hasClass('validate')) {
+        // Check for character counter attributes
+        if (object.is(':valid') && hasLength && len <= lenAttr || object.is(':valid') && !hasLength) {
+          object.removeClass('invalid');
+          object.addClass('valid');
+        } else {
+          object.removeClass('valid');
+          object.addClass('invalid');
+        }
+      }
+    }
+  };
+
+  M.textareaAutoResize = function ($textarea) {
+    // Wrap if native element
+    if ($textarea instanceof Element) {
+      $textarea = $($textarea);
+    }
+
+    if (!$textarea.length) {
+      console.error('No textarea element found');
+      return;
+    }
+
+    // Textarea Auto Resize
+    var hiddenDiv = $('.hiddendiv').first();
+    if (!hiddenDiv.length) {
+      hiddenDiv = $('<div class="hiddendiv common"></div>');
+      $('body').append(hiddenDiv);
+    }
+
+    // Set font properties of hiddenDiv
+    var fontFamily = $textarea.css('font-family');
+    var fontSize = $textarea.css('font-size');
+    var lineHeight = $textarea.css('line-height');
+
+    // Firefox can't handle padding shorthand.
+    var paddingTop = $textarea.css('padding-top');
+    var paddingRight = $textarea.css('padding-right');
+    var paddingBottom = $textarea.css('padding-bottom');
+    var paddingLeft = $textarea.css('padding-left');
+
+    if (fontSize) {
+      hiddenDiv.css('font-size', fontSize);
+    }
+    if (fontFamily) {
+      hiddenDiv.css('font-family', fontFamily);
+    }
+    if (lineHeight) {
+      hiddenDiv.css('line-height', lineHeight);
+    }
+    if (paddingTop) {
+      hiddenDiv.css('padding-top', paddingTop);
+    }
+    if (paddingRight) {
+      hiddenDiv.css('padding-right', paddingRight);
+    }
+    if (paddingBottom) {
+      hiddenDiv.css('padding-bottom', paddingBottom);
+    }
+    if (paddingLeft) {
+      hiddenDiv.css('padding-left', paddingLeft);
+    }
+
+    // Set original-height, if none
+    if (!$textarea.data('original-height')) {
+      $textarea.data('original-height', $textarea.height());
+    }
+
+    if ($textarea.attr('wrap') === 'off') {
+      hiddenDiv.css('overflow-wrap', 'normal').css('white-space', 'pre');
+    }
+
+    hiddenDiv.text($textarea[0].value + '\n');
+    var content = hiddenDiv.html().replace(/\n/g, '<br>');
+    hiddenDiv.html(content);
+
+    // When textarea is hidden, width goes crazy.
+    // Approximate with half of window size
+
+    if ($textarea[0].offsetWidth > 0 && $textarea[0].offsetHeight > 0) {
+      hiddenDiv.css('width', $textarea.width() + 'px');
+    } else {
+      hiddenDiv.css('width', window.innerWidth / 2 + 'px');
+    }
+
+    /**
+     * Resize if the new height is greater than the
+     * original height of the textarea
+     */
+    if ($textarea.data('original-height') <= hiddenDiv.innerHeight()) {
+      $textarea.css('height', hiddenDiv.innerHeight() + 'px');
+    } else if ($textarea[0].value.length < $textarea.data('previous-length')) {
+      /**
+       * In case the new height is less than original height, it
+       * means the textarea has less text than before
+       * So we set the height to the original one
+       */
+      $textarea.css('height', $textarea.data('original-height') + 'px');
+    }
+    $textarea.data('previous-length', $textarea[0].value.length);
+  };
+
+  $(document).ready(function () {
+    // Text based inputs
+    var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], input[type=date], input[type=time], textarea';
+
+    // Add active if form auto complete
+    $(document).on('change', input_selector, function () {
+      if (this.value.length !== 0 || $(this).attr('placeholder') !== null) {
+        $(this).siblings('label').addClass('active');
+      }
+      M.validate_field($(this));
+    });
+
+    // Add active if input element has been pre-populated on document ready
+    $(document).ready(function () {
+      M.updateTextFields();
+    });
+
+    // HTML DOM FORM RESET handling
+    $(document).on('reset', function (e) {
+      var formReset = $(e.target);
+      if (formReset.is('form')) {
+        formReset.find(input_selector).removeClass('valid').removeClass('invalid');
+        formReset.find(input_selector).each(function (e) {
+          if (this.value.length) {
+            $(this).siblings('label').removeClass('active');
+          }
+        });
+
+        // Reset select (after native reset)
+        setTimeout(function () {
+          formReset.find('select').each(function () {
+            // check if initialized
+            if (this.M_FormSelect) {
+              $(this).trigger('change');
+            }
+          });
+        }, 0);
+      }
+    });
+
+    /**
+     * Add active when element has focus
+     * @param {Event} e
+     */
+    document.addEventListener('focus', function (e) {
+      if ($(e.target).is(input_selector)) {
+        $(e.target).siblings('label, .prefix').addClass('active');
+      }
+    }, true);
+
+    /**
+     * Remove active when element is blurred
+     * @param {Event} e
+     */
+    document.addEventListener('blur', function (e) {
+      var $inputElement = $(e.target);
+      if ($inputElement.is(input_selector)) {
+        var selector = '.prefix';
+
+        if ($inputElement[0].value.length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') === null) {
+          selector += ', label';
+        }
+        $inputElement.siblings(selector).removeClass('active');
+        M.validate_field($inputElement);
+      }
+    }, true);
+
+    // Radio and Checkbox focus class
+    var radio_checkbox = 'input[type=radio], input[type=checkbox]';
+    $(document).on('keyup', radio_checkbox, function (e) {
+      // TAB, check if tabbing to radio or checkbox.
+      if (e.which === M.keys.TAB) {
+        $(this).addClass('tabbed');
+        var $this = $(this);
+        $this.one('blur', function (e) {
+          $(this).removeClass('tabbed');
+        });
+        return;
+      }
+    });
+
+    var text_area_selector = '.materialize-textarea';
+    $(text_area_selector).each(function () {
+      var $textarea = $(this);
+      /**
+       * Resize textarea on document load after storing
+       * the original height and the original length
+       */
+      $textarea.data('original-height', $textarea.height());
+      $textarea.data('previous-length', this.value.length);
+      M.textareaAutoResize($textarea);
+    });
+
+    $(document).on('keyup', text_area_selector, function () {
+      M.textareaAutoResize($(this));
+    });
+    $(document).on('keydown', text_area_selector, function () {
+      M.textareaAutoResize($(this));
+    });
+
+    // File Input Path
+    $(document).on('change', '.file-field input[type="file"]', function () {
+      var file_field = $(this).closest('.file-field');
+      var path_input = file_field.find('input.file-path');
+      var files = $(this)[0].files;
+      var file_names = [];
+      for (var i = 0; i < files.length; i++) {
+        file_names.push(files[i].name);
+      }
+      path_input[0].value = file_names.join(', ');
+      path_input.trigger('change');
+    });
+  }); // End of $(document).ready
+})(cash);
+;(function ($, anim) {
+  'use strict';
+
+  var _defaults = {
+    indicators: true,
+    height: 400,
+    duration: 500,
+    interval: 6000
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var Slider = function (_Component11) {
+    _inherits(Slider, _Component11);
+
+    /**
+     * Construct Slider instance and set up overlay
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Slider(el, options) {
+      _classCallCheck(this, Slider);
+
+      var _this40 = _possibleConstructorReturn(this, (Slider.__proto__ || Object.getPrototypeOf(Slider)).call(this, Slider, el, options));
+
+      _this40.el.M_Slider = _this40;
+
+      /**
+       * Options for the modal
+       * @member Slider#options
+       * @prop {Boolean} [indicators=true] - Show indicators
+       * @prop {Number} [height=400] - height of slider
+       * @prop {Number} [duration=500] - Length in ms of slide transition
+       * @prop {Number} [interval=6000] - Length in ms of slide interval
+       */
+      _this40.options = $.extend({}, Slider.defaults, options);
+
+      // setup
+      _this40.$slider = _this40.$el.find('.slides');
+      _this40.$slides = _this40.$slider.children('li');
+      _this40.activeIndex = _this40.$slides.filter(function (item) {
+        return $(item).hasClass('active');
+      }).first().index();
+      if (_this40.activeIndex != -1) {
+        _this40.$active = _this40.$slides.eq(_this40.activeIndex);
+      }
+
+      _this40._setSliderHeight();
+
+      // Set initial positions of captions
+      _this40.$slides.find('.caption').each(function (el) {
+        _this40._animateCaptionIn(el, 0);
+      });
+
+      // Move img src into background-image
+      _this40.$slides.find('img').each(function (el) {
+        var placeholderBase64 = 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
+        if ($(el).attr('src') !== placeholderBase64) {
+          $(el).css('background-image', 'url("' + $(el).attr('src') + '")');
+          $(el).attr('src', placeholderBase64);
+        }
+      });
+
+      _this40._setupIndicators();
+
+      // Show active slide
+      if (_this40.$active) {
+        _this40.$active.css('display', 'block');
+      } else {
+        _this40.$slides.first().addClass('active');
+        anim({
+          targets: _this40.$slides.first()[0],
+          opacity: 1,
+          duration: _this40.options.duration,
+          easing: 'easeOutQuad'
+        });
+
+        _this40.activeIndex = 0;
+        _this40.$active = _this40.$slides.eq(_this40.activeIndex);
+
+        // Update indicators
+        if (_this40.options.indicators) {
+          _this40.$indicators.eq(_this40.activeIndex).addClass('active');
+        }
+      }
+
+      // Adjust height to current slide
+      _this40.$active.find('img').each(function (el) {
+        anim({
+          targets: _this40.$active.find('.caption')[0],
+          opacity: 1,
+          translateX: 0,
+          translateY: 0,
+          duration: _this40.options.duration,
+          easing: 'easeOutQuad'
+        });
+      });
+
+      _this40._setupEventHandlers();
+
+      // auto scroll
+      _this40.start();
+      return _this40;
+    }
+
+    _createClass(Slider, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this.pause();
+        this._removeIndicators();
+        this._removeEventHandlers();
+        this.el.M_Slider = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        var _this41 = this;
+
+        this._handleIntervalBound = this._handleInterval.bind(this);
+        this._handleIndicatorClickBound = this._handleIndicatorClick.bind(this);
+
+        if (this.options.indicators) {
+          this.$indicators.each(function (el) {
+            el.addEventListener('click', _this41._handleIndicatorClickBound);
+          });
+        }
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        var _this42 = this;
+
+        if (this.options.indicators) {
+          this.$indicators.each(function (el) {
+            el.removeEventListener('click', _this42._handleIndicatorClickBound);
+          });
+        }
+      }
+
+      /**
+       * Handle indicator click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleIndicatorClick",
+      value: function _handleIndicatorClick(e) {
+        var currIndex = $(e.target).index();
+        this.set(currIndex);
+      }
+
+      /**
+       * Handle Interval
+       */
+
+    }, {
+      key: "_handleInterval",
+      value: function _handleInterval() {
+        var newActiveIndex = this.$slider.find('.active').index();
+        if (this.$slides.length === newActiveIndex + 1) newActiveIndex = 0;
+        // loop to start
+        else newActiveIndex += 1;
+
+        this.set(newActiveIndex);
+      }
+
+      /**
+       * Animate in caption
+       * @param {Element} caption
+       * @param {Number} duration
+       */
+
+    }, {
+      key: "_animateCaptionIn",
+      value: function _animateCaptionIn(caption, duration) {
+        var animOptions = {
+          targets: caption,
+          opacity: 0,
+          duration: duration,
+          easing: 'easeOutQuad'
+        };
+
+        if ($(caption).hasClass('center-align')) {
+          animOptions.translateY = -100;
+        } else if ($(caption).hasClass('right-align')) {
+          animOptions.translateX = 100;
+        } else if ($(caption).hasClass('left-align')) {
+          animOptions.translateX = -100;
+        }
+
+        anim(animOptions);
+      }
+
+      /**
+       * Set height of slider
+       */
+
+    }, {
+      key: "_setSliderHeight",
+      value: function _setSliderHeight() {
+        // If fullscreen, do nothing
+        if (!this.$el.hasClass('fullscreen')) {
+          if (this.options.indicators) {
+            // Add height if indicators are present
+            this.$el.css('height', this.options.height + 40 + 'px');
+          } else {
+            this.$el.css('height', this.options.height + 'px');
+          }
+          this.$slider.css('height', this.options.height + 'px');
+        }
+      }
+
+      /**
+       * Setup indicators
+       */
+
+    }, {
+      key: "_setupIndicators",
+      value: function _setupIndicators() {
+        var _this43 = this;
+
+        if (this.options.indicators) {
+          this.$indicators = $('<ul class="indicators"></ul>');
+          this.$slides.each(function (el, index) {
+            var $indicator = $('<li class="indicator-item"></li>');
+            _this43.$indicators.append($indicator[0]);
+          });
+          this.$el.append(this.$indicators[0]);
+          this.$indicators = this.$indicators.children('li.indicator-item');
+        }
+      }
+
+      /**
+       * Remove indicators
+       */
+
+    }, {
+      key: "_removeIndicators",
+      value: function _removeIndicators() {
+        this.$el.find('ul.indicators').remove();
+      }
+
+      /**
+       * Cycle to nth item
+       * @param {Number} index
+       */
+
+    }, {
+      key: "set",
+      value: function set(index) {
+        var _this44 = this;
+
+        // Wrap around indices.
+        if (index >= this.$slides.length) index = 0;else if (index < 0) index = this.$slides.length - 1;
+
+        // Only do if index changes
+        if (this.activeIndex != index) {
+          this.$active = this.$slides.eq(this.activeIndex);
+          var $caption = this.$active.find('.caption');
+          this.$active.removeClass('active');
+
+          anim({
+            targets: this.$active[0],
+            opacity: 0,
+            duration: this.options.duration,
+            easing: 'easeOutQuad',
+            complete: function () {
+              _this44.$slides.not('.active').each(function (el) {
+                anim({
+                  targets: el,
+                  opacity: 0,
+                  translateX: 0,
+                  translateY: 0,
+                  duration: 0,
+                  easing: 'easeOutQuad'
+                });
+              });
+            }
+          });
+
+          this._animateCaptionIn($caption[0], this.options.duration);
+
+          // Update indicators
+          if (this.options.indicators) {
+            this.$indicators.eq(this.activeIndex).removeClass('active');
+            this.$indicators.eq(index).addClass('active');
+          }
+
+          anim({
+            targets: this.$slides.eq(index)[0],
+            opacity: 1,
+            duration: this.options.duration,
+            easing: 'easeOutQuad'
+          });
+
+          anim({
+            targets: this.$slides.eq(index).find('.caption')[0],
+            opacity: 1,
+            translateX: 0,
+            translateY: 0,
+            duration: this.options.duration,
+            delay: this.options.duration,
+            easing: 'easeOutQuad'
+          });
+
+          this.$slides.eq(index).addClass('active');
+          this.activeIndex = index;
+
+          // Reset interval
+          this.start();
+        }
+      }
+
+      /**
+       * Pause slider interval
+       */
+
+    }, {
+      key: "pause",
+      value: function pause() {
+        clearInterval(this.interval);
+      }
+
+      /**
+       * Start slider interval
+       */
+
+    }, {
+      key: "start",
+      value: function start() {
+        clearInterval(this.interval);
+        this.interval = setInterval(this._handleIntervalBound, this.options.duration + this.options.interval);
+      }
+
+      /**
+       * Move to next slide
+       */
+
+    }, {
+      key: "next",
+      value: function next() {
+        var newIndex = this.activeIndex + 1;
+
+        // Wrap around indices.
+        if (newIndex >= this.$slides.length) newIndex = 0;else if (newIndex < 0) newIndex = this.$slides.length - 1;
+
+        this.set(newIndex);
+      }
+
+      /**
+       * Move to previous slide
+       */
+
+    }, {
+      key: "prev",
+      value: function prev() {
+        var newIndex = this.activeIndex - 1;
+
+        // Wrap around indices.
+        if (newIndex >= this.$slides.length) newIndex = 0;else if (newIndex < 0) newIndex = this.$slides.length - 1;
+
+        this.set(newIndex);
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Slider.__proto__ || Object.getPrototypeOf(Slider), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Slider;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Slider;
+  }(Component);
+
+  M.Slider = Slider;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Slider, 'slider', 'M_Slider');
+  }
+})(cash, M.anime);
+;(function ($, anim) {
+  $(document).on('click', '.card', function (e) {
+    if ($(this).children('.card-reveal').length) {
+      var $card = $(e.target).closest('.card');
+      if ($card.data('initialOverflow') === undefined) {
+        $card.data('initialOverflow', $card.css('overflow') === undefined ? '' : $card.css('overflow'));
+      }
+      var $cardReveal = $(this).find('.card-reveal');
+      if ($(e.target).is($('.card-reveal .card-title')) || $(e.target).is($('.card-reveal .card-title i'))) {
+        // Make Reveal animate down and display none
+        anim({
+          targets: $cardReveal[0],
+          translateY: 0,
+          duration: 225,
+          easing: 'easeInOutQuad',
+          complete: function (anim) {
+            var el = anim.animatables[0].target;
+            $(el).css({ display: 'none' });
+            $card.css('overflow', $card.data('initialOverflow'));
+          }
+        });
+      } else if ($(e.target).is($('.card .activator')) || $(e.target).is($('.card .activator i'))) {
+        $card.css('overflow', 'hidden');
+        $cardReveal.css({ display: 'block' });
+        anim({
+          targets: $cardReveal[0],
+          translateY: '-100%',
+          duration: 300,
+          easing: 'easeInOutQuad'
+        });
+      }
+    }
+  });
+})(cash, M.anime);
+;(function ($) {
+  'use strict';
+
+  var _defaults = {
+    data: [],
+    placeholder: '',
+    secondaryPlaceholder: '',
+    autocompleteOptions: {},
+    limit: Infinity,
+    onChipAdd: null,
+    onChipSelect: null,
+    onChipDelete: null
+  };
+
+  /**
+   * @typedef {Object} chip
+   * @property {String} tag  chip tag string
+   * @property {String} [image]  chip avatar image string
+   */
+
+  /**
+   * @class
+   *
+   */
+
+  var Chips = function (_Component12) {
+    _inherits(Chips, _Component12);
+
+    /**
+     * Construct Chips instance and set up overlay
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Chips(el, options) {
+      _classCallCheck(this, Chips);
+
+      var _this45 = _possibleConstructorReturn(this, (Chips.__proto__ || Object.getPrototypeOf(Chips)).call(this, Chips, el, options));
+
+      _this45.el.M_Chips = _this45;
+
+      /**
+       * Options for the modal
+       * @member Chips#options
+       * @prop {Array} data
+       * @prop {String} placeholder
+       * @prop {String} secondaryPlaceholder
+       * @prop {Object} autocompleteOptions
+       */
+      _this45.options = $.extend({}, Chips.defaults, options);
+
+      _this45.$el.addClass('chips input-field');
+      _this45.chipsData = [];
+      _this45.$chips = $();
+      _this45._setupInput();
+      _this45.hasAutocomplete = Object.keys(_this45.options.autocompleteOptions).length > 0;
+
+      // Set input id
+      if (!_this45.$input.attr('id')) {
+        _this45.$input.attr('id', M.guid());
+      }
+
+      // Render initial chips
+      if (_this45.options.data.length) {
+        _this45.chipsData = _this45.options.data;
+        _this45._renderChips(_this45.chipsData);
+      }
+
+      // Setup autocomplete if needed
+      if (_this45.hasAutocomplete) {
+        _this45._setupAutocomplete();
+      }
+
+      _this45._setPlaceholder();
+      _this45._setupLabel();
+      _this45._setupEventHandlers();
+      return _this45;
+    }
+
+    _createClass(Chips, [{
+      key: "getData",
+
+
+      /**
+       * Get Chips Data
+       */
+      value: function getData() {
+        return this.chipsData;
+      }
+
+      /**
+       * Teardown component
+       */
+
+    }, {
+      key: "destroy",
+      value: function destroy() {
+        this._removeEventHandlers();
+        this.$chips.remove();
+        this.el.M_Chips = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleChipClickBound = this._handleChipClick.bind(this);
+        this._handleInputKeydownBound = this._handleInputKeydown.bind(this);
+        this._handleInputFocusBound = this._handleInputFocus.bind(this);
+        this._handleInputBlurBound = this._handleInputBlur.bind(this);
+
+        this.el.addEventListener('click', this._handleChipClickBound);
+        document.addEventListener('keydown', Chips._handleChipsKeydown);
+        document.addEventListener('keyup', Chips._handleChipsKeyup);
+        this.el.addEventListener('blur', Chips._handleChipsBlur, true);
+        this.$input[0].addEventListener('focus', this._handleInputFocusBound);
+        this.$input[0].addEventListener('blur', this._handleInputBlurBound);
+        this.$input[0].addEventListener('keydown', this._handleInputKeydownBound);
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        this.el.removeEventListener('click', this._handleChipClickBound);
+        document.removeEventListener('keydown', Chips._handleChipsKeydown);
+        document.removeEventListener('keyup', Chips._handleChipsKeyup);
+        this.el.removeEventListener('blur', Chips._handleChipsBlur, true);
+        this.$input[0].removeEventListener('focus', this._handleInputFocusBound);
+        this.$input[0].removeEventListener('blur', this._handleInputBlurBound);
+        this.$input[0].removeEventListener('keydown', this._handleInputKeydownBound);
+      }
+
+      /**
+       * Handle Chip Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleChipClick",
+      value: function _handleChipClick(e) {
+        var $chip = $(e.target).closest('.chip');
+        var clickedClose = $(e.target).is('.close');
+        if ($chip.length) {
+          var index = $chip.index();
+          if (clickedClose) {
+            // delete chip
+            this.deleteChip(index);
+            this.$input[0].focus();
+          } else {
+            // select chip
+            this.selectChip(index);
+          }
+
+          // Default handle click to focus on input
+        } else {
+          this.$input[0].focus();
+        }
+      }
+
+      /**
+       * Handle Chips Keydown
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleInputFocus",
+
+
+      /**
+       * Handle Input Focus
+       */
+      value: function _handleInputFocus() {
+        this.$el.addClass('focus');
+      }
+
+      /**
+       * Handle Input Blur
+       */
+
+    }, {
+      key: "_handleInputBlur",
+      value: function _handleInputBlur() {
+        this.$el.removeClass('focus');
+      }
+
+      /**
+       * Handle Input Keydown
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleInputKeydown",
+      value: function _handleInputKeydown(e) {
+        Chips._keydown = true;
+
+        // enter
+        if (e.keyCode === 13) {
+          // Override enter if autocompleting.
+          if (this.hasAutocomplete && this.autocomplete && this.autocomplete.isOpen) {
+            return;
+          }
+
+          e.preventDefault();
+          this.addChip({
+            tag: this.$input[0].value
+          });
+          this.$input[0].value = '';
+
+          // delete or left
+        } else if ((e.keyCode === 8 || e.keyCode === 37) && this.$input[0].value === '' && this.chipsData.length) {
+          e.preventDefault();
+          this.selectChip(this.chipsData.length - 1);
+        }
+      }
+
+      /**
+       * Render Chip
+       * @param {chip} chip
+       * @return {Element}
+       */
+
+    }, {
+      key: "_renderChip",
+      value: function _renderChip(chip) {
+        if (!chip.tag) {
+          return;
+        }
+
+        var renderedChip = document.createElement('div');
+        var closeIcon = document.createElement('i');
+        renderedChip.classList.add('chip');
+        renderedChip.textContent = chip.tag;
+        renderedChip.setAttribute('tabindex', 0);
+        $(closeIcon).addClass('material-icons close');
+        closeIcon.textContent = 'close';
+
+        // attach image if needed
+        if (chip.image) {
+          var img = document.createElement('img');
+          img.setAttribute('src', chip.image);
+          renderedChip.insertBefore(img, renderedChip.firstChild);
+        }
+
+        renderedChip.appendChild(closeIcon);
+        return renderedChip;
+      }
+
+      /**
+       * Render Chips
+       */
+
+    }, {
+      key: "_renderChips",
+      value: function _renderChips() {
+        this.$chips.remove();
+        for (var i = 0; i < this.chipsData.length; i++) {
+          var chipEl = this._renderChip(this.chipsData[i]);
+          this.$el.append(chipEl);
+          this.$chips.add(chipEl);
+        }
+
+        // move input to end
+        this.$el.append(this.$input[0]);
+      }
+
+      /**
+       * Setup Autocomplete
+       */
+
+    }, {
+      key: "_setupAutocomplete",
+      value: function _setupAutocomplete() {
+        var _this46 = this;
+
+        this.options.autocompleteOptions.onAutocomplete = function (val) {
+          _this46.addChip({
+            tag: val
+          });
+          _this46.$input[0].value = '';
+          _this46.$input[0].focus();
+        };
+
+        this.autocomplete = M.Autocomplete.init(this.$input[0], this.options.autocompleteOptions);
+      }
+
+      /**
+       * Setup Input
+       */
+
+    }, {
+      key: "_setupInput",
+      value: function _setupInput() {
+        this.$input = this.$el.find('input');
+        if (!this.$input.length) {
+          this.$input = $('<input></input>');
+          this.$el.append(this.$input);
+        }
+
+        this.$input.addClass('input');
+      }
+
+      /**
+       * Setup Label
+       */
+
+    }, {
+      key: "_setupLabel",
+      value: function _setupLabel() {
+        this.$label = this.$el.find('label');
+        if (this.$label.length) {
+          this.$label.setAttribute('for', this.$input.attr('id'));
+        }
+      }
+
+      /**
+       * Set placeholder
+       */
+
+    }, {
+      key: "_setPlaceholder",
+      value: function _setPlaceholder() {
+        if (this.chipsData !== undefined && !this.chipsData.length && this.options.placeholder) {
+          $(this.$input).prop('placeholder', this.options.placeholder);
+        } else if ((this.chipsData === undefined || !!this.chipsData.length) && this.options.secondaryPlaceholder) {
+          $(this.$input).prop('placeholder', this.options.secondaryPlaceholder);
+        }
+      }
+
+      /**
+       * Check if chip is valid
+       * @param {chip} chip
+       */
+
+    }, {
+      key: "_isValid",
+      value: function _isValid(chip) {
+        if (chip.hasOwnProperty('tag') && chip.tag !== '') {
+          var exists = false;
+          for (var i = 0; i < this.chipsData.length; i++) {
+            if (this.chipsData[i].tag === chip.tag) {
+              exists = true;
+              break;
+            }
+          }
+          return !exists;
+        }
+
+        return false;
+      }
+
+      /**
+       * Add chip
+       * @param {chip} chip
+       */
+
+    }, {
+      key: "addChip",
+      value: function addChip(chip) {
+        if (!this._isValid(chip) || this.chipsData.length >= this.options.limit) {
+          return;
+        }
+
+        var renderedChip = this._renderChip(chip);
+        this.$chips.add(renderedChip);
+        this.chipsData.push(chip);
+        $(this.$input).before(renderedChip);
+        this._setPlaceholder();
+
+        // fire chipAdd callback
+        if (typeof this.options.onChipAdd === 'function') {
+          this.options.onChipAdd.call(this, this.$el, renderedChip);
+        }
+      }
+
+      /**
+       * Delete chip
+       * @param {Number} chip
+       */
+
+    }, {
+      key: "deleteChip",
+      value: function deleteChip(chipIndex) {
+        var $chip = this.$chips.eq(chipIndex);
+        this.$chips.eq(chipIndex).remove();
+        this.$chips = this.$chips.filter(function (el) {
+          return $(el).index() >= 0;
+        });
+        this.chipsData.splice(chipIndex, 1);
+        this._setPlaceholder();
+
+        // fire chipDelete callback
+        if (typeof this.options.onChipDelete === 'function') {
+          this.options.onChipDelete.call(this, this.$el, $chip[0]);
+        }
+      }
+
+      /**
+       * Select chip
+       * @param {Number} chip
+       */
+
+    }, {
+      key: "selectChip",
+      value: function selectChip(chipIndex) {
+        var $chip = this.$chips.eq(chipIndex);
+        this._selectedChip = $chip;
+        $chip[0].focus();
+
+        // fire chipSelect callback
+        if (typeof this.options.onChipSelect === 'function') {
+          this.options.onChipSelect.call(this, this.$el, $chip[0]);
+        }
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Chips.__proto__ || Object.getPrototypeOf(Chips), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Chips;
+      }
+    }, {
+      key: "_handleChipsKeydown",
+      value: function _handleChipsKeydown(e) {
+        Chips._keydown = true;
+
+        var $chips = $(e.target).closest('.chips');
+        var chipsKeydown = e.target && $chips.length;
+
+        // Don't handle keydown inputs on input and textarea
+        if ($(e.target).is('input, textarea') || !chipsKeydown) {
+          return;
+        }
+
+        var currChips = $chips[0].M_Chips;
+
+        // backspace and delete
+        if (e.keyCode === 8 || e.keyCode === 46) {
+          e.preventDefault();
+
+          var selectIndex = currChips.chipsData.length;
+          if (currChips._selectedChip) {
+            var index = currChips._selectedChip.index();
+            currChips.deleteChip(index);
+            currChips._selectedChip = null;
+
+            // Make sure selectIndex doesn't go negative
+            selectIndex = Math.max(index - 1, 0);
+          }
+
+          if (currChips.chipsData.length) {
+            currChips.selectChip(selectIndex);
+          }
+
+          // left arrow key
+        } else if (e.keyCode === 37) {
+          if (currChips._selectedChip) {
+            var _selectIndex = currChips._selectedChip.index() - 1;
+            if (_selectIndex < 0) {
+              return;
+            }
+            currChips.selectChip(_selectIndex);
+          }
+
+          // right arrow key
+        } else if (e.keyCode === 39) {
+          if (currChips._selectedChip) {
+            var _selectIndex2 = currChips._selectedChip.index() + 1;
+
+            if (_selectIndex2 >= currChips.chipsData.length) {
+              currChips.$input[0].focus();
+            } else {
+              currChips.selectChip(_selectIndex2);
+            }
+          }
+        }
+      }
+
+      /**
+       * Handle Chips Keyup
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleChipsKeyup",
+      value: function _handleChipsKeyup(e) {
+        Chips._keydown = false;
+      }
+
+      /**
+       * Handle Chips Blur
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleChipsBlur",
+      value: function _handleChipsBlur(e) {
+        if (!Chips._keydown) {
+          var $chips = $(e.target).closest('.chips');
+          var currChips = $chips[0].M_Chips;
+
+          currChips._selectedChip = null;
+        }
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Chips;
+  }(Component);
+
+  /**
+   * @static
+   * @memberof Chips
+   */
+
+
+  Chips._keydown = false;
+
+  M.Chips = Chips;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Chips, 'chips', 'M_Chips');
+  }
+
+  $(document).ready(function () {
+    // Handle removal of static chips.
+    $(document.body).on('click', '.chip .close', function () {
+      var $chips = $(this).closest('.chips');
+      if ($chips.length && $chips[0].M_Chips) {
+        return;
+      }
+      $(this).closest('.chip').remove();
+    });
+  });
+})(cash);
+;(function ($) {
+  'use strict';
+
+  var _defaults = {
+    top: 0,
+    bottom: Infinity,
+    offset: 0,
+    onPositionChange: null
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var Pushpin = function (_Component13) {
+    _inherits(Pushpin, _Component13);
+
+    /**
+     * Construct Pushpin instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Pushpin(el, options) {
+      _classCallCheck(this, Pushpin);
+
+      var _this47 = _possibleConstructorReturn(this, (Pushpin.__proto__ || Object.getPrototypeOf(Pushpin)).call(this, Pushpin, el, options));
+
+      _this47.el.M_Pushpin = _this47;
+
+      /**
+       * Options for the modal
+       * @member Pushpin#options
+       */
+      _this47.options = $.extend({}, Pushpin.defaults, options);
+
+      _this47.originalOffset = _this47.el.offsetTop;
+      Pushpin._pushpins.push(_this47);
+      _this47._setupEventHandlers();
+      _this47._updatePosition();
+      return _this47;
+    }
+
+    _createClass(Pushpin, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this.el.style.top = null;
+        this._removePinClasses();
+        this._removeEventHandlers();
+
+        // Remove pushpin Inst
+        var index = Pushpin._pushpins.indexOf(this);
+        Pushpin._pushpins.splice(index, 1);
+      }
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        document.addEventListener('scroll', Pushpin._updateElements);
+      }
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        document.removeEventListener('scroll', Pushpin._updateElements);
+      }
+    }, {
+      key: "_updatePosition",
+      value: function _updatePosition() {
+        var scrolled = M.getDocumentScrollTop() + this.options.offset;
+
+        if (this.options.top <= scrolled && this.options.bottom >= scrolled && !this.el.classList.contains('pinned')) {
+          this._removePinClasses();
+          this.el.style.top = this.options.offset + "px";
+          this.el.classList.add('pinned');
+
+          // onPositionChange callback
+          if (typeof this.options.onPositionChange === 'function') {
+            this.options.onPositionChange.call(this, 'pinned');
+          }
+        }
+
+        // Add pin-top (when scrolled position is above top)
+        if (scrolled < this.options.top && !this.el.classList.contains('pin-top')) {
+          this._removePinClasses();
+          this.el.style.top = 0;
+          this.el.classList.add('pin-top');
+
+          // onPositionChange callback
+          if (typeof this.options.onPositionChange === 'function') {
+            this.options.onPositionChange.call(this, 'pin-top');
+          }
+        }
+
+        // Add pin-bottom (when scrolled position is below bottom)
+        if (scrolled > this.options.bottom && !this.el.classList.contains('pin-bottom')) {
+          this._removePinClasses();
+          this.el.classList.add('pin-bottom');
+          this.el.style.top = this.options.bottom - this.originalOffset + "px";
+
+          // onPositionChange callback
+          if (typeof this.options.onPositionChange === 'function') {
+            this.options.onPositionChange.call(this, 'pin-bottom');
+          }
+        }
+      }
+    }, {
+      key: "_removePinClasses",
+      value: function _removePinClasses() {
+        // IE 11 bug (can't remove multiple classes in one line)
+        this.el.classList.remove('pin-top');
+        this.el.classList.remove('pinned');
+        this.el.classList.remove('pin-bottom');
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Pushpin.__proto__ || Object.getPrototypeOf(Pushpin), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Pushpin;
+      }
+    }, {
+      key: "_updateElements",
+      value: function _updateElements() {
+        for (var elIndex in Pushpin._pushpins) {
+          var pInstance = Pushpin._pushpins[elIndex];
+          pInstance._updatePosition();
+        }
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Pushpin;
+  }(Component);
+
+  /**
+   * @static
+   * @memberof Pushpin
+   */
+
+
+  Pushpin._pushpins = [];
+
+  M.Pushpin = Pushpin;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Pushpin, 'pushpin', 'M_Pushpin');
+  }
+})(cash);
+;(function ($, anim) {
+  'use strict';
+
+  var _defaults = {
+    direction: 'top',
+    hoverEnabled: true,
+    toolbarEnabled: false
+  };
+
+  $.fn.reverse = [].reverse;
+
+  /**
+   * @class
+   *
+   */
+
+  var FloatingActionButton = function (_Component14) {
+    _inherits(FloatingActionButton, _Component14);
+
+    /**
+     * Construct FloatingActionButton instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function FloatingActionButton(el, options) {
+      _classCallCheck(this, FloatingActionButton);
+
+      var _this48 = _possibleConstructorReturn(this, (FloatingActionButton.__proto__ || Object.getPrototypeOf(FloatingActionButton)).call(this, FloatingActionButton, el, options));
+
+      _this48.el.M_FloatingActionButton = _this48;
+
+      /**
+       * Options for the fab
+       * @member FloatingActionButton#options
+       * @prop {Boolean} [direction] - Direction fab menu opens
+       * @prop {Boolean} [hoverEnabled=true] - Enable hover vs click
+       * @prop {Boolean} [toolbarEnabled=false] - Enable toolbar transition
+       */
+      _this48.options = $.extend({}, FloatingActionButton.defaults, options);
+
+      _this48.isOpen = false;
+      _this48.$anchor = _this48.$el.children('a').first();
+      _this48.$menu = _this48.$el.children('ul').first();
+      _this48.$floatingBtns = _this48.$el.find('ul .btn-floating');
+      _this48.$floatingBtnsReverse = _this48.$el.find('ul .btn-floating').reverse();
+      _this48.offsetY = 0;
+      _this48.offsetX = 0;
+
+      _this48.$el.addClass("direction-" + _this48.options.direction);
+      if (_this48.options.direction === 'top') {
+        _this48.offsetY = 40;
+      } else if (_this48.options.direction === 'right') {
+        _this48.offsetX = -40;
+      } else if (_this48.options.direction === 'bottom') {
+        _this48.offsetY = -40;
+      } else {
+        _this48.offsetX = 40;
+      }
+      _this48._setupEventHandlers();
+      return _this48;
+    }
+
+    _createClass(FloatingActionButton, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this.el.M_FloatingActionButton = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleFABClickBound = this._handleFABClick.bind(this);
+        this._handleOpenBound = this.open.bind(this);
+        this._handleCloseBound = this.close.bind(this);
+
+        if (this.options.hoverEnabled && !this.options.toolbarEnabled) {
+          this.el.addEventListener('mouseenter', this._handleOpenBound);
+          this.el.addEventListener('mouseleave', this._handleCloseBound);
+        } else {
+          this.el.addEventListener('click', this._handleFABClickBound);
+        }
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        if (this.options.hoverEnabled && !this.options.toolbarEnabled) {
+          this.el.removeEventListener('mouseenter', this._handleOpenBound);
+          this.el.removeEventListener('mouseleave', this._handleCloseBound);
+        } else {
+          this.el.removeEventListener('click', this._handleFABClickBound);
+        }
+      }
+
+      /**
+       * Handle FAB Click
+       */
+
+    }, {
+      key: "_handleFABClick",
+      value: function _handleFABClick() {
+        if (this.isOpen) {
+          this.close();
+        } else {
+          this.open();
+        }
+      }
+
+      /**
+       * Handle Document Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleDocumentClick",
+      value: function _handleDocumentClick(e) {
+        if (!$(e.target).closest(this.$menu).length) {
+          this.close();
+        }
+      }
+
+      /**
+       * Open FAB
+       */
+
+    }, {
+      key: "open",
+      value: function open() {
+        if (this.isOpen) {
+          return;
+        }
+
+        if (this.options.toolbarEnabled) {
+          this._animateInToolbar();
+        } else {
+          this._animateInFAB();
+        }
+        this.isOpen = true;
+      }
+
+      /**
+       * Close FAB
+       */
+
+    }, {
+      key: "close",
+      value: function close() {
+        if (!this.isOpen) {
+          return;
+        }
+
+        if (this.options.toolbarEnabled) {
+          window.removeEventListener('scroll', this._handleCloseBound, true);
+          document.body.removeEventListener('click', this._handleDocumentClickBound, true);
+          this._animateOutToolbar();
+        } else {
+          this._animateOutFAB();
+        }
+        this.isOpen = false;
+      }
+
+      /**
+       * Classic FAB Menu open
+       */
+
+    }, {
+      key: "_animateInFAB",
+      value: function _animateInFAB() {
+        var _this49 = this;
+
+        this.$el.addClass('active');
+
+        var time = 0;
+        this.$floatingBtnsReverse.each(function (el) {
+          anim({
+            targets: el,
+            opacity: 1,
+            scale: [0.4, 1],
+            translateY: [_this49.offsetY, 0],
+            translateX: [_this49.offsetX, 0],
+            duration: 275,
+            delay: time,
+            easing: 'easeInOutQuad'
+          });
+          time += 40;
+        });
+      }
+
+      /**
+       * Classic FAB Menu close
+       */
+
+    }, {
+      key: "_animateOutFAB",
+      value: function _animateOutFAB() {
+        var _this50 = this;
+
+        this.$floatingBtnsReverse.each(function (el) {
+          anim.remove(el);
+          anim({
+            targets: el,
+            opacity: 0,
+            scale: 0.4,
+            translateY: _this50.offsetY,
+            translateX: _this50.offsetX,
+            duration: 175,
+            easing: 'easeOutQuad',
+            complete: function () {
+              _this50.$el.removeClass('active');
+            }
+          });
+        });
+      }
+
+      /**
+       * Toolbar transition Menu open
+       */
+
+    }, {
+      key: "_animateInToolbar",
+      value: function _animateInToolbar() {
+        var _this51 = this;
+
+        var scaleFactor = void 0;
+        var windowWidth = window.innerWidth;
+        var windowHeight = window.innerHeight;
+        var btnRect = this.el.getBoundingClientRect();
+        var backdrop = $('<div class="fab-backdrop"></div>');
+        var fabColor = this.$anchor.css('background-color');
+        this.$anchor.append(backdrop);
+
+        this.offsetX = btnRect.left - windowWidth / 2 + btnRect.width / 2;
+        this.offsetY = windowHeight - btnRect.bottom;
+        scaleFactor = windowWidth / backdrop[0].clientWidth;
+        this.btnBottom = btnRect.bottom;
+        this.btnLeft = btnRect.left;
+        this.btnWidth = btnRect.width;
+
+        // Set initial state
+        this.$el.addClass('active');
+        this.$el.css({
+          'text-align': 'center',
+          width: '100%',
+          bottom: 0,
+          left: 0,
+          transform: 'translateX(' + this.offsetX + 'px)',
+          transition: 'none'
+        });
+        this.$anchor.css({
+          transform: 'translateY(' + -this.offsetY + 'px)',
+          transition: 'none'
+        });
+        backdrop.css({
+          'background-color': fabColor
+        });
+
+        setTimeout(function () {
+          _this51.$el.css({
+            transform: '',
+            transition: 'transform .2s cubic-bezier(0.550, 0.085, 0.680, 0.530), background-color 0s linear .2s'
+          });
+          _this51.$anchor.css({
+            overflow: 'visible',
+            transform: '',
+            transition: 'transform .2s'
+          });
+
+          setTimeout(function () {
+            _this51.$el.css({
+              overflow: 'hidden',
+              'background-color': fabColor
+            });
+            backdrop.css({
+              transform: 'scale(' + scaleFactor + ')',
+              transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)'
+            });
+            _this51.$menu.children('li').children('a').css({
+              opacity: 1
+            });
+
+            // Scroll to close.
+            _this51._handleDocumentClickBound = _this51._handleDocumentClick.bind(_this51);
+            window.addEventListener('scroll', _this51._handleCloseBound, true);
+            document.body.addEventListener('click', _this51._handleDocumentClickBound, true);
+          }, 100);
+        }, 0);
+      }
+
+      /**
+       * Toolbar transition Menu close
+       */
+
+    }, {
+      key: "_animateOutToolbar",
+      value: function _animateOutToolbar() {
+        var _this52 = this;
+
+        var windowWidth = window.innerWidth;
+        var windowHeight = window.innerHeight;
+        var backdrop = this.$el.find('.fab-backdrop');
+        var fabColor = this.$anchor.css('background-color');
+
+        this.offsetX = this.btnLeft - windowWidth / 2 + this.btnWidth / 2;
+        this.offsetY = windowHeight - this.btnBottom;
+
+        // Hide backdrop
+        this.$el.removeClass('active');
+        this.$el.css({
+          'background-color': 'transparent',
+          transition: 'none'
+        });
+        this.$anchor.css({
+          transition: 'none'
+        });
+        backdrop.css({
+          transform: 'scale(0)',
+          'background-color': fabColor
+        });
+        this.$menu.children('li').children('a').css({
+          opacity: ''
+        });
+
+        setTimeout(function () {
+          backdrop.remove();
+
+          // Set initial state.
+          _this52.$el.css({
+            'text-align': '',
+            width: '',
+            bottom: '',
+            left: '',
+            overflow: '',
+            'background-color': '',
+            transform: 'translate3d(' + -_this52.offsetX + 'px,0,0)'
+          });
+          _this52.$anchor.css({
+            overflow: '',
+            transform: 'translate3d(0,' + _this52.offsetY + 'px,0)'
+          });
+
+          setTimeout(function () {
+            _this52.$el.css({
+              transform: 'translate3d(0,0,0)',
+              transition: 'transform .2s'
+            });
+            _this52.$anchor.css({
+              transform: 'translate3d(0,0,0)',
+              transition: 'transform .2s cubic-bezier(0.550, 0.055, 0.675, 0.190)'
+            });
+          }, 20);
+        }, 200);
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(FloatingActionButton.__proto__ || Object.getPrototypeOf(FloatingActionButton), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_FloatingActionButton;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return FloatingActionButton;
+  }(Component);
+
+  M.FloatingActionButton = FloatingActionButton;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(FloatingActionButton, 'floatingActionButton', 'M_FloatingActionButton');
+  }
+})(cash, M.anime);
+;(function ($) {
+  'use strict';
+
+  var _defaults = {
+    // Close when date is selected
+    autoClose: false,
+
+    // the default output format for the input field value
+    format: 'mmm dd, yyyy',
+
+    // Used to create date object from current input string
+    parse: null,
+
+    // The initial date to view when first opened
+    defaultDate: null,
+
+    // Make the `defaultDate` the initial selected value
+    setDefaultDate: false,
+
+    disableWeekends: false,
+
+    disableDayFn: null,
+
+    // First day of week (0: Sunday, 1: Monday etc)
+    firstDay: 0,
+
+    // The earliest date that can be selected
+    minDate: null,
+    // Thelatest date that can be selected
+    maxDate: null,
+
+    // Number of years either side, or array of upper/lower range
+    yearRange: 10,
+
+    // used internally (don't config outside)
+    minYear: 0,
+    maxYear: 9999,
+    minMonth: undefined,
+    maxMonth: undefined,
+
+    startRange: null,
+    endRange: null,
+
+    isRTL: false,
+
+    // Render the month after year in the calendar title
+    showMonthAfterYear: false,
+
+    // Render days of the calendar grid that fall in the next or previous month
+    showDaysInNextAndPreviousMonths: false,
+
+    // Specify a DOM element to render the calendar in
+    container: null,
+
+    // Show clear button
+    showClearBtn: false,
+
+    // internationalization
+    i18n: {
+      cancel: 'Cancel',
+      clear: 'Clear',
+      done: 'Ok',
+      previousMonth: '‹',
+      nextMonth: '›',
+      months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
+      monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
+      weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
+      weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
+      weekdaysAbbrev: ['S', 'M', 'T', 'W', 'T', 'F', 'S']
+    },
+
+    // events array
+    events: [],
+
+    // callback function
+    onSelect: null,
+    onOpen: null,
+    onClose: null,
+    onDraw: null
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var Datepicker = function (_Component15) {
+    _inherits(Datepicker, _Component15);
+
+    /**
+     * Construct Datepicker instance and set up overlay
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Datepicker(el, options) {
+      _classCallCheck(this, Datepicker);
+
+      var _this53 = _possibleConstructorReturn(this, (Datepicker.__proto__ || Object.getPrototypeOf(Datepicker)).call(this, Datepicker, el, options));
+
+      _this53.el.M_Datepicker = _this53;
+
+      _this53.options = $.extend({}, Datepicker.defaults, options);
+
+      // make sure i18n defaults are not lost when only few i18n option properties are passed
+      if (!!options && options.hasOwnProperty('i18n') && typeof options.i18n === 'object') {
+        _this53.options.i18n = $.extend({}, Datepicker.defaults.i18n, options.i18n);
+      }
+
+      // Remove time component from minDate and maxDate options
+      if (_this53.options.minDate) _this53.options.minDate.setHours(0, 0, 0, 0);
+      if (_this53.options.maxDate) _this53.options.maxDate.setHours(0, 0, 0, 0);
+
+      _this53.id = M.guid();
+
+      _this53._setupVariables();
+      _this53._insertHTMLIntoDOM();
+      _this53._setupModal();
+
+      _this53._setupEventHandlers();
+
+      if (!_this53.options.defaultDate) {
+        _this53.options.defaultDate = new Date(Date.parse(_this53.el.value));
+      }
+
+      var defDate = _this53.options.defaultDate;
+      if (Datepicker._isDate(defDate)) {
+        if (_this53.options.setDefaultDate) {
+          _this53.setDate(defDate, true);
+          _this53.setInputValue();
+        } else {
+          _this53.gotoDate(defDate);
+        }
+      } else {
+        _this53.gotoDate(new Date());
+      }
+
+      /**
+       * Describes open/close state of datepicker
+       * @type {Boolean}
+       */
+      _this53.isOpen = false;
+      return _this53;
+    }
+
+    _createClass(Datepicker, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this.modal.destroy();
+        $(this.modalEl).remove();
+        this.destroySelects();
+        this.el.M_Datepicker = undefined;
+      }
+    }, {
+      key: "destroySelects",
+      value: function destroySelects() {
+        var oldYearSelect = this.calendarEl.querySelector('.orig-select-year');
+        if (oldYearSelect) {
+          M.FormSelect.getInstance(oldYearSelect).destroy();
+        }
+        var oldMonthSelect = this.calendarEl.querySelector('.orig-select-month');
+        if (oldMonthSelect) {
+          M.FormSelect.getInstance(oldMonthSelect).destroy();
+        }
+      }
+    }, {
+      key: "_insertHTMLIntoDOM",
+      value: function _insertHTMLIntoDOM() {
+        if (this.options.showClearBtn) {
+          $(this.clearBtn).css({ visibility: '' });
+          this.clearBtn.innerHTML = this.options.i18n.clear;
+        }
+
+        this.doneBtn.innerHTML = this.options.i18n.done;
+        this.cancelBtn.innerHTML = this.options.i18n.cancel;
+
+        if (this.options.container) {
+          this.$modalEl.appendTo(this.options.container);
+        } else {
+          this.$modalEl.insertBefore(this.el);
+        }
+      }
+    }, {
+      key: "_setupModal",
+      value: function _setupModal() {
+        var _this54 = this;
+
+        this.modalEl.id = 'modal-' + this.id;
+        this.modal = M.Modal.init(this.modalEl, {
+          onCloseEnd: function () {
+            _this54.isOpen = false;
+          }
+        });
+      }
+    }, {
+      key: "toString",
+      value: function toString(format) {
+        var _this55 = this;
+
+        format = format || this.options.format;
+        if (!Datepicker._isDate(this.date)) {
+          return '';
+        }
+
+        var formatArray = format.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g);
+        var formattedDate = formatArray.map(function (label) {
+          if (_this55.formats[label]) {
+            return _this55.formats[label]();
+          }
+
+          return label;
+        }).join('');
+        return formattedDate;
+      }
+    }, {
+      key: "setDate",
+      value: function setDate(date, preventOnSelect) {
+        if (!date) {
+          this.date = null;
+          this._renderDateDisplay();
+          return this.draw();
+        }
+        if (typeof date === 'string') {
+          date = new Date(Date.parse(date));
+        }
+        if (!Datepicker._isDate(date)) {
+          return;
+        }
+
+        var min = this.options.minDate,
+            max = this.options.maxDate;
+
+        if (Datepicker._isDate(min) && date < min) {
+          date = min;
+        } else if (Datepicker._isDate(max) && date > max) {
+          date = max;
+        }
+
+        this.date = new Date(date.getTime());
+
+        this._renderDateDisplay();
+
+        Datepicker._setToStartOfDay(this.date);
+        this.gotoDate(this.date);
+
+        if (!preventOnSelect && typeof this.options.onSelect === 'function') {
+          this.options.onSelect.call(this, this.date);
+        }
+      }
+    }, {
+      key: "setInputValue",
+      value: function setInputValue() {
+        this.el.value = this.toString();
+        this.$el.trigger('change', { firedBy: this });
+      }
+    }, {
+      key: "_renderDateDisplay",
+      value: function _renderDateDisplay() {
+        var displayDate = Datepicker._isDate(this.date) ? this.date : new Date();
+        var i18n = this.options.i18n;
+        var day = i18n.weekdaysShort[displayDate.getDay()];
+        var month = i18n.monthsShort[displayDate.getMonth()];
+        var date = displayDate.getDate();
+        this.yearTextEl.innerHTML = displayDate.getFullYear();
+        this.dateTextEl.innerHTML = day + ", " + month + " " + date;
+      }
+
+      /**
+       * change view to a specific date
+       */
+
+    }, {
+      key: "gotoDate",
+      value: function gotoDate(date) {
+        var newCalendar = true;
+
+        if (!Datepicker._isDate(date)) {
+          return;
+        }
+
+        if (this.calendars) {
+          var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),
+              lastVisibleDate = new Date(this.calendars[this.calendars.length - 1].year, this.calendars[this.calendars.length - 1].month, 1),
+              visibleDate = date.getTime();
+          // get the end of the month
+          lastVisibleDate.setMonth(lastVisibleDate.getMonth() + 1);
+          lastVisibleDate.setDate(lastVisibleDate.getDate() - 1);
+          newCalendar = visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate;
+        }
+
+        if (newCalendar) {
+          this.calendars = [{
+            month: date.getMonth(),
+            year: date.getFullYear()
+          }];
+        }
+
+        this.adjustCalendars();
+      }
+    }, {
+      key: "adjustCalendars",
+      value: function adjustCalendars() {
+        this.calendars[0] = this.adjustCalendar(this.calendars[0]);
+        this.draw();
+      }
+    }, {
+      key: "adjustCalendar",
+      value: function adjustCalendar(calendar) {
+        if (calendar.month < 0) {
+          calendar.year -= Math.ceil(Math.abs(calendar.month) / 12);
+          calendar.month += 12;
+        }
+        if (calendar.month > 11) {
+          calendar.year += Math.floor(Math.abs(calendar.month) / 12);
+          calendar.month -= 12;
+        }
+        return calendar;
+      }
+    }, {
+      key: "nextMonth",
+      value: function nextMonth() {
+        this.calendars[0].month++;
+        this.adjustCalendars();
+      }
+    }, {
+      key: "prevMonth",
+      value: function prevMonth() {
+        this.calendars[0].month--;
+        this.adjustCalendars();
+      }
+    }, {
+      key: "render",
+      value: function render(year, month, randId) {
+        var opts = this.options,
+            now = new Date(),
+            days = Datepicker._getDaysInMonth(year, month),
+            before = new Date(year, month, 1).getDay(),
+            data = [],
+            row = [];
+        Datepicker._setToStartOfDay(now);
+        if (opts.firstDay > 0) {
+          before -= opts.firstDay;
+          if (before < 0) {
+            before += 7;
+          }
+        }
+        var previousMonth = month === 0 ? 11 : month - 1,
+            nextMonth = month === 11 ? 0 : month + 1,
+            yearOfPreviousMonth = month === 0 ? year - 1 : year,
+            yearOfNextMonth = month === 11 ? year + 1 : year,
+            daysInPreviousMonth = Datepicker._getDaysInMonth(yearOfPreviousMonth, previousMonth);
+        var cells = days + before,
+            after = cells;
+        while (after > 7) {
+          after -= 7;
+        }
+        cells += 7 - after;
+        var isWeekSelected = false;
+        for (var i = 0, r = 0; i < cells; i++) {
+          var day = new Date(year, month, 1 + (i - before)),
+              isSelected = Datepicker._isDate(this.date) ? Datepicker._compareDates(day, this.date) : false,
+              isToday = Datepicker._compareDates(day, now),
+              hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,
+              isEmpty = i < before || i >= days + before,
+              dayNumber = 1 + (i - before),
+              monthNumber = month,
+              yearNumber = year,
+              isStartRange = opts.startRange && Datepicker._compareDates(opts.startRange, day),
+              isEndRange = opts.endRange && Datepicker._compareDates(opts.endRange, day),
+              isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,
+              isDisabled = opts.minDate && day < opts.minDate || opts.maxDate && day > opts.maxDate || opts.disableWeekends && Datepicker._isWeekend(day) || opts.disableDayFn && opts.disableDayFn(day);
+
+          if (isEmpty) {
+            if (i < before) {
+              dayNumber = daysInPreviousMonth + dayNumber;
+              monthNumber = previousMonth;
+              yearNumber = yearOfPreviousMonth;
+            } else {
+              dayNumber = dayNumber - days;
+              monthNumber = nextMonth;
+              yearNumber = yearOfNextMonth;
+            }
+          }
+
+          var dayConfig = {
+            day: dayNumber,
+            month: monthNumber,
+            year: yearNumber,
+            hasEvent: hasEvent,
+            isSelected: isSelected,
+            isToday: isToday,
+            isDisabled: isDisabled,
+            isEmpty: isEmpty,
+            isStartRange: isStartRange,
+            isEndRange: isEndRange,
+            isInRange: isInRange,
+            showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths
+          };
+
+          row.push(this.renderDay(dayConfig));
+
+          if (++r === 7) {
+            data.push(this.renderRow(row, opts.isRTL, isWeekSelected));
+            row = [];
+            r = 0;
+            isWeekSelected = false;
+          }
+        }
+        return this.renderTable(opts, data, randId);
+      }
+    }, {
+      key: "renderDay",
+      value: function renderDay(opts) {
+        var arr = [];
+        var ariaSelected = 'false';
+        if (opts.isEmpty) {
+          if (opts.showDaysInNextAndPreviousMonths) {
+            arr.push('is-outside-current-month');
+            arr.push('is-selection-disabled');
+          } else {
+            return '<td class="is-empty"></td>';
+          }
+        }
+        if (opts.isDisabled) {
+          arr.push('is-disabled');
+        }
+
+        if (opts.isToday) {
+          arr.push('is-today');
+        }
+        if (opts.isSelected) {
+          arr.push('is-selected');
+          ariaSelected = 'true';
+        }
+        if (opts.hasEvent) {
+          arr.push('has-event');
+        }
+        if (opts.isInRange) {
+          arr.push('is-inrange');
+        }
+        if (opts.isStartRange) {
+          arr.push('is-startrange');
+        }
+        if (opts.isEndRange) {
+          arr.push('is-endrange');
+        }
+        return "<td data-day=\"" + opts.day + "\" class=\"" + arr.join(' ') + "\" aria-selected=\"" + ariaSelected + "\">" + ("<button class=\"datepicker-day-button\" type=\"button\" data-year=\"" + opts.year + "\" data-month=\"" + opts.month + "\" data-day=\"" + opts.day + "\">" + opts.day + "</button>") + '</td>';
+      }
+    }, {
+      key: "renderRow",
+      value: function renderRow(days, isRTL, isRowSelected) {
+        return '<tr class="datepicker-row' + (isRowSelected ? ' is-selected' : '') + '">' + (isRTL ? days.reverse() : days).join('') + '</tr>';
+      }
+    }, {
+      key: "renderTable",
+      value: function renderTable(opts, data, randId) {
+        return '<div class="datepicker-table-wrapper"><table cellpadding="0" cellspacing="0" class="datepicker-table" role="grid" aria-labelledby="' + randId + '">' + this.renderHead(opts) + this.renderBody(data) + '</table></div>';
+      }
+    }, {
+      key: "renderHead",
+      value: function renderHead(opts) {
+        var i = void 0,
+            arr = [];
+        for (i = 0; i < 7; i++) {
+          arr.push("<th scope=\"col\"><abbr title=\"" + this.renderDayName(opts, i) + "\">" + this.renderDayName(opts, i, true) + "</abbr></th>");
+        }
+        return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';
+      }
+    }, {
+      key: "renderBody",
+      value: function renderBody(rows) {
+        return '<tbody>' + rows.join('') + '</tbody>';
+      }
+    }, {
+      key: "renderTitle",
+      value: function renderTitle(instance, c, year, month, refYear, randId) {
+        var i = void 0,
+            j = void 0,
+            arr = void 0,
+            opts = this.options,
+            isMinYear = year === opts.minYear,
+            isMaxYear = year === opts.maxYear,
+            html = '<div id="' + randId + '" class="datepicker-controls" role="heading" aria-live="assertive">',
+            monthHtml = void 0,
+            yearHtml = void 0,
+            prev = true,
+            next = true;
+
+        for (arr = [], i = 0; i < 12; i++) {
+          arr.push('<option value="' + (year === refYear ? i - c : 12 + i - c) + '"' + (i === month ? ' selected="selected"' : '') + (isMinYear && i < opts.minMonth || isMaxYear && i > opts.maxMonth ? 'disabled="disabled"' : '') + '>' + opts.i18n.months[i] + '</option>');
+        }
+
+        monthHtml = '<select class="datepicker-select orig-select-month" tabindex="-1">' + arr.join('') + '</select>';
+
+        if ($.isArray(opts.yearRange)) {
+          i = opts.yearRange[0];
+          j = opts.yearRange[1] + 1;
+        } else {
+          i = year - opts.yearRange;
+          j = 1 + year + opts.yearRange;
+        }
+
+        for (arr = []; i < j && i <= opts.maxYear; i++) {
+          if (i >= opts.minYear) {
+            arr.push("<option value=\"" + i + "\" " + (i === year ? 'selected="selected"' : '') + ">" + i + "</option>");
+          }
+        }
+
+        yearHtml = "<select class=\"datepicker-select orig-select-year\" tabindex=\"-1\">" + arr.join('') + "</select>";
+
+        var leftArrow = '<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"/><path d="M0-.5h24v24H0z" fill="none"/></svg>';
+        html += "<button class=\"month-prev" + (prev ? '' : ' is-disabled') + "\" type=\"button\">" + leftArrow + "</button>";
+
+        html += '<div class="selects-container">';
+        if (opts.showMonthAfterYear) {
+          html += yearHtml + monthHtml;
+        } else {
+          html += monthHtml + yearHtml;
+        }
+        html += '</div>';
+
+        if (isMinYear && (month === 0 || opts.minMonth >= month)) {
+          prev = false;
+        }
+
+        if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {
+          next = false;
+        }
+
+        var rightArrow = '<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"/><path d="M0-.25h24v24H0z" fill="none"/></svg>';
+        html += "<button class=\"month-next" + (next ? '' : ' is-disabled') + "\" type=\"button\">" + rightArrow + "</button>";
+
+        return html += '</div>';
+      }
+
+      /**
+       * refresh the HTML
+       */
+
+    }, {
+      key: "draw",
+      value: function draw(force) {
+        if (!this.isOpen && !force) {
+          return;
+        }
+        var opts = this.options,
+            minYear = opts.minYear,
+            maxYear = opts.maxYear,
+            minMonth = opts.minMonth,
+            maxMonth = opts.maxMonth,
+            html = '',
+            randId = void 0;
+
+        if (this._y <= minYear) {
+          this._y = minYear;
+          if (!isNaN(minMonth) && this._m < minMonth) {
+            this._m = minMonth;
+          }
+        }
+        if (this._y >= maxYear) {
+          this._y = maxYear;
+          if (!isNaN(maxMonth) && this._m > maxMonth) {
+            this._m = maxMonth;
+          }
+        }
+
+        randId = 'datepicker-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2);
+
+        for (var c = 0; c < 1; c++) {
+          this._renderDateDisplay();
+          html += this.renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId);
+        }
+
+        this.destroySelects();
+
+        this.calendarEl.innerHTML = html;
+
+        // Init Materialize Select
+        var yearSelect = this.calendarEl.querySelector('.orig-select-year');
+        var monthSelect = this.calendarEl.querySelector('.orig-select-month');
+        M.FormSelect.init(yearSelect, {
+          classes: 'select-year',
+          dropdownOptions: { container: document.body, constrainWidth: false }
+        });
+        M.FormSelect.init(monthSelect, {
+          classes: 'select-month',
+          dropdownOptions: { container: document.body, constrainWidth: false }
+        });
+
+        // Add change handlers for select
+        yearSelect.addEventListener('change', this._handleYearChange.bind(this));
+        monthSelect.addEventListener('change', this._handleMonthChange.bind(this));
+
+        if (typeof this.options.onDraw === 'function') {
+          this.options.onDraw(this);
+        }
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleInputKeydownBound = this._handleInputKeydown.bind(this);
+        this._handleInputClickBound = this._handleInputClick.bind(this);
+        this._handleInputChangeBound = this._handleInputChange.bind(this);
+        this._handleCalendarClickBound = this._handleCalendarClick.bind(this);
+        this._finishSelectionBound = this._finishSelection.bind(this);
+        this._handleMonthChange = this._handleMonthChange.bind(this);
+        this._closeBound = this.close.bind(this);
+
+        this.el.addEventListener('click', this._handleInputClickBound);
+        this.el.addEventListener('keydown', this._handleInputKeydownBound);
+        this.el.addEventListener('change', this._handleInputChangeBound);
+        this.calendarEl.addEventListener('click', this._handleCalendarClickBound);
+        this.doneBtn.addEventListener('click', this._finishSelectionBound);
+        this.cancelBtn.addEventListener('click', this._closeBound);
+
+        if (this.options.showClearBtn) {
+          this._handleClearClickBound = this._handleClearClick.bind(this);
+          this.clearBtn.addEventListener('click', this._handleClearClickBound);
+        }
+      }
+    }, {
+      key: "_setupVariables",
+      value: function _setupVariables() {
+        var _this56 = this;
+
+        this.$modalEl = $(Datepicker._template);
+        this.modalEl = this.$modalEl[0];
+
+        this.calendarEl = this.modalEl.querySelector('.datepicker-calendar');
+
+        this.yearTextEl = this.modalEl.querySelector('.year-text');
+        this.dateTextEl = this.modalEl.querySelector('.date-text');
+        if (this.options.showClearBtn) {
+          this.clearBtn = this.modalEl.querySelector('.datepicker-clear');
+        }
+        this.doneBtn = this.modalEl.querySelector('.datepicker-done');
+        this.cancelBtn = this.modalEl.querySelector('.datepicker-cancel');
+
+        this.formats = {
+          d: function () {
+            return _this56.date.getDate();
+          },
+          dd: function () {
+            var d = _this56.date.getDate();
+            return (d < 10 ? '0' : '') + d;
+          },
+          ddd: function () {
+            return _this56.options.i18n.weekdaysShort[_this56.date.getDay()];
+          },
+          dddd: function () {
+            return _this56.options.i18n.weekdays[_this56.date.getDay()];
+          },
+          m: function () {
+            return _this56.date.getMonth() + 1;
+          },
+          mm: function () {
+            var m = _this56.date.getMonth() + 1;
+            return (m < 10 ? '0' : '') + m;
+          },
+          mmm: function () {
+            return _this56.options.i18n.monthsShort[_this56.date.getMonth()];
+          },
+          mmmm: function () {
+            return _this56.options.i18n.months[_this56.date.getMonth()];
+          },
+          yy: function () {
+            return ('' + _this56.date.getFullYear()).slice(2);
+          },
+          yyyy: function () {
+            return _this56.date.getFullYear();
+          }
+        };
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        this.el.removeEventListener('click', this._handleInputClickBound);
+        this.el.removeEventListener('keydown', this._handleInputKeydownBound);
+        this.el.removeEventListener('change', this._handleInputChangeBound);
+        this.calendarEl.removeEventListener('click', this._handleCalendarClickBound);
+      }
+    }, {
+      key: "_handleInputClick",
+      value: function _handleInputClick() {
+        this.open();
+      }
+    }, {
+      key: "_handleInputKeydown",
+      value: function _handleInputKeydown(e) {
+        if (e.which === M.keys.ENTER) {
+          e.preventDefault();
+          this.open();
+        }
+      }
+    }, {
+      key: "_handleCalendarClick",
+      value: function _handleCalendarClick(e) {
+        if (!this.isOpen) {
+          return;
+        }
+
+        var $target = $(e.target);
+        if (!$target.hasClass('is-disabled')) {
+          if ($target.hasClass('datepicker-day-button') && !$target.hasClass('is-empty') && !$target.parent().hasClass('is-disabled')) {
+            this.setDate(new Date(e.target.getAttribute('data-year'), e.target.getAttribute('data-month'), e.target.getAttribute('data-day')));
+            if (this.options.autoClose) {
+              this._finishSelection();
+            }
+          } else if ($target.closest('.month-prev').length) {
+            this.prevMonth();
+          } else if ($target.closest('.month-next').length) {
+            this.nextMonth();
+          }
+        }
+      }
+    }, {
+      key: "_handleClearClick",
+      value: function _handleClearClick() {
+        this.date = null;
+        this.setInputValue();
+        this.close();
+      }
+    }, {
+      key: "_handleMonthChange",
+      value: function _handleMonthChange(e) {
+        this.gotoMonth(e.target.value);
+      }
+    }, {
+      key: "_handleYearChange",
+      value: function _handleYearChange(e) {
+        this.gotoYear(e.target.value);
+      }
+
+      /**
+       * change view to a specific month (zero-index, e.g. 0: January)
+       */
+
+    }, {
+      key: "gotoMonth",
+      value: function gotoMonth(month) {
+        if (!isNaN(month)) {
+          this.calendars[0].month = parseInt(month, 10);
+          this.adjustCalendars();
+        }
+      }
+
+      /**
+       * change view to a specific full year (e.g. "2012")
+       */
+
+    }, {
+      key: "gotoYear",
+      value: function gotoYear(year) {
+        if (!isNaN(year)) {
+          this.calendars[0].year = parseInt(year, 10);
+          this.adjustCalendars();
+        }
+      }
+    }, {
+      key: "_handleInputChange",
+      value: function _handleInputChange(e) {
+        var date = void 0;
+
+        // Prevent change event from being fired when triggered by the plugin
+        if (e.firedBy === this) {
+          return;
+        }
+        if (this.options.parse) {
+          date = this.options.parse(this.el.value, this.options.format);
+        } else {
+          date = new Date(Date.parse(this.el.value));
+        }
+
+        if (Datepicker._isDate(date)) {
+          this.setDate(date);
+        }
+      }
+    }, {
+      key: "renderDayName",
+      value: function renderDayName(opts, day, abbr) {
+        day += opts.firstDay;
+        while (day >= 7) {
+          day -= 7;
+        }
+        return abbr ? opts.i18n.weekdaysAbbrev[day] : opts.i18n.weekdays[day];
+      }
+
+      /**
+       * Set input value to the selected date and close Datepicker
+       */
+
+    }, {
+      key: "_finishSelection",
+      value: function _finishSelection() {
+        this.setInputValue();
+        this.close();
+      }
+
+      /**
+       * Open Datepicker
+       */
+
+    }, {
+      key: "open",
+      value: function open() {
+        if (this.isOpen) {
+          return;
+        }
+
+        this.isOpen = true;
+        if (typeof this.options.onOpen === 'function') {
+          this.options.onOpen.call(this);
+        }
+        this.draw();
+        this.modal.open();
+        return this;
+      }
+
+      /**
+       * Close Datepicker
+       */
+
+    }, {
+      key: "close",
+      value: function close() {
+        if (!this.isOpen) {
+          return;
+        }
+
+        this.isOpen = false;
+        if (typeof this.options.onClose === 'function') {
+          this.options.onClose.call(this);
+        }
+        this.modal.close();
+        return this;
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Datepicker.__proto__ || Object.getPrototypeOf(Datepicker), "init", this).call(this, this, els, options);
+      }
+    }, {
+      key: "_isDate",
+      value: function _isDate(obj) {
+        return (/Date/.test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime())
+        );
+      }
+    }, {
+      key: "_isWeekend",
+      value: function _isWeekend(date) {
+        var day = date.getDay();
+        return day === 0 || day === 6;
+      }
+    }, {
+      key: "_setToStartOfDay",
+      value: function _setToStartOfDay(date) {
+        if (Datepicker._isDate(date)) date.setHours(0, 0, 0, 0);
+      }
+    }, {
+      key: "_getDaysInMonth",
+      value: function _getDaysInMonth(year, month) {
+        return [31, Datepicker._isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
+      }
+    }, {
+      key: "_isLeapYear",
+      value: function _isLeapYear(year) {
+        // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951
+        return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
+      }
+    }, {
+      key: "_compareDates",
+      value: function _compareDates(a, b) {
+        // weak date comparison (use setToStartOfDay(date) to ensure correct result)
+        return a.getTime() === b.getTime();
+      }
+    }, {
+      key: "_setToStartOfDay",
+      value: function _setToStartOfDay(date) {
+        if (Datepicker._isDate(date)) date.setHours(0, 0, 0, 0);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Datepicker;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Datepicker;
+  }(Component);
+
+  Datepicker._template = ['<div class= "modal datepicker-modal">', '<div class="modal-content datepicker-container">', '<div class="datepicker-date-display">', '<span class="year-text"></span>', '<span class="date-text"></span>', '</div>', '<div class="datepicker-calendar-container">', '<div class="datepicker-calendar"></div>', '<div class="datepicker-footer">', '<button class="btn-flat datepicker-clear waves-effect" style="visibility: hidden;" type="button"></button>', '<div class="confirmation-btns">', '<button class="btn-flat datepicker-cancel waves-effect" type="button"></button>', '<button class="btn-flat datepicker-done waves-effect" type="button"></button>', '</div>', '</div>', '</div>', '</div>', '</div>'].join('');
+
+  M.Datepicker = Datepicker;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Datepicker, 'datepicker', 'M_Datepicker');
+  }
+})(cash);
+;(function ($) {
+  'use strict';
+
+  var _defaults = {
+    dialRadius: 135,
+    outerRadius: 105,
+    innerRadius: 70,
+    tickRadius: 20,
+    duration: 350,
+    container: null,
+    defaultTime: 'now', // default time, 'now' or '13:14' e.g.
+    fromNow: 0, // Millisecond offset from the defaultTime
+    showClearBtn: false,
+
+    // internationalization
+    i18n: {
+      cancel: 'Cancel',
+      clear: 'Clear',
+      done: 'Ok'
+    },
+
+    autoClose: false, // auto close when minute is selected
+    twelveHour: true, // change to 12 hour AM/PM clock from 24 hour
+    vibrate: true, // vibrate the device when dragging clock hand
+
+    // Callbacks
+    onOpenStart: null,
+    onOpenEnd: null,
+    onCloseStart: null,
+    onCloseEnd: null,
+    onSelect: null
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var Timepicker = function (_Component16) {
+    _inherits(Timepicker, _Component16);
+
+    function Timepicker(el, options) {
+      _classCallCheck(this, Timepicker);
+
+      var _this57 = _possibleConstructorReturn(this, (Timepicker.__proto__ || Object.getPrototypeOf(Timepicker)).call(this, Timepicker, el, options));
+
+      _this57.el.M_Timepicker = _this57;
+
+      _this57.options = $.extend({}, Timepicker.defaults, options);
+
+      _this57.id = M.guid();
+      _this57._insertHTMLIntoDOM();
+      _this57._setupModal();
+      _this57._setupVariables();
+      _this57._setupEventHandlers();
+
+      _this57._clockSetup();
+      _this57._pickerSetup();
+      return _this57;
+    }
+
+    _createClass(Timepicker, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this.modal.destroy();
+        $(this.modalEl).remove();
+        this.el.M_Timepicker = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleInputKeydownBound = this._handleInputKeydown.bind(this);
+        this._handleInputClickBound = this._handleInputClick.bind(this);
+        this._handleClockClickStartBound = this._handleClockClickStart.bind(this);
+        this._handleDocumentClickMoveBound = this._handleDocumentClickMove.bind(this);
+        this._handleDocumentClickEndBound = this._handleDocumentClickEnd.bind(this);
+
+        this.el.addEventListener('click', this._handleInputClickBound);
+        this.el.addEventListener('keydown', this._handleInputKeydownBound);
+        this.plate.addEventListener('mousedown', this._handleClockClickStartBound);
+        this.plate.addEventListener('touchstart', this._handleClockClickStartBound);
+
+        $(this.spanHours).on('click', this.showView.bind(this, 'hours'));
+        $(this.spanMinutes).on('click', this.showView.bind(this, 'minutes'));
+      }
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        this.el.removeEventListener('click', this._handleInputClickBound);
+        this.el.removeEventListener('keydown', this._handleInputKeydownBound);
+      }
+    }, {
+      key: "_handleInputClick",
+      value: function _handleInputClick() {
+        this.open();
+      }
+    }, {
+      key: "_handleInputKeydown",
+      value: function _handleInputKeydown(e) {
+        if (e.which === M.keys.ENTER) {
+          e.preventDefault();
+          this.open();
+        }
+      }
+    }, {
+      key: "_handleClockClickStart",
+      value: function _handleClockClickStart(e) {
+        e.preventDefault();
+        var clockPlateBR = this.plate.getBoundingClientRect();
+        var offset = { x: clockPlateBR.left, y: clockPlateBR.top };
+
+        this.x0 = offset.x + this.options.dialRadius;
+        this.y0 = offset.y + this.options.dialRadius;
+        this.moved = false;
+        var clickPos = Timepicker._Pos(e);
+        this.dx = clickPos.x - this.x0;
+        this.dy = clickPos.y - this.y0;
+
+        // Set clock hands
+        this.setHand(this.dx, this.dy, false);
+
+        // Mousemove on document
+        document.addEventListener('mousemove', this._handleDocumentClickMoveBound);
+        document.addEventListener('touchmove', this._handleDocumentClickMoveBound);
+
+        // Mouseup on document
+        document.addEventListener('mouseup', this._handleDocumentClickEndBound);
+        document.addEventListener('touchend', this._handleDocumentClickEndBound);
+      }
+    }, {
+      key: "_handleDocumentClickMove",
+      value: function _handleDocumentClickMove(e) {
+        e.preventDefault();
+        var clickPos = Timepicker._Pos(e);
+        var x = clickPos.x - this.x0;
+        var y = clickPos.y - this.y0;
+        this.moved = true;
+        this.setHand(x, y, false, true);
+      }
+    }, {
+      key: "_handleDocumentClickEnd",
+      value: function _handleDocumentClickEnd(e) {
+        var _this58 = this;
+
+        e.preventDefault();
+        document.removeEventListener('mouseup', this._handleDocumentClickEndBound);
+        document.removeEventListener('touchend', this._handleDocumentClickEndBound);
+        var clickPos = Timepicker._Pos(e);
+        var x = clickPos.x - this.x0;
+        var y = clickPos.y - this.y0;
+        if (this.moved && x === this.dx && y === this.dy) {
+          this.setHand(x, y);
+        }
+
+        if (this.currentView === 'hours') {
+          this.showView('minutes', this.options.duration / 2);
+        } else if (this.options.autoClose) {
+          $(this.minutesView).addClass('timepicker-dial-out');
+          setTimeout(function () {
+            _this58.done();
+          }, this.options.duration / 2);
+        }
+
+        if (typeof this.options.onSelect === 'function') {
+          this.options.onSelect.call(this, this.hours, this.minutes);
+        }
+
+        // Unbind mousemove event
+        document.removeEventListener('mousemove', this._handleDocumentClickMoveBound);
+        document.removeEventListener('touchmove', this._handleDocumentClickMoveBound);
+      }
+    }, {
+      key: "_insertHTMLIntoDOM",
+      value: function _insertHTMLIntoDOM() {
+        this.$modalEl = $(Timepicker._template);
+        this.modalEl = this.$modalEl[0];
+        this.modalEl.id = 'modal-' + this.id;
+
+        // Append popover to input by default
+        var containerEl = document.querySelector(this.options.container);
+        if (this.options.container && !!containerEl) {
+          this.$modalEl.appendTo(containerEl);
+        } else {
+          this.$modalEl.insertBefore(this.el);
+        }
+      }
+    }, {
+      key: "_setupModal",
+      value: function _setupModal() {
+        var _this59 = this;
+
+        this.modal = M.Modal.init(this.modalEl, {
+          onOpenStart: this.options.onOpenStart,
+          onOpenEnd: this.options.onOpenEnd,
+          onCloseStart: this.options.onCloseStart,
+          onCloseEnd: function () {
+            if (typeof _this59.options.onCloseEnd === 'function') {
+              _this59.options.onCloseEnd.call(_this59);
+            }
+            _this59.isOpen = false;
+          }
+        });
+      }
+    }, {
+      key: "_setupVariables",
+      value: function _setupVariables() {
+        this.currentView = 'hours';
+        this.vibrate = navigator.vibrate ? 'vibrate' : navigator.webkitVibrate ? 'webkitVibrate' : null;
+
+        this._canvas = this.modalEl.querySelector('.timepicker-canvas');
+        this.plate = this.modalEl.querySelector('.timepicker-plate');
+
+        this.hoursView = this.modalEl.querySelector('.timepicker-hours');
+        this.minutesView = this.modalEl.querySelector('.timepicker-minutes');
+        this.spanHours = this.modalEl.querySelector('.timepicker-span-hours');
+        this.spanMinutes = this.modalEl.querySelector('.timepicker-span-minutes');
+        this.spanAmPm = this.modalEl.querySelector('.timepicker-span-am-pm');
+        this.footer = this.modalEl.querySelector('.timepicker-footer');
+        this.amOrPm = 'PM';
+      }
+    }, {
+      key: "_pickerSetup",
+      value: function _pickerSetup() {
+        var $clearBtn = $("<button class=\"btn-flat timepicker-clear waves-effect\" style=\"visibility: hidden;\" type=\"button\" tabindex=\"" + (this.options.twelveHour ? '3' : '1') + "\">" + this.options.i18n.clear + "</button>").appendTo(this.footer).on('click', this.clear.bind(this));
+        if (this.options.showClearBtn) {
+          $clearBtn.css({ visibility: '' });
+        }
+
+        var confirmationBtnsContainer = $('<div class="confirmation-btns"></div>');
+        $('<button class="btn-flat timepicker-close waves-effect" type="button" tabindex="' + (this.options.twelveHour ? '3' : '1') + '">' + this.options.i18n.cancel + '</button>').appendTo(confirmationBtnsContainer).on('click', this.close.bind(this));
+        $('<button class="btn-flat timepicker-close waves-effect" type="button" tabindex="' + (this.options.twelveHour ? '3' : '1') + '">' + this.options.i18n.done + '</button>').appendTo(confirmationBtnsContainer).on('click', this.done.bind(this));
+        confirmationBtnsContainer.appendTo(this.footer);
+      }
+    }, {
+      key: "_clockSetup",
+      value: function _clockSetup() {
+        if (this.options.twelveHour) {
+          this.$amBtn = $('<div class="am-btn">AM</div>');
+          this.$pmBtn = $('<div class="pm-btn">PM</div>');
+          this.$amBtn.on('click', this._handleAmPmClick.bind(this)).appendTo(this.spanAmPm);
+          this.$pmBtn.on('click', this._handleAmPmClick.bind(this)).appendTo(this.spanAmPm);
+        }
+
+        this._buildHoursView();
+        this._buildMinutesView();
+        this._buildSVGClock();
+      }
+    }, {
+      key: "_buildSVGClock",
+      value: function _buildSVGClock() {
+        // Draw clock hands and others
+        var dialRadius = this.options.dialRadius;
+        var tickRadius = this.options.tickRadius;
+        var diameter = dialRadius * 2;
+
+        var svg = Timepicker._createSVGEl('svg');
+        svg.setAttribute('class', 'timepicker-svg');
+        svg.setAttribute('width', diameter);
+        svg.setAttribute('height', diameter);
+        var g = Timepicker._createSVGEl('g');
+        g.setAttribute('transform', 'translate(' + dialRadius + ',' + dialRadius + ')');
+        var bearing = Timepicker._createSVGEl('circle');
+        bearing.setAttribute('class', 'timepicker-canvas-bearing');
+        bearing.setAttribute('cx', 0);
+        bearing.setAttribute('cy', 0);
+        bearing.setAttribute('r', 4);
+        var hand = Timepicker._createSVGEl('line');
+        hand.setAttribute('x1', 0);
+        hand.setAttribute('y1', 0);
+        var bg = Timepicker._createSVGEl('circle');
+        bg.setAttribute('class', 'timepicker-canvas-bg');
+        bg.setAttribute('r', tickRadius);
+        g.appendChild(hand);
+        g.appendChild(bg);
+        g.appendChild(bearing);
+        svg.appendChild(g);
+        this._canvas.appendChild(svg);
+
+        this.hand = hand;
+        this.bg = bg;
+        this.bearing = bearing;
+        this.g = g;
+      }
+    }, {
+      key: "_buildHoursView",
+      value: function _buildHoursView() {
+        var $tick = $('<div class="timepicker-tick"></div>');
+        // Hours view
+        if (this.options.twelveHour) {
+          for (var i = 1; i < 13; i += 1) {
+            var tick = $tick.clone();
+            var radian = i / 6 * Math.PI;
+            var radius = this.options.outerRadius;
+            tick.css({
+              left: this.options.dialRadius + Math.sin(radian) * radius - this.options.tickRadius + 'px',
+              top: this.options.dialRadius - Math.cos(radian) * radius - this.options.tickRadius + 'px'
+            });
+            tick.html(i === 0 ? '00' : i);
+            this.hoursView.appendChild(tick[0]);
+            // tick.on(mousedownEvent, mousedown);
+          }
+        } else {
+          for (var _i2 = 0; _i2 < 24; _i2 += 1) {
+            var _tick = $tick.clone();
+            var _radian = _i2 / 6 * Math.PI;
+            var inner = _i2 > 0 && _i2 < 13;
+            var _radius = inner ? this.options.innerRadius : this.options.outerRadius;
+            _tick.css({
+              left: this.options.dialRadius + Math.sin(_radian) * _radius - this.options.tickRadius + 'px',
+              top: this.options.dialRadius - Math.cos(_radian) * _radius - this.options.tickRadius + 'px'
+            });
+            _tick.html(_i2 === 0 ? '00' : _i2);
+            this.hoursView.appendChild(_tick[0]);
+            // tick.on(mousedownEvent, mousedown);
+          }
+        }
+      }
+    }, {
+      key: "_buildMinutesView",
+      value: function _buildMinutesView() {
+        var $tick = $('<div class="timepicker-tick"></div>');
+        // Minutes view
+        for (var i = 0; i < 60; i += 5) {
+          var tick = $tick.clone();
+          var radian = i / 30 * Math.PI;
+          tick.css({
+            left: this.options.dialRadius + Math.sin(radian) * this.options.outerRadius - this.options.tickRadius + 'px',
+            top: this.options.dialRadius - Math.cos(radian) * this.options.outerRadius - this.options.tickRadius + 'px'
+          });
+          tick.html(Timepicker._addLeadingZero(i));
+          this.minutesView.appendChild(tick[0]);
+        }
+      }
+    }, {
+      key: "_handleAmPmClick",
+      value: function _handleAmPmClick(e) {
+        var $btnClicked = $(e.target);
+        this.amOrPm = $btnClicked.hasClass('am-btn') ? 'AM' : 'PM';
+        this._updateAmPmView();
+      }
+    }, {
+      key: "_updateAmPmView",
+      value: function _updateAmPmView() {
+        if (this.options.twelveHour) {
+          this.$amBtn.toggleClass('text-primary', this.amOrPm === 'AM');
+          this.$pmBtn.toggleClass('text-primary', this.amOrPm === 'PM');
+        }
+      }
+    }, {
+      key: "_updateTimeFromInput",
+      value: function _updateTimeFromInput() {
+        // Get the time
+        var value = ((this.el.value || this.options.defaultTime || '') + '').split(':');
+        if (this.options.twelveHour && !(typeof value[1] === 'undefined')) {
+          if (value[1].toUpperCase().indexOf('AM') > 0) {
+            this.amOrPm = 'AM';
+          } else {
+            this.amOrPm = 'PM';
+          }
+          value[1] = value[1].replace('AM', '').replace('PM', '');
+        }
+        if (value[0] === 'now') {
+          var now = new Date(+new Date() + this.options.fromNow);
+          value = [now.getHours(), now.getMinutes()];
+          if (this.options.twelveHour) {
+            this.amOrPm = value[0] >= 12 && value[0] < 24 ? 'PM' : 'AM';
+          }
+        }
+        this.hours = +value[0] || 0;
+        this.minutes = +value[1] || 0;
+        this.spanHours.innerHTML = this.hours;
+        this.spanMinutes.innerHTML = Timepicker._addLeadingZero(this.minutes);
+
+        this._updateAmPmView();
+      }
+    }, {
+      key: "showView",
+      value: function showView(view, delay) {
+        if (view === 'minutes' && $(this.hoursView).css('visibility') === 'visible') {
+          // raiseCallback(this.options.beforeHourSelect);
+        }
+        var isHours = view === 'hours',
+            nextView = isHours ? this.hoursView : this.minutesView,
+            hideView = isHours ? this.minutesView : this.hoursView;
+        this.currentView = view;
+
+        $(this.spanHours).toggleClass('text-primary', isHours);
+        $(this.spanMinutes).toggleClass('text-primary', !isHours);
+
+        // Transition view
+        hideView.classList.add('timepicker-dial-out');
+        $(nextView).css('visibility', 'visible').removeClass('timepicker-dial-out');
+
+        // Reset clock hand
+        this.resetClock(delay);
+
+        // After transitions ended
+        clearTimeout(this.toggleViewTimer);
+        this.toggleViewTimer = setTimeout(function () {
+          $(hideView).css('visibility', 'hidden');
+        }, this.options.duration);
+      }
+    }, {
+      key: "resetClock",
+      value: function resetClock(delay) {
+        var view = this.currentView,
+            value = this[view],
+            isHours = view === 'hours',
+            unit = Math.PI / (isHours ? 6 : 30),
+            radian = value * unit,
+            radius = isHours && value > 0 && value < 13 ? this.options.innerRadius : this.options.outerRadius,
+            x = Math.sin(radian) * radius,
+            y = -Math.cos(radian) * radius,
+            self = this;
+
+        if (delay) {
+          $(this.canvas).addClass('timepicker-canvas-out');
+          setTimeout(function () {
+            $(self.canvas).removeClass('timepicker-canvas-out');
+            self.setHand(x, y);
+          }, delay);
+        } else {
+          this.setHand(x, y);
+        }
+      }
+    }, {
+      key: "setHand",
+      value: function setHand(x, y, roundBy5) {
+        var _this60 = this;
+
+        var radian = Math.atan2(x, -y),
+            isHours = this.currentView === 'hours',
+            unit = Math.PI / (isHours || roundBy5 ? 6 : 30),
+            z = Math.sqrt(x * x + y * y),
+            inner = isHours && z < (this.options.outerRadius + this.options.innerRadius) / 2,
+            radius = inner ? this.options.innerRadius : this.options.outerRadius;
+
+        if (this.options.twelveHour) {
+          radius = this.options.outerRadius;
+        }
+
+        // Radian should in range [0, 2PI]
+        if (radian < 0) {
+          radian = Math.PI * 2 + radian;
+        }
+
+        // Get the round value
+        var value = Math.round(radian / unit);
+
+        // Get the round radian
+        radian = value * unit;
+
+        // Correct the hours or minutes
+        if (this.options.twelveHour) {
+          if (isHours) {
+            if (value === 0) value = 12;
+          } else {
+            if (roundBy5) value *= 5;
+            if (value === 60) value = 0;
+          }
+        } else {
+          if (isHours) {
+            if (value === 12) {
+              value = 0;
+            }
+            value = inner ? value === 0 ? 12 : value : value === 0 ? 0 : value + 12;
+          } else {
+            if (roundBy5) {
+              value *= 5;
+            }
+            if (value === 60) {
+              value = 0;
+            }
+          }
+        }
+
+        // Once hours or minutes changed, vibrate the device
+        if (this[this.currentView] !== value) {
+          if (this.vibrate && this.options.vibrate) {
+            // Do not vibrate too frequently
+            if (!this.vibrateTimer) {
+              navigator[this.vibrate](10);
+              this.vibrateTimer = setTimeout(function () {
+                _this60.vibrateTimer = null;
+              }, 100);
+            }
+          }
+        }
+
+        this[this.currentView] = value;
+        if (isHours) {
+          this['spanHours'].innerHTML = value;
+        } else {
+          this['spanMinutes'].innerHTML = Timepicker._addLeadingZero(value);
+        }
+
+        // Set clock hand and others' position
+        var cx1 = Math.sin(radian) * (radius - this.options.tickRadius),
+            cy1 = -Math.cos(radian) * (radius - this.options.tickRadius),
+            cx2 = Math.sin(radian) * radius,
+            cy2 = -Math.cos(radian) * radius;
+        this.hand.setAttribute('x2', cx1);
+        this.hand.setAttribute('y2', cy1);
+        this.bg.setAttribute('cx', cx2);
+        this.bg.setAttribute('cy', cy2);
+      }
+    }, {
+      key: "open",
+      value: function open() {
+        if (this.isOpen) {
+          return;
+        }
+
+        this.isOpen = true;
+        this._updateTimeFromInput();
+        this.showView('hours');
+
+        this.modal.open();
+      }
+    }, {
+      key: "close",
+      value: function close() {
+        if (!this.isOpen) {
+          return;
+        }
+
+        this.isOpen = false;
+        this.modal.close();
+      }
+
+      /**
+       * Finish timepicker selection.
+       */
+
+    }, {
+      key: "done",
+      value: function done(e, clearValue) {
+        // Set input value
+        var last = this.el.value;
+        var value = clearValue ? '' : Timepicker._addLeadingZero(this.hours) + ':' + Timepicker._addLeadingZero(this.minutes);
+        this.time = value;
+        if (!clearValue && this.options.twelveHour) {
+          value = value + " " + this.amOrPm;
+        }
+        this.el.value = value;
+
+        // Trigger change event
+        if (value !== last) {
+          this.$el.trigger('change');
+        }
+
+        this.close();
+        this.el.focus();
+      }
+    }, {
+      key: "clear",
+      value: function clear() {
+        this.done(null, true);
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Timepicker.__proto__ || Object.getPrototypeOf(Timepicker), "init", this).call(this, this, els, options);
+      }
+    }, {
+      key: "_addLeadingZero",
+      value: function _addLeadingZero(num) {
+        return (num < 10 ? '0' : '') + num;
+      }
+    }, {
+      key: "_createSVGEl",
+      value: function _createSVGEl(name) {
+        var svgNS = 'http://www.w3.org/2000/svg';
+        return document.createElementNS(svgNS, name);
+      }
+
+      /**
+       * @typedef {Object} Point
+       * @property {number} x The X Coordinate
+       * @property {number} y The Y Coordinate
+       */
+
+      /**
+       * Get x position of mouse or touch event
+       * @param {Event} e
+       * @return {Point} x and y location
+       */
+
+    }, {
+      key: "_Pos",
+      value: function _Pos(e) {
+        if (e.targetTouches && e.targetTouches.length >= 1) {
+          return { x: e.targetTouches[0].clientX, y: e.targetTouches[0].clientY };
+        }
+        // mouse event
+        return { x: e.clientX, y: e.clientY };
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Timepicker;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Timepicker;
+  }(Component);
+
+  Timepicker._template = ['<div class= "modal timepicker-modal">', '<div class="modal-content timepicker-container">', '<div class="timepicker-digital-display">', '<div class="timepicker-text-container">', '<div class="timepicker-display-column">', '<span class="timepicker-span-hours text-primary"></span>', ':', '<span class="timepicker-span-minutes"></span>', '</div>', '<div class="timepicker-display-column timepicker-display-am-pm">', '<div class="timepicker-span-am-pm"></div>', '</div>', '</div>', '</div>', '<div class="timepicker-analog-display">', '<div class="timepicker-plate">', '<div class="timepicker-canvas"></div>', '<div class="timepicker-dial timepicker-hours"></div>', '<div class="timepicker-dial timepicker-minutes timepicker-dial-out"></div>', '</div>', '<div class="timepicker-footer"></div>', '</div>', '</div>', '</div>'].join('');
+
+  M.Timepicker = Timepicker;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Timepicker, 'timepicker', 'M_Timepicker');
+  }
+})(cash);
+;(function ($) {
+  'use strict';
+
+  var _defaults = {};
+
+  /**
+   * @class
+   *
+   */
+
+  var CharacterCounter = function (_Component17) {
+    _inherits(CharacterCounter, _Component17);
+
+    /**
+     * Construct CharacterCounter instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function CharacterCounter(el, options) {
+      _classCallCheck(this, CharacterCounter);
+
+      var _this61 = _possibleConstructorReturn(this, (CharacterCounter.__proto__ || Object.getPrototypeOf(CharacterCounter)).call(this, CharacterCounter, el, options));
+
+      _this61.el.M_CharacterCounter = _this61;
+
+      /**
+       * Options for the character counter
+       */
+      _this61.options = $.extend({}, CharacterCounter.defaults, options);
+
+      _this61.isInvalid = false;
+      _this61.isValidLength = false;
+      _this61._setupCounter();
+      _this61._setupEventHandlers();
+      return _this61;
+    }
+
+    _createClass(CharacterCounter, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this.el.CharacterCounter = undefined;
+        this._removeCounter();
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleUpdateCounterBound = this.updateCounter.bind(this);
+
+        this.el.addEventListener('focus', this._handleUpdateCounterBound, true);
+        this.el.addEventListener('input', this._handleUpdateCounterBound, true);
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        this.el.removeEventListener('focus', this._handleUpdateCounterBound, true);
+        this.el.removeEventListener('input', this._handleUpdateCounterBound, true);
+      }
+
+      /**
+       * Setup counter element
+       */
+
+    }, {
+      key: "_setupCounter",
+      value: function _setupCounter() {
+        this.counterEl = document.createElement('span');
+        $(this.counterEl).addClass('character-counter').css({
+          float: 'right',
+          'font-size': '12px',
+          height: 1
+        });
+
+        this.$el.parent().append(this.counterEl);
+      }
+
+      /**
+       * Remove counter element
+       */
+
+    }, {
+      key: "_removeCounter",
+      value: function _removeCounter() {
+        $(this.counterEl).remove();
+      }
+
+      /**
+       * Update counter
+       */
+
+    }, {
+      key: "updateCounter",
+      value: function updateCounter() {
+        var maxLength = +this.$el.attr('data-length'),
+            actualLength = this.el.value.length;
+        this.isValidLength = actualLength <= maxLength;
+        var counterString = actualLength;
+
+        if (maxLength) {
+          counterString += '/' + maxLength;
+          this._validateInput();
+        }
+
+        $(this.counterEl).html(counterString);
+      }
+
+      /**
+       * Add validation classes
+       */
+
+    }, {
+      key: "_validateInput",
+      value: function _validateInput() {
+        if (this.isValidLength && this.isInvalid) {
+          this.isInvalid = false;
+          this.$el.removeClass('invalid');
+        } else if (!this.isValidLength && !this.isInvalid) {
+          this.isInvalid = true;
+          this.$el.removeClass('valid');
+          this.$el.addClass('invalid');
+        }
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(CharacterCounter.__proto__ || Object.getPrototypeOf(CharacterCounter), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_CharacterCounter;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return CharacterCounter;
+  }(Component);
+
+  M.CharacterCounter = CharacterCounter;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(CharacterCounter, 'characterCounter', 'M_CharacterCounter');
+  }
+})(cash);
+;(function ($) {
+  'use strict';
+
+  var _defaults = {
+    duration: 200, // ms
+    dist: -100, // zoom scale TODO: make this more intuitive as an option
+    shift: 0, // spacing for center image
+    padding: 0, // Padding between non center items
+    numVisible: 5, // Number of visible items in carousel
+    fullWidth: false, // Change to full width styles
+    indicators: false, // Toggle indicators
+    noWrap: false, // Don't wrap around and cycle through items.
+    onCycleTo: null // Callback for when a new slide is cycled to.
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var Carousel = function (_Component18) {
+    _inherits(Carousel, _Component18);
+
+    /**
+     * Construct Carousel instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Carousel(el, options) {
+      _classCallCheck(this, Carousel);
+
+      var _this62 = _possibleConstructorReturn(this, (Carousel.__proto__ || Object.getPrototypeOf(Carousel)).call(this, Carousel, el, options));
+
+      _this62.el.M_Carousel = _this62;
+
+      /**
+       * Options for the carousel
+       * @member Carousel#options
+       * @prop {Number} duration
+       * @prop {Number} dist
+       * @prop {Number} shift
+       * @prop {Number} padding
+       * @prop {Number} numVisible
+       * @prop {Boolean} fullWidth
+       * @prop {Boolean} indicators
+       * @prop {Boolean} noWrap
+       * @prop {Function} onCycleTo
+       */
+      _this62.options = $.extend({}, Carousel.defaults, options);
+
+      // Setup
+      _this62.hasMultipleSlides = _this62.$el.find('.carousel-item').length > 1;
+      _this62.showIndicators = _this62.options.indicators && _this62.hasMultipleSlides;
+      _this62.noWrap = _this62.options.noWrap || !_this62.hasMultipleSlides;
+      _this62.pressed = false;
+      _this62.dragged = false;
+      _this62.offset = _this62.target = 0;
+      _this62.images = [];
+      _this62.itemWidth = _this62.$el.find('.carousel-item').first().innerWidth();
+      _this62.itemHeight = _this62.$el.find('.carousel-item').first().innerHeight();
+      _this62.dim = _this62.itemWidth * 2 + _this62.options.padding || 1; // Make sure dim is non zero for divisions.
+      _this62._autoScrollBound = _this62._autoScroll.bind(_this62);
+      _this62._trackBound = _this62._track.bind(_this62);
+
+      // Full Width carousel setup
+      if (_this62.options.fullWidth) {
+        _this62.options.dist = 0;
+        _this62._setCarouselHeight();
+
+        // Offset fixed items when indicators.
+        if (_this62.showIndicators) {
+          _this62.$el.find('.carousel-fixed-item').addClass('with-indicators');
+        }
+      }
+
+      // Iterate through slides
+      _this62.$indicators = $('<ul class="indicators"></ul>');
+      _this62.$el.find('.carousel-item').each(function (el, i) {
+        _this62.images.push(el);
+        if (_this62.showIndicators) {
+          var $indicator = $('<li class="indicator-item"></li>');
+
+          // Add active to first by default.
+          if (i === 0) {
+            $indicator[0].classList.add('active');
+          }
+
+          _this62.$indicators.append($indicator);
+        }
+      });
+      if (_this62.showIndicators) {
+        _this62.$el.append(_this62.$indicators);
+      }
+      _this62.count = _this62.images.length;
+
+      // Cap numVisible at count
+      _this62.options.numVisible = Math.min(_this62.count, _this62.options.numVisible);
+
+      // Setup cross browser string
+      _this62.xform = 'transform';
+      ['webkit', 'Moz', 'O', 'ms'].every(function (prefix) {
+        var e = prefix + 'Transform';
+        if (typeof document.body.style[e] !== 'undefined') {
+          _this62.xform = e;
+          return false;
+        }
+        return true;
+      });
+
+      _this62._setupEventHandlers();
+      _this62._scroll(_this62.offset);
+      return _this62;
+    }
+
+    _createClass(Carousel, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this.el.M_Carousel = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        var _this63 = this;
+
+        this._handleCarouselTapBound = this._handleCarouselTap.bind(this);
+        this._handleCarouselDragBound = this._handleCarouselDrag.bind(this);
+        this._handleCarouselReleaseBound = this._handleCarouselRelease.bind(this);
+        this._handleCarouselClickBound = this._handleCarouselClick.bind(this);
+
+        if (typeof window.ontouchstart !== 'undefined') {
+          this.el.addEventListener('touchstart', this._handleCarouselTapBound);
+          this.el.addEventListener('touchmove', this._handleCarouselDragBound);
+          this.el.addEventListener('touchend', this._handleCarouselReleaseBound);
+        }
+
+        this.el.addEventListener('mousedown', this._handleCarouselTapBound);
+        this.el.addEventListener('mousemove', this._handleCarouselDragBound);
+        this.el.addEventListener('mouseup', this._handleCarouselReleaseBound);
+        this.el.addEventListener('mouseleave', this._handleCarouselReleaseBound);
+        this.el.addEventListener('click', this._handleCarouselClickBound);
+
+        if (this.showIndicators && this.$indicators) {
+          this._handleIndicatorClickBound = this._handleIndicatorClick.bind(this);
+          this.$indicators.find('.indicator-item').each(function (el, i) {
+            el.addEventListener('click', _this63._handleIndicatorClickBound);
+          });
+        }
+
+        // Resize
+        var throttledResize = M.throttle(this._handleResize, 200);
+        this._handleThrottledResizeBound = throttledResize.bind(this);
+
+        window.addEventListener('resize', this._handleThrottledResizeBound);
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        var _this64 = this;
+
+        if (typeof window.ontouchstart !== 'undefined') {
+          this.el.removeEventListener('touchstart', this._handleCarouselTapBound);
+          this.el.removeEventListener('touchmove', this._handleCarouselDragBound);
+          this.el.removeEventListener('touchend', this._handleCarouselReleaseBound);
+        }
+        this.el.removeEventListener('mousedown', this._handleCarouselTapBound);
+        this.el.removeEventListener('mousemove', this._handleCarouselDragBound);
+        this.el.removeEventListener('mouseup', this._handleCarouselReleaseBound);
+        this.el.removeEventListener('mouseleave', this._handleCarouselReleaseBound);
+        this.el.removeEventListener('click', this._handleCarouselClickBound);
+
+        if (this.showIndicators && this.$indicators) {
+          this.$indicators.find('.indicator-item').each(function (el, i) {
+            el.removeEventListener('click', _this64._handleIndicatorClickBound);
+          });
+        }
+
+        window.removeEventListener('resize', this._handleThrottledResizeBound);
+      }
+
+      /**
+       * Handle Carousel Tap
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleCarouselTap",
+      value: function _handleCarouselTap(e) {
+        // Fixes firefox draggable image bug
+        if (e.type === 'mousedown' && $(e.target).is('img')) {
+          e.preventDefault();
+        }
+        this.pressed = true;
+        this.dragged = false;
+        this.verticalDragged = false;
+        this.reference = this._xpos(e);
+        this.referenceY = this._ypos(e);
+
+        this.velocity = this.amplitude = 0;
+        this.frame = this.offset;
+        this.timestamp = Date.now();
+        clearInterval(this.ticker);
+        this.ticker = setInterval(this._trackBound, 100);
+      }
+
+      /**
+       * Handle Carousel Drag
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleCarouselDrag",
+      value: function _handleCarouselDrag(e) {
+        var x = void 0,
+            y = void 0,
+            delta = void 0,
+            deltaY = void 0;
+        if (this.pressed) {
+          x = this._xpos(e);
+          y = this._ypos(e);
+          delta = this.reference - x;
+          deltaY = Math.abs(this.referenceY - y);
+          if (deltaY < 30 && !this.verticalDragged) {
+            // If vertical scrolling don't allow dragging.
+            if (delta > 2 || delta < -2) {
+              this.dragged = true;
+              this.reference = x;
+              this._scroll(this.offset + delta);
+            }
+          } else if (this.dragged) {
+            // If dragging don't allow vertical scroll.
+            e.preventDefault();
+            e.stopPropagation();
+            return false;
+          } else {
+            // Vertical scrolling.
+            this.verticalDragged = true;
+          }
+        }
+
+        if (this.dragged) {
+          // If dragging don't allow vertical scroll.
+          e.preventDefault();
+          e.stopPropagation();
+          return false;
+        }
+      }
+
+      /**
+       * Handle Carousel Release
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleCarouselRelease",
+      value: function _handleCarouselRelease(e) {
+        if (this.pressed) {
+          this.pressed = false;
+        } else {
+          return;
+        }
+
+        clearInterval(this.ticker);
+        this.target = this.offset;
+        if (this.velocity > 10 || this.velocity < -10) {
+          this.amplitude = 0.9 * this.velocity;
+          this.target = this.offset + this.amplitude;
+        }
+        this.target = Math.round(this.target / this.dim) * this.dim;
+
+        // No wrap of items.
+        if (this.noWrap) {
+          if (this.target >= this.dim * (this.count - 1)) {
+            this.target = this.dim * (this.count - 1);
+          } else if (this.target < 0) {
+            this.target = 0;
+          }
+        }
+        this.amplitude = this.target - this.offset;
+        this.timestamp = Date.now();
+        requestAnimationFrame(this._autoScrollBound);
+
+        if (this.dragged) {
+          e.preventDefault();
+          e.stopPropagation();
+        }
+        return false;
+      }
+
+      /**
+       * Handle Carousel CLick
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleCarouselClick",
+      value: function _handleCarouselClick(e) {
+        // Disable clicks if carousel was dragged.
+        if (this.dragged) {
+          e.preventDefault();
+          e.stopPropagation();
+          return false;
+        } else if (!this.options.fullWidth) {
+          var clickedIndex = $(e.target).closest('.carousel-item').index();
+          var diff = this._wrap(this.center) - clickedIndex;
+
+          // Disable clicks if carousel was shifted by click
+          if (diff !== 0) {
+            e.preventDefault();
+            e.stopPropagation();
+          }
+          this._cycleTo(clickedIndex);
+        }
+      }
+
+      /**
+       * Handle Indicator CLick
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleIndicatorClick",
+      value: function _handleIndicatorClick(e) {
+        e.stopPropagation();
+
+        var indicator = $(e.target).closest('.indicator-item');
+        if (indicator.length) {
+          this._cycleTo(indicator.index());
+        }
+      }
+
+      /**
+       * Handle Throttle Resize
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleResize",
+      value: function _handleResize(e) {
+        if (this.options.fullWidth) {
+          this.itemWidth = this.$el.find('.carousel-item').first().innerWidth();
+          this.imageHeight = this.$el.find('.carousel-item.active').height();
+          this.dim = this.itemWidth * 2 + this.options.padding;
+          this.offset = this.center * 2 * this.itemWidth;
+          this.target = this.offset;
+          this._setCarouselHeight(true);
+        } else {
+          this._scroll();
+        }
+      }
+
+      /**
+       * Set carousel height based on first slide
+       * @param {Booleam} imageOnly - true for image slides
+       */
+
+    }, {
+      key: "_setCarouselHeight",
+      value: function _setCarouselHeight(imageOnly) {
+        var _this65 = this;
+
+        var firstSlide = this.$el.find('.carousel-item.active').length ? this.$el.find('.carousel-item.active').first() : this.$el.find('.carousel-item').first();
+        var firstImage = firstSlide.find('img').first();
+        if (firstImage.length) {
+          if (firstImage[0].complete) {
+            // If image won't trigger the load event
+            var imageHeight = firstImage.height();
+            if (imageHeight > 0) {
+              this.$el.css('height', imageHeight + 'px');
+            } else {
+              // If image still has no height, use the natural dimensions to calculate
+              var naturalWidth = firstImage[0].naturalWidth;
+              var naturalHeight = firstImage[0].naturalHeight;
+              var adjustedHeight = this.$el.width() / naturalWidth * naturalHeight;
+              this.$el.css('height', adjustedHeight + 'px');
+            }
+          } else {
+            // Get height when image is loaded normally
+            firstImage.one('load', function (el, i) {
+              _this65.$el.css('height', el.offsetHeight + 'px');
+            });
+          }
+        } else if (!imageOnly) {
+          var slideHeight = firstSlide.height();
+          this.$el.css('height', slideHeight + 'px');
+        }
+      }
+
+      /**
+       * Get x position from event
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_xpos",
+      value: function _xpos(e) {
+        // touch event
+        if (e.targetTouches && e.targetTouches.length >= 1) {
+          return e.targetTouches[0].clientX;
+        }
+
+        // mouse event
+        return e.clientX;
+      }
+
+      /**
+       * Get y position from event
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_ypos",
+      value: function _ypos(e) {
+        // touch event
+        if (e.targetTouches && e.targetTouches.length >= 1) {
+          return e.targetTouches[0].clientY;
+        }
+
+        // mouse event
+        return e.clientY;
+      }
+
+      /**
+       * Wrap index
+       * @param {Number} x
+       */
+
+    }, {
+      key: "_wrap",
+      value: function _wrap(x) {
+        return x >= this.count ? x % this.count : x < 0 ? this._wrap(this.count + x % this.count) : x;
+      }
+
+      /**
+       * Tracks scrolling information
+       */
+
+    }, {
+      key: "_track",
+      value: function _track() {
+        var now = void 0,
+            elapsed = void 0,
+            delta = void 0,
+            v = void 0;
+
+        now = Date.now();
+        elapsed = now - this.timestamp;
+        this.timestamp = now;
+        delta = this.offset - this.frame;
+        this.frame = this.offset;
+
+        v = 1000 * delta / (1 + elapsed);
+        this.velocity = 0.8 * v + 0.2 * this.velocity;
+      }
+
+      /**
+       * Auto scrolls to nearest carousel item.
+       */
+
+    }, {
+      key: "_autoScroll",
+      value: function _autoScroll() {
+        var elapsed = void 0,
+            delta = void 0;
+
+        if (this.amplitude) {
+          elapsed = Date.now() - this.timestamp;
+          delta = this.amplitude * Math.exp(-elapsed / this.options.duration);
+          if (delta > 2 || delta < -2) {
+            this._scroll(this.target - delta);
+            requestAnimationFrame(this._autoScrollBound);
+          } else {
+            this._scroll(this.target);
+          }
+        }
+      }
+
+      /**
+       * Scroll to target
+       * @param {Number} x
+       */
+
+    }, {
+      key: "_scroll",
+      value: function _scroll(x) {
+        var _this66 = this;
+
+        // Track scrolling state
+        if (!this.$el.hasClass('scrolling')) {
+          this.el.classList.add('scrolling');
+        }
+        if (this.scrollingTimeout != null) {
+          window.clearTimeout(this.scrollingTimeout);
+        }
+        this.scrollingTimeout = window.setTimeout(function () {
+          _this66.$el.removeClass('scrolling');
+        }, this.options.duration);
+
+        // Start actual scroll
+        var i = void 0,
+            half = void 0,
+            delta = void 0,
+            dir = void 0,
+            tween = void 0,
+            el = void 0,
+            alignment = void 0,
+            zTranslation = void 0,
+            tweenedOpacity = void 0,
+            centerTweenedOpacity = void 0;
+        var lastCenter = this.center;
+        var numVisibleOffset = 1 / this.options.numVisible;
+
+        this.offset = typeof x === 'number' ? x : this.offset;
+        this.center = Math.floor((this.offset + this.dim / 2) / this.dim);
+        delta = this.offset - this.center * this.dim;
+        dir = delta < 0 ? 1 : -1;
+        tween = -dir * delta * 2 / this.dim;
+        half = this.count >> 1;
+
+        if (this.options.fullWidth) {
+          alignment = 'translateX(0)';
+          centerTweenedOpacity = 1;
+        } else {
+          alignment = 'translateX(' + (this.el.clientWidth - this.itemWidth) / 2 + 'px) ';
+          alignment += 'translateY(' + (this.el.clientHeight - this.itemHeight) / 2 + 'px)';
+          centerTweenedOpacity = 1 - numVisibleOffset * tween;
+        }
+
+        // Set indicator active
+        if (this.showIndicators) {
+          var diff = this.center % this.count;
+          var activeIndicator = this.$indicators.find('.indicator-item.active');
+          if (activeIndicator.index() !== diff) {
+            activeIndicator.removeClass('active');
+            this.$indicators.find('.indicator-item').eq(diff)[0].classList.add('active');
+          }
+        }
+
+        // center
+        // Don't show wrapped items.
+        if (!this.noWrap || this.center >= 0 && this.center < this.count) {
+          el = this.images[this._wrap(this.center)];
+
+          // Add active class to center item.
+          if (!$(el).hasClass('active')) {
+            this.$el.find('.carousel-item').removeClass('active');
+            el.classList.add('active');
+          }
+          var transformString = alignment + " translateX(" + -delta / 2 + "px) translateX(" + dir * this.options.shift * tween * i + "px) translateZ(" + this.options.dist * tween + "px)";
+          this._updateItemStyle(el, centerTweenedOpacity, 0, transformString);
+        }
+
+        for (i = 1; i <= half; ++i) {
+          // right side
+          if (this.options.fullWidth) {
+            zTranslation = this.options.dist;
+            tweenedOpacity = i === half && delta < 0 ? 1 - tween : 1;
+          } else {
+            zTranslation = this.options.dist * (i * 2 + tween * dir);
+            tweenedOpacity = 1 - numVisibleOffset * (i * 2 + tween * dir);
+          }
+          // Don't show wrapped items.
+          if (!this.noWrap || this.center + i < this.count) {
+            el = this.images[this._wrap(this.center + i)];
+            var _transformString = alignment + " translateX(" + (this.options.shift + (this.dim * i - delta) / 2) + "px) translateZ(" + zTranslation + "px)";
+            this._updateItemStyle(el, tweenedOpacity, -i, _transformString);
+          }
+
+          // left side
+          if (this.options.fullWidth) {
+            zTranslation = this.options.dist;
+            tweenedOpacity = i === half && delta > 0 ? 1 - tween : 1;
+          } else {
+            zTranslation = this.options.dist * (i * 2 - tween * dir);
+            tweenedOpacity = 1 - numVisibleOffset * (i * 2 - tween * dir);
+          }
+          // Don't show wrapped items.
+          if (!this.noWrap || this.center - i >= 0) {
+            el = this.images[this._wrap(this.center - i)];
+            var _transformString2 = alignment + " translateX(" + (-this.options.shift + (-this.dim * i - delta) / 2) + "px) translateZ(" + zTranslation + "px)";
+            this._updateItemStyle(el, tweenedOpacity, -i, _transformString2);
+          }
+        }
+
+        // center
+        // Don't show wrapped items.
+        if (!this.noWrap || this.center >= 0 && this.center < this.count) {
+          el = this.images[this._wrap(this.center)];
+          var _transformString3 = alignment + " translateX(" + -delta / 2 + "px) translateX(" + dir * this.options.shift * tween + "px) translateZ(" + this.options.dist * tween + "px)";
+          this._updateItemStyle(el, centerTweenedOpacity, 0, _transformString3);
+        }
+
+        // onCycleTo callback
+        var $currItem = this.$el.find('.carousel-item').eq(this._wrap(this.center));
+        if (lastCenter !== this.center && typeof this.options.onCycleTo === 'function') {
+          this.options.onCycleTo.call(this, $currItem[0], this.dragged);
+        }
+
+        // One time callback
+        if (typeof this.oneTimeCallback === 'function') {
+          this.oneTimeCallback.call(this, $currItem[0], this.dragged);
+          this.oneTimeCallback = null;
+        }
+      }
+
+      /**
+       * Cycle to target
+       * @param {Element} el
+       * @param {Number} opacity
+       * @param {Number} zIndex
+       * @param {String} transform
+       */
+
+    }, {
+      key: "_updateItemStyle",
+      value: function _updateItemStyle(el, opacity, zIndex, transform) {
+        el.style[this.xform] = transform;
+        el.style.zIndex = zIndex;
+        el.style.opacity = opacity;
+        el.style.visibility = 'visible';
+      }
+
+      /**
+       * Cycle to target
+       * @param {Number} n
+       * @param {Function} callback
+       */
+
+    }, {
+      key: "_cycleTo",
+      value: function _cycleTo(n, callback) {
+        var diff = this.center % this.count - n;
+
+        // Account for wraparound.
+        if (!this.noWrap) {
+          if (diff < 0) {
+            if (Math.abs(diff + this.count) < Math.abs(diff)) {
+              diff += this.count;
+            }
+          } else if (diff > 0) {
+            if (Math.abs(diff - this.count) < diff) {
+              diff -= this.count;
+            }
+          }
+        }
+
+        this.target = this.dim * Math.round(this.offset / this.dim);
+        // Next
+        if (diff < 0) {
+          this.target += this.dim * Math.abs(diff);
+
+          // Prev
+        } else if (diff > 0) {
+          this.target -= this.dim * diff;
+        }
+
+        // Set one time callback
+        if (typeof callback === 'function') {
+          this.oneTimeCallback = callback;
+        }
+
+        // Scroll
+        if (this.offset !== this.target) {
+          this.amplitude = this.target - this.offset;
+          this.timestamp = Date.now();
+          requestAnimationFrame(this._autoScrollBound);
+        }
+      }
+
+      /**
+       * Cycle to next item
+       * @param {Number} [n]
+       */
+
+    }, {
+      key: "next",
+      value: function next(n) {
+        if (n === undefined || isNaN(n)) {
+          n = 1;
+        }
+
+        var index = this.center + n;
+        if (index >= this.count || index < 0) {
+          if (this.noWrap) {
+            return;
+          }
+
+          index = this._wrap(index);
+        }
+        this._cycleTo(index);
+      }
+
+      /**
+       * Cycle to previous item
+       * @param {Number} [n]
+       */
+
+    }, {
+      key: "prev",
+      value: function prev(n) {
+        if (n === undefined || isNaN(n)) {
+          n = 1;
+        }
+
+        var index = this.center - n;
+        if (index >= this.count || index < 0) {
+          if (this.noWrap) {
+            return;
+          }
+
+          index = this._wrap(index);
+        }
+
+        this._cycleTo(index);
+      }
+
+      /**
+       * Cycle to nth item
+       * @param {Number} [n]
+       * @param {Function} callback
+       */
+
+    }, {
+      key: "set",
+      value: function set(n, callback) {
+        if (n === undefined || isNaN(n)) {
+          n = 0;
+        }
+
+        if (n > this.count || n < 0) {
+          if (this.noWrap) {
+            return;
+          }
+
+          n = this._wrap(n);
+        }
+
+        this._cycleTo(n, callback);
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Carousel.__proto__ || Object.getPrototypeOf(Carousel), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Carousel;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Carousel;
+  }(Component);
+
+  M.Carousel = Carousel;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Carousel, 'carousel', 'M_Carousel');
+  }
+})(cash);
+;(function ($) {
+  'use strict';
+
+  var _defaults = {
+    onOpen: undefined,
+    onClose: undefined
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var TapTarget = function (_Component19) {
+    _inherits(TapTarget, _Component19);
+
+    /**
+     * Construct TapTarget instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function TapTarget(el, options) {
+      _classCallCheck(this, TapTarget);
+
+      var _this67 = _possibleConstructorReturn(this, (TapTarget.__proto__ || Object.getPrototypeOf(TapTarget)).call(this, TapTarget, el, options));
+
+      _this67.el.M_TapTarget = _this67;
+
+      /**
+       * Options for the select
+       * @member TapTarget#options
+       * @prop {Function} onOpen - Callback function called when feature discovery is opened
+       * @prop {Function} onClose - Callback function called when feature discovery is closed
+       */
+      _this67.options = $.extend({}, TapTarget.defaults, options);
+
+      _this67.isOpen = false;
+
+      // setup
+      _this67.$origin = $('#' + _this67.$el.attr('data-target'));
+      _this67._setup();
+
+      _this67._calculatePositioning();
+      _this67._setupEventHandlers();
+      return _this67;
+    }
+
+    _createClass(TapTarget, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this.el.TapTarget = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleDocumentClickBound = this._handleDocumentClick.bind(this);
+        this._handleTargetClickBound = this._handleTargetClick.bind(this);
+        this._handleOriginClickBound = this._handleOriginClick.bind(this);
+
+        this.el.addEventListener('click', this._handleTargetClickBound);
+        this.originEl.addEventListener('click', this._handleOriginClickBound);
+
+        // Resize
+        var throttledResize = M.throttle(this._handleResize, 200);
+        this._handleThrottledResizeBound = throttledResize.bind(this);
+
+        window.addEventListener('resize', this._handleThrottledResizeBound);
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        this.el.removeEventListener('click', this._handleTargetClickBound);
+        this.originEl.removeEventListener('click', this._handleOriginClickBound);
+        window.removeEventListener('resize', this._handleThrottledResizeBound);
+      }
+
+      /**
+       * Handle Target Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleTargetClick",
+      value: function _handleTargetClick(e) {
+        this.open();
+      }
+
+      /**
+       * Handle Origin Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleOriginClick",
+      value: function _handleOriginClick(e) {
+        this.close();
+      }
+
+      /**
+       * Handle Resize
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleResize",
+      value: function _handleResize(e) {
+        this._calculatePositioning();
+      }
+
+      /**
+       * Handle Resize
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleDocumentClick",
+      value: function _handleDocumentClick(e) {
+        if (!$(e.target).closest('.tap-target-wrapper').length) {
+          this.close();
+          e.preventDefault();
+          e.stopPropagation();
+        }
+      }
+
+      /**
+       * Setup Tap Target
+       */
+
+    }, {
+      key: "_setup",
+      value: function _setup() {
+        // Creating tap target
+        this.wrapper = this.$el.parent()[0];
+        this.waveEl = $(this.wrapper).find('.tap-target-wave')[0];
+        this.originEl = $(this.wrapper).find('.tap-target-origin')[0];
+        this.contentEl = this.$el.find('.tap-target-content')[0];
+
+        // Creating wrapper
+        if (!$(this.wrapper).hasClass('.tap-target-wrapper')) {
+          this.wrapper = document.createElement('div');
+          this.wrapper.classList.add('tap-target-wrapper');
+          this.$el.before($(this.wrapper));
+          this.wrapper.append(this.el);
+        }
+
+        // Creating content
+        if (!this.contentEl) {
+          this.contentEl = document.createElement('div');
+          this.contentEl.classList.add('tap-target-content');
+          this.$el.append(this.contentEl);
+        }
+
+        // Creating foreground wave
+        if (!this.waveEl) {
+          this.waveEl = document.createElement('div');
+          this.waveEl.classList.add('tap-target-wave');
+
+          // Creating origin
+          if (!this.originEl) {
+            this.originEl = this.$origin.clone(true, true);
+            this.originEl.addClass('tap-target-origin');
+            this.originEl.removeAttr('id');
+            this.originEl.removeAttr('style');
+            this.originEl = this.originEl[0];
+            this.waveEl.append(this.originEl);
+          }
+
+          this.wrapper.append(this.waveEl);
+        }
+      }
+
+      /**
+       * Calculate positioning
+       */
+
+    }, {
+      key: "_calculatePositioning",
+      value: function _calculatePositioning() {
+        // Element or parent is fixed position?
+        var isFixed = this.$origin.css('position') === 'fixed';
+        if (!isFixed) {
+          var parents = this.$origin.parents();
+          for (var i = 0; i < parents.length; i++) {
+            isFixed = $(parents[i]).css('position') == 'fixed';
+            if (isFixed) {
+              break;
+            }
+          }
+        }
+
+        // Calculating origin
+        var originWidth = this.$origin.outerWidth();
+        var originHeight = this.$origin.outerHeight();
+        var originTop = isFixed ? this.$origin.offset().top - M.getDocumentScrollTop() : this.$origin.offset().top;
+        var originLeft = isFixed ? this.$origin.offset().left - M.getDocumentScrollLeft() : this.$origin.offset().left;
+
+        // Calculating screen
+        var windowWidth = window.innerWidth;
+        var windowHeight = window.innerHeight;
+        var centerX = windowWidth / 2;
+        var centerY = windowHeight / 2;
+        var isLeft = originLeft <= centerX;
+        var isRight = originLeft > centerX;
+        var isTop = originTop <= centerY;
+        var isBottom = originTop > centerY;
+        var isCenterX = originLeft >= windowWidth * 0.25 && originLeft <= windowWidth * 0.75;
+
+        // Calculating tap target
+        var tapTargetWidth = this.$el.outerWidth();
+        var tapTargetHeight = this.$el.outerHeight();
+        var tapTargetTop = originTop + originHeight / 2 - tapTargetHeight / 2;
+        var tapTargetLeft = originLeft + originWidth / 2 - tapTargetWidth / 2;
+        var tapTargetPosition = isFixed ? 'fixed' : 'absolute';
+
+        // Calculating content
+        var tapTargetTextWidth = isCenterX ? tapTargetWidth : tapTargetWidth / 2 + originWidth;
+        var tapTargetTextHeight = tapTargetHeight / 2;
+        var tapTargetTextTop = isTop ? tapTargetHeight / 2 : 0;
+        var tapTargetTextBottom = 0;
+        var tapTargetTextLeft = isLeft && !isCenterX ? tapTargetWidth / 2 - originWidth : 0;
+        var tapTargetTextRight = 0;
+        var tapTargetTextPadding = originWidth;
+        var tapTargetTextAlign = isBottom ? 'bottom' : 'top';
+
+        // Calculating wave
+        var tapTargetWaveWidth = originWidth > originHeight ? originWidth * 2 : originWidth * 2;
+        var tapTargetWaveHeight = tapTargetWaveWidth;
+        var tapTargetWaveTop = tapTargetHeight / 2 - tapTargetWaveHeight / 2;
+        var tapTargetWaveLeft = tapTargetWidth / 2 - tapTargetWaveWidth / 2;
+
+        // Setting tap target
+        var tapTargetWrapperCssObj = {};
+        tapTargetWrapperCssObj.top = isTop ? tapTargetTop + 'px' : '';
+        tapTargetWrapperCssObj.right = isRight ? windowWidth - tapTargetLeft - tapTargetWidth + 'px' : '';
+        tapTargetWrapperCssObj.bottom = isBottom ? windowHeight - tapTargetTop - tapTargetHeight + 'px' : '';
+        tapTargetWrapperCssObj.left = isLeft ? tapTargetLeft + 'px' : '';
+        tapTargetWrapperCssObj.position = tapTargetPosition;
+        $(this.wrapper).css(tapTargetWrapperCssObj);
+
+        // Setting content
+        $(this.contentEl).css({
+          width: tapTargetTextWidth + 'px',
+          height: tapTargetTextHeight + 'px',
+          top: tapTargetTextTop + 'px',
+          right: tapTargetTextRight + 'px',
+          bottom: tapTargetTextBottom + 'px',
+          left: tapTargetTextLeft + 'px',
+          padding: tapTargetTextPadding + 'px',
+          verticalAlign: tapTargetTextAlign
+        });
+
+        // Setting wave
+        $(this.waveEl).css({
+          top: tapTargetWaveTop + 'px',
+          left: tapTargetWaveLeft + 'px',
+          width: tapTargetWaveWidth + 'px',
+          height: tapTargetWaveHeight + 'px'
+        });
+      }
+
+      /**
+       * Open TapTarget
+       */
+
+    }, {
+      key: "open",
+      value: function open() {
+        if (this.isOpen) {
+          return;
+        }
+
+        // onOpen callback
+        if (typeof this.options.onOpen === 'function') {
+          this.options.onOpen.call(this, this.$origin[0]);
+        }
+
+        this.isOpen = true;
+        this.wrapper.classList.add('open');
+
+        document.body.addEventListener('click', this._handleDocumentClickBound, true);
+        document.body.addEventListener('touchend', this._handleDocumentClickBound);
+      }
+
+      /**
+       * Close Tap Target
+       */
+
+    }, {
+      key: "close",
+      value: function close() {
+        if (!this.isOpen) {
+          return;
+        }
+
+        // onClose callback
+        if (typeof this.options.onClose === 'function') {
+          this.options.onClose.call(this, this.$origin[0]);
+        }
+
+        this.isOpen = false;
+        this.wrapper.classList.remove('open');
+
+        document.body.removeEventListener('click', this._handleDocumentClickBound, true);
+        document.body.removeEventListener('touchend', this._handleDocumentClickBound);
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(TapTarget.__proto__ || Object.getPrototypeOf(TapTarget), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_TapTarget;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return TapTarget;
+  }(Component);
+
+  M.TapTarget = TapTarget;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(TapTarget, 'tapTarget', 'M_TapTarget');
+  }
+})(cash);
+;(function ($) {
+  'use strict';
+
+  var _defaults = {
+    classes: '',
+    dropdownOptions: {}
+  };
+
+  /**
+   * @class
+   *
+   */
+
+  var FormSelect = function (_Component20) {
+    _inherits(FormSelect, _Component20);
+
+    /**
+     * Construct FormSelect instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function FormSelect(el, options) {
+      _classCallCheck(this, FormSelect);
+
+      // Don't init if browser default version
+      var _this68 = _possibleConstructorReturn(this, (FormSelect.__proto__ || Object.getPrototypeOf(FormSelect)).call(this, FormSelect, el, options));
+
+      if (_this68.$el.hasClass('browser-default')) {
+        return _possibleConstructorReturn(_this68);
+      }
+
+      _this68.el.M_FormSelect = _this68;
+
+      /**
+       * Options for the select
+       * @member FormSelect#options
+       */
+      _this68.options = $.extend({}, FormSelect.defaults, options);
+
+      _this68.isMultiple = _this68.$el.prop('multiple');
+
+      // Setup
+      _this68.el.tabIndex = -1;
+      _this68._keysSelected = {};
+      _this68._valueDict = {}; // Maps key to original and generated option element.
+      _this68._setupDropdown();
+
+      _this68._setupEventHandlers();
+      return _this68;
+    }
+
+    _createClass(FormSelect, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this._removeDropdown();
+        this.el.M_FormSelect = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        var _this69 = this;
+
+        this._handleSelectChangeBound = this._handleSelectChange.bind(this);
+        this._handleOptionClickBound = this._handleOptionClick.bind(this);
+        this._handleInputClickBound = this._handleInputClick.bind(this);
+
+        $(this.dropdownOptions).find('li:not(.optgroup)').each(function (el) {
+          el.addEventListener('click', _this69._handleOptionClickBound);
+        });
+        this.el.addEventListener('change', this._handleSelectChangeBound);
+        this.input.addEventListener('click', this._handleInputClickBound);
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        var _this70 = this;
+
+        $(this.dropdownOptions).find('li:not(.optgroup)').each(function (el) {
+          el.removeEventListener('click', _this70._handleOptionClickBound);
+        });
+        this.el.removeEventListener('change', this._handleSelectChangeBound);
+        this.input.removeEventListener('click', this._handleInputClickBound);
+      }
+
+      /**
+       * Handle Select Change
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleSelectChange",
+      value: function _handleSelectChange(e) {
+        this._setValueToInput();
+      }
+
+      /**
+       * Handle Option Click
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleOptionClick",
+      value: function _handleOptionClick(e) {
+        e.preventDefault();
+        var option = $(e.target).closest('li')[0];
+        var key = option.id;
+        if (!$(option).hasClass('disabled') && !$(option).hasClass('optgroup') && key.length) {
+          var selected = true;
+
+          if (this.isMultiple) {
+            // Deselect placeholder option if still selected.
+            var placeholderOption = $(this.dropdownOptions).find('li.disabled.selected');
+            if (placeholderOption.length) {
+              placeholderOption.removeClass('selected');
+              placeholderOption.find('input[type="checkbox"]').prop('checked', false);
+              this._toggleEntryFromArray(placeholderOption[0].id);
+            }
+            selected = this._toggleEntryFromArray(key);
+          } else {
+            $(this.dropdownOptions).find('li').removeClass('selected');
+            $(option).toggleClass('selected', selected);
+          }
+
+          // Set selected on original select option
+          // Only trigger if selected state changed
+          var prevSelected = $(this._valueDict[key].el).prop('selected');
+          if (prevSelected !== selected) {
+            $(this._valueDict[key].el).prop('selected', selected);
+            this.$el.trigger('change');
+          }
+        }
+
+        e.stopPropagation();
+      }
+
+      /**
+       * Handle Input Click
+       */
+
+    }, {
+      key: "_handleInputClick",
+      value: function _handleInputClick() {
+        if (this.dropdown && this.dropdown.isOpen) {
+          this._setValueToInput();
+          this._setSelectedStates();
+        }
+      }
+
+      /**
+       * Setup dropdown
+       */
+
+    }, {
+      key: "_setupDropdown",
+      value: function _setupDropdown() {
+        var _this71 = this;
+
+        this.wrapper = document.createElement('div');
+        $(this.wrapper).addClass('select-wrapper ' + this.options.classes);
+        this.$el.before($(this.wrapper));
+        this.wrapper.appendChild(this.el);
+
+        if (this.el.disabled) {
+          this.wrapper.classList.add('disabled');
+        }
+
+        // Create dropdown
+        this.$selectOptions = this.$el.children('option, optgroup');
+        this.dropdownOptions = document.createElement('ul');
+        this.dropdownOptions.id = "select-options-" + M.guid();
+        $(this.dropdownOptions).addClass('dropdown-content select-dropdown ' + (this.isMultiple ? 'multiple-select-dropdown' : ''));
+
+        // Create dropdown structure.
+        if (this.$selectOptions.length) {
+          this.$selectOptions.each(function (el) {
+            if ($(el).is('option')) {
+              // Direct descendant option.
+              var optionEl = void 0;
+              if (_this71.isMultiple) {
+                optionEl = _this71._appendOptionWithIcon(_this71.$el, el, 'multiple');
+              } else {
+                optionEl = _this71._appendOptionWithIcon(_this71.$el, el);
+              }
+
+              _this71._addOptionToValueDict(el, optionEl);
+            } else if ($(el).is('optgroup')) {
+              // Optgroup.
+              var selectOptions = $(el).children('option');
+              $(_this71.dropdownOptions).append($('<li class="optgroup"><span>' + el.getAttribute('label') + '</span></li>')[0]);
+
+              selectOptions.each(function (el) {
+                var optionEl = _this71._appendOptionWithIcon(_this71.$el, el, 'optgroup-option');
+                _this71._addOptionToValueDict(el, optionEl);
+              });
+            }
+          });
+        }
+
+        this.$el.after(this.dropdownOptions);
+
+        // Add input dropdown
+        this.input = document.createElement('input');
+        $(this.input).addClass('select-dropdown dropdown-trigger');
+        this.input.setAttribute('type', 'text');
+        this.input.setAttribute('readonly', 'true');
+        this.input.setAttribute('data-target', this.dropdownOptions.id);
+        if (this.el.disabled) {
+          $(this.input).prop('disabled', 'true');
+        }
+
+        this.$el.before(this.input);
+        this._setValueToInput();
+
+        // Add caret
+        var dropdownIcon = $('<svg class="caret" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10l5 5 5-5z"/><path d="M0 0h24v24H0z" fill="none"/></svg>');
+        this.$el.before(dropdownIcon[0]);
+
+        // Initialize dropdown
+        if (!this.el.disabled) {
+          var dropdownOptions = $.extend({}, this.options.dropdownOptions);
+
+          // Add callback for centering selected option when dropdown content is scrollable
+          dropdownOptions.onOpenEnd = function (el) {
+            var selectedOption = $(_this71.dropdownOptions).find('.selected').first();
+
+            if (selectedOption.length) {
+              // Focus selected option in dropdown
+              M.keyDown = true;
+              _this71.dropdown.focusedIndex = selectedOption.index();
+              _this71.dropdown._focusFocusedItem();
+              M.keyDown = false;
+
+              // Handle scrolling to selected option
+              if (_this71.dropdown.isScrollable) {
+                var scrollOffset = selectedOption[0].getBoundingClientRect().top - _this71.dropdownOptions.getBoundingClientRect().top; // scroll to selected option
+                scrollOffset -= _this71.dropdownOptions.clientHeight / 2; // center in dropdown
+                _this71.dropdownOptions.scrollTop = scrollOffset;
+              }
+            }
+          };
+
+          if (this.isMultiple) {
+            dropdownOptions.closeOnClick = false;
+          }
+          this.dropdown = M.Dropdown.init(this.input, dropdownOptions);
+        }
+
+        // Add initial selections
+        this._setSelectedStates();
+      }
+
+      /**
+       * Add option to value dict
+       * @param {Element} el  original option element
+       * @param {Element} optionEl  generated option element
+       */
+
+    }, {
+      key: "_addOptionToValueDict",
+      value: function _addOptionToValueDict(el, optionEl) {
+        var index = Object.keys(this._valueDict).length;
+        var key = this.dropdownOptions.id + index;
+        var obj = {};
+        optionEl.id = key;
+
+        obj.el = el;
+        obj.optionEl = optionEl;
+        this._valueDict[key] = obj;
+      }
+
+      /**
+       * Remove dropdown
+       */
+
+    }, {
+      key: "_removeDropdown",
+      value: function _removeDropdown() {
+        $(this.wrapper).find('.caret').remove();
+        $(this.input).remove();
+        $(this.dropdownOptions).remove();
+        $(this.wrapper).before(this.$el);
+        $(this.wrapper).remove();
+      }
+
+      /**
+       * Setup dropdown
+       * @param {Element} select  select element
+       * @param {Element} option  option element from select
+       * @param {String} type
+       * @return {Element}  option element added
+       */
+
+    }, {
+      key: "_appendOptionWithIcon",
+      value: function _appendOptionWithIcon(select, option, type) {
+        // Add disabled attr if disabled
+        var disabledClass = option.disabled ? 'disabled ' : '';
+        var optgroupClass = type === 'optgroup-option' ? 'optgroup-option ' : '';
+        var multipleCheckbox = this.isMultiple ? "<label><input type=\"checkbox\"" + disabledClass + "\"/><span>" + option.innerHTML + "</span></label>" : option.innerHTML;
+        var liEl = $('<li></li>');
+        var spanEl = $('<span></span>');
+        spanEl.html(multipleCheckbox);
+        liEl.addClass(disabledClass + " " + optgroupClass);
+        liEl.append(spanEl);
+
+        // add icons
+        var iconUrl = option.getAttribute('data-icon');
+        if (!!iconUrl) {
+          var imgEl = $("<img alt=\"\" src=\"" + iconUrl + "\">");
+          liEl.prepend(imgEl);
+        }
+
+        // Check for multiple type.
+        $(this.dropdownOptions).append(liEl[0]);
+        return liEl[0];
+      }
+
+      /**
+       * Toggle entry from option
+       * @param {String} key  Option key
+       * @return {Boolean}  if entry was added or removed
+       */
+
+    }, {
+      key: "_toggleEntryFromArray",
+      value: function _toggleEntryFromArray(key) {
+        var notAdded = !this._keysSelected.hasOwnProperty(key);
+        var $optionLi = $(this._valueDict[key].optionEl);
+
+        if (notAdded) {
+          this._keysSelected[key] = true;
+        } else {
+          delete this._keysSelected[key];
+        }
+
+        $optionLi.toggleClass('selected', notAdded);
+
+        // Set checkbox checked value
+        $optionLi.find('input[type="checkbox"]').prop('checked', notAdded);
+
+        // use notAdded instead of true (to detect if the option is selected or not)
+        $optionLi.prop('selected', notAdded);
+
+        return notAdded;
+      }
+
+      /**
+       * Set text value to input
+       */
+
+    }, {
+      key: "_setValueToInput",
+      value: function _setValueToInput() {
+        var values = [];
+        var options = this.$el.find('option');
+
+        options.each(function (el) {
+          if ($(el).prop('selected')) {
+            var text = $(el).text();
+            values.push(text);
+          }
+        });
+
+        if (!values.length) {
+          var firstDisabled = this.$el.find('option:disabled').eq(0);
+          if (firstDisabled.length && firstDisabled[0].value === '') {
+            values.push(firstDisabled.text());
+          }
+        }
+
+        this.input.value = values.join(', ');
+      }
+
+      /**
+       * Set selected state of dropdown to match actual select element
+       */
+
+    }, {
+      key: "_setSelectedStates",
+      value: function _setSelectedStates() {
+        this._keysSelected = {};
+
+        for (var key in this._valueDict) {
+          var option = this._valueDict[key];
+          var optionIsSelected = $(option.el).prop('selected');
+          $(option.optionEl).find('input[type="checkbox"]').prop('checked', optionIsSelected);
+          if (optionIsSelected) {
+            this._activateOption($(this.dropdownOptions), $(option.optionEl));
+            this._keysSelected[key] = true;
+          } else {
+            $(option.optionEl).removeClass('selected');
+          }
+        }
+      }
+
+      /**
+       * Make option as selected and scroll to selected position
+       * @param {jQuery} collection  Select options jQuery element
+       * @param {Element} newOption  element of the new option
+       */
+
+    }, {
+      key: "_activateOption",
+      value: function _activateOption(collection, newOption) {
+        if (newOption) {
+          if (!this.isMultiple) {
+            collection.find('li.selected').removeClass('selected');
+          }
+          var option = $(newOption);
+          option.addClass('selected');
+        }
+      }
+
+      /**
+       * Get Selected Values
+       * @return {Array}  Array of selected values
+       */
+
+    }, {
+      key: "getSelectedValues",
+      value: function getSelectedValues() {
+        var selectedValues = [];
+        for (var key in this._keysSelected) {
+          selectedValues.push(this._valueDict[key].el.value);
+        }
+        return selectedValues;
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(FormSelect.__proto__ || Object.getPrototypeOf(FormSelect), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_FormSelect;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return FormSelect;
+  }(Component);
+
+  M.FormSelect = FormSelect;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(FormSelect, 'formSelect', 'M_FormSelect');
+  }
+})(cash);
+;(function ($, anim) {
+  'use strict';
+
+  var _defaults = {};
+
+  /**
+   * @class
+   *
+   */
+
+  var Range = function (_Component21) {
+    _inherits(Range, _Component21);
+
+    /**
+     * Construct Range instance
+     * @constructor
+     * @param {Element} el
+     * @param {Object} options
+     */
+    function Range(el, options) {
+      _classCallCheck(this, Range);
+
+      var _this72 = _possibleConstructorReturn(this, (Range.__proto__ || Object.getPrototypeOf(Range)).call(this, Range, el, options));
+
+      _this72.el.M_Range = _this72;
+
+      /**
+       * Options for the range
+       * @member Range#options
+       */
+      _this72.options = $.extend({}, Range.defaults, options);
+
+      _this72._mousedown = false;
+
+      // Setup
+      _this72._setupThumb();
+
+      _this72._setupEventHandlers();
+      return _this72;
+    }
+
+    _createClass(Range, [{
+      key: "destroy",
+
+
+      /**
+       * Teardown component
+       */
+      value: function destroy() {
+        this._removeEventHandlers();
+        this._removeThumb();
+        this.el.M_Range = undefined;
+      }
+
+      /**
+       * Setup Event Handlers
+       */
+
+    }, {
+      key: "_setupEventHandlers",
+      value: function _setupEventHandlers() {
+        this._handleRangeChangeBound = this._handleRangeChange.bind(this);
+        this._handleRangeMousedownTouchstartBound = this._handleRangeMousedownTouchstart.bind(this);
+        this._handleRangeInputMousemoveTouchmoveBound = this._handleRangeInputMousemoveTouchmove.bind(this);
+        this._handleRangeMouseupTouchendBound = this._handleRangeMouseupTouchend.bind(this);
+        this._handleRangeBlurMouseoutTouchleaveBound = this._handleRangeBlurMouseoutTouchleave.bind(this);
+
+        this.el.addEventListener('change', this._handleRangeChangeBound);
+
+        this.el.addEventListener('mousedown', this._handleRangeMousedownTouchstartBound);
+        this.el.addEventListener('touchstart', this._handleRangeMousedownTouchstartBound);
+
+        this.el.addEventListener('input', this._handleRangeInputMousemoveTouchmoveBound);
+        this.el.addEventListener('mousemove', this._handleRangeInputMousemoveTouchmoveBound);
+        this.el.addEventListener('touchmove', this._handleRangeInputMousemoveTouchmoveBound);
+
+        this.el.addEventListener('mouseup', this._handleRangeMouseupTouchendBound);
+        this.el.addEventListener('touchend', this._handleRangeMouseupTouchendBound);
+
+        this.el.addEventListener('blur', this._handleRangeBlurMouseoutTouchleaveBound);
+        this.el.addEventListener('mouseout', this._handleRangeBlurMouseoutTouchleaveBound);
+        this.el.addEventListener('touchleave', this._handleRangeBlurMouseoutTouchleaveBound);
+      }
+
+      /**
+       * Remove Event Handlers
+       */
+
+    }, {
+      key: "_removeEventHandlers",
+      value: function _removeEventHandlers() {
+        this.el.removeEventListener('change', this._handleRangeChangeBound);
+
+        this.el.removeEventListener('mousedown', this._handleRangeMousedownTouchstartBound);
+        this.el.removeEventListener('touchstart', this._handleRangeMousedownTouchstartBound);
+
+        this.el.removeEventListener('input', this._handleRangeInputMousemoveTouchmoveBound);
+        this.el.removeEventListener('mousemove', this._handleRangeInputMousemoveTouchmoveBound);
+        this.el.removeEventListener('touchmove', this._handleRangeInputMousemoveTouchmoveBound);
+
+        this.el.removeEventListener('mouseup', this._handleRangeMouseupTouchendBound);
+        this.el.removeEventListener('touchend', this._handleRangeMouseupTouchendBound);
+
+        this.el.removeEventListener('blur', this._handleRangeBlurMouseoutTouchleaveBound);
+        this.el.removeEventListener('mouseout', this._handleRangeBlurMouseoutTouchleaveBound);
+        this.el.removeEventListener('touchleave', this._handleRangeBlurMouseoutTouchleaveBound);
+      }
+
+      /**
+       * Handle Range Change
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleRangeChange",
+      value: function _handleRangeChange() {
+        $(this.value).html(this.$el.val());
+
+        if (!$(this.thumb).hasClass('active')) {
+          this._showRangeBubble();
+        }
+
+        var offsetLeft = this._calcRangeOffset();
+        $(this.thumb).addClass('active').css('left', offsetLeft + 'px');
+      }
+
+      /**
+       * Handle Range Mousedown and Touchstart
+       * @param {Event} e
+       */
+
+    }, {
+      key: "_handleRangeMousedownTouchstart",
+      value: function _handleRangeMousedownTouchstart(e) {
+        // Set indicator value
+        $(this.value).html(this.$el.val());
+
+        this._mousedown = true;
+        this.$el.addClass('active');
+
+        if (!$(this.thumb).hasClass('active')) {
+          this._showRangeBubble();
+        }
+
+        if (e.type !== 'input') {
+          var offsetLeft = this._calcRangeOffset();
+          $(this.thumb).addClass('active').css('left', offsetLeft + 'px');
+        }
+      }
+
+      /**
+       * Handle Range Input, Mousemove and Touchmove
+       */
+
+    }, {
+      key: "_handleRangeInputMousemoveTouchmove",
+      value: function _handleRangeInputMousemoveTouchmove() {
+        if (this._mousedown) {
+          if (!$(this.thumb).hasClass('active')) {
+            this._showRangeBubble();
+          }
+
+          var offsetLeft = this._calcRangeOffset();
+          $(this.thumb).addClass('active').css('left', offsetLeft + 'px');
+          $(this.value).html(this.$el.val());
+        }
+      }
+
+      /**
+       * Handle Range Mouseup and Touchend
+       */
+
+    }, {
+      key: "_handleRangeMouseupTouchend",
+      value: function _handleRangeMouseupTouchend() {
+        this._mousedown = false;
+        this.$el.removeClass('active');
+      }
+
+      /**
+       * Handle Range Blur, Mouseout and Touchleave
+       */
+
+    }, {
+      key: "_handleRangeBlurMouseoutTouchleave",
+      value: function _handleRangeBlurMouseoutTouchleave() {
+        if (!this._mousedown) {
+          var paddingLeft = parseInt(this.$el.css('padding-left'));
+          var marginLeft = 7 + paddingLeft + 'px';
+
+          if ($(this.thumb).hasClass('active')) {
+            anim.remove(this.thumb);
+            anim({
+              targets: this.thumb,
+              height: 0,
+              width: 0,
+              top: 10,
+              easing: 'easeOutQuad',
+              marginLeft: marginLeft,
+              duration: 100
+            });
+          }
+          $(this.thumb).removeClass('active');
+        }
+      }
+
+      /**
+       * Setup dropdown
+       */
+
+    }, {
+      key: "_setupThumb",
+      value: function _setupThumb() {
+        this.thumb = document.createElement('span');
+        this.value = document.createElement('span');
+        $(this.thumb).addClass('thumb');
+        $(this.value).addClass('value');
+        $(this.thumb).append(this.value);
+        this.$el.after(this.thumb);
+      }
+
+      /**
+       * Remove dropdown
+       */
+
+    }, {
+      key: "_removeThumb",
+      value: function _removeThumb() {
+        $(this.thumb).remove();
+      }
+
+      /**
+       * morph thumb into bubble
+       */
+
+    }, {
+      key: "_showRangeBubble",
+      value: function _showRangeBubble() {
+        var paddingLeft = parseInt($(this.thumb).parent().css('padding-left'));
+        var marginLeft = -7 + paddingLeft + 'px'; // TODO: fix magic number?
+        anim.remove(this.thumb);
+        anim({
+          targets: this.thumb,
+          height: 30,
+          width: 30,
+          top: -30,
+          marginLeft: marginLeft,
+          duration: 300,
+          easing: 'easeOutQuint'
+        });
+      }
+
+      /**
+       * Calculate the offset of the thumb
+       * @return {Number}  offset in pixels
+       */
+
+    }, {
+      key: "_calcRangeOffset",
+      value: function _calcRangeOffset() {
+        var width = this.$el.width() - 15;
+        var max = parseFloat(this.$el.attr('max')) || 100; // Range default max
+        var min = parseFloat(this.$el.attr('min')) || 0; // Range default min
+        var percent = (parseFloat(this.$el.val()) - min) / (max - min);
+        return percent * width;
+      }
+    }], [{
+      key: "init",
+      value: function init(els, options) {
+        return _get(Range.__proto__ || Object.getPrototypeOf(Range), "init", this).call(this, this, els, options);
+      }
+
+      /**
+       * Get Instance
+       */
+
+    }, {
+      key: "getInstance",
+      value: function getInstance(el) {
+        var domElem = !!el.jquery ? el[0] : el;
+        return domElem.M_Range;
+      }
+    }, {
+      key: "defaults",
+      get: function () {
+        return _defaults;
+      }
+    }]);
+
+    return Range;
+  }(Component);
+
+  M.Range = Range;
+
+  if (M.jQueryLoaded) {
+    M.initializeJqueryWrapper(Range, 'range', 'M_Range');
+  }
+
+  Range.init($('input[type=range]'));
+})(cash, M.anime);
diff --git a/script.js b/js/script.js
similarity index 81%
rename from script.js
rename to js/script.js
index 497a48f..ef3d446 100644
--- a/script.js
+++ b/js/script.js
@@ -1,5 +1,5 @@
 function updateHost(input) {
-    input.style.backgroundImage = 'url(wait.gif)'
+    input.style.backgroundImage = 'url(img/wait.gif)'
     input.style.fontStyle = "italic"
     fetch(new Request("updateHost.php", {
         method:"POST",
@@ -10,7 +10,7 @@ function updateHost(input) {
             input.style.backgroundImage = ''
             input.style.fontStyle = ""
         } else {
-            input.style.backgroundImage = 'url(nok.png)'
+            input.style.backgroundImage = 'url(img/nok.png)'
         }
     })
 }
diff --git a/siteNetworks.php b/siteNetworks.php
index f90acd3..afe4324 100644
--- a/siteNetworks.php
+++ b/siteNetworks.php
@@ -1,7 +1,6 @@
 <?php
 $MAX_LINES = 2500;
 
-include "connect.php";
 $siteName = $_GET["site"];
 // Check if site is known
 $site = $db->prepare('SELECT id from Sites WHERE Name=:siteName');
@@ -13,17 +12,19 @@ if (!$siteId) {
 }
 ?>
 
-<html>
-    <head>
-        <title>TablIP - <?=$siteName?></title>
-        <link rel="stylesheet" href="style.css"/>
-        <script src="script.js"></script>
-    </head>
-    <body>
         <header>
-            <h1>TablIP</h1>
-            <h2><?=$siteName?></h2>
+            <nav>
+                <div class="nav-wrapper navbar-fixed cyan lighten-2">
+                    <a href="." class="brand-logo center">TablIP</a>
+                    <div>
+                        <a href="." class="breadcrumb">Sites</a>
+                        <a href=".?Site=<?=$siteName?>" class="breadcrumb"><?=$siteName?></a>
+                    </div>
+                </div>
+            </nav>
         </header>
+        <div class="container">
+            <h1><?=$siteName?></h1>
 
 <?php
 $networks = $db->query("SELECT * FROM `Networks` WHERE `SiteId` = $siteId");
@@ -33,71 +34,81 @@ while ($network = $networks->fetch())
     $networkAddress = (int) $network["Address"];
     $networkMask = (int) $network["Mask"];
 ?>
-        <table style="width:100%">
-            <caption><?=$network['Name']." : ".long2ip($networkAddress)." / ".long2ip($networkMask)?><caption>
-            <thead>
-                <tr>
-                    <th>Adresse IP</th>
-                    <th>Nom d'hôte</th>
-                    <th>FQDN</th>
-                    <th>Adresse MAC</th>
-                    <th>Commentaires</th>
-                <tr>
-                    <td><em><?= long2ip($networkAddress)?></em></td>
-                    <td colspan="4"><em>Adresse réseau</em></td>
-                </tr>
-                </tr>
-            </thead>
-            <tbody>
+            <div class="card">
+                <div class="card-content">
+                    <span class="card-title"><?=$network['Name']." @ ".long2ip($networkAddress)." / ".long2ip($networkMask)?></span>
+                    <table class="striped responsive-table">
+                        <thead>
+                            <tr>
+                                <th>Adresse IP</th>
+                                <th>Nom d'hôte</th>
+                                <th>FQDN</th>
+                                <th>Adresse MAC</th>
+                                <th>Commentaires</th>
+                            <tr>
+                                <td><em><?= long2ip($networkAddress)?></em></td>
+                                <td colspan="4"><em>Adresse réseau</em></td>
+                            </tr>
+                            </tr>
+                        </thead>
+                        <tbody>
 <?php
     for ($ip = $networkAddress + 1; ($ip+1 & $networkMask) == $networkAddress && $ip < $networkAddress + $MAX_LINES; $ip++ ) {
         $hosts = $db->query("SELECT * from `Hosts` WHERE IPAddress=$ip AND NetworkId=$networkId");
         $host = $hosts->fetch();
 ?>
-                <tr>
-                    <form>
-                        <input type="hidden" name="Ip" value=<?=$ip?>/>
-                        <input type="hidden" name="NetworkId" value=<?=$networkId?>/>
-                        <td><?=long2ip($ip)?></td>
-                        <td><input type="text" onchange="updateHost(this)" name='Hostname' value="<?=$host["Hostname"]?>"/></td>
-                        <td><input type="text" onchange="updateHost(this)" name='FQDN' value="<?=$host["FQDN"]?>"/></td>
-                        <td><input type="text" onchange="updateHost(this)" name='MacAddress' value="<?=$host["MacAddress"]?>"/></td>
-                        <td><input type="text" onchange="updateHost(this)" name='Comments' value="<?=$host["Comments"]?>"/></td>
-                    </form>
-                </tr>
+                            <tr>
+                                <form>
+                                    <input type="hidden" name="Ip" value=<?=$ip?>/>
+                                    <input type="hidden" name="NetworkId" value=<?=$networkId?>/>
+                                    <td><?=long2ip($ip)?></td>
+                                    <td class="td-input"><input type="text" onchange="updateHost(this)" name='Hostname' value="<?=$host["Hostname"]?>"/></td>
+                                    <td class="td-input"><input type="text" onchange="updateHost(this)" name='FQDN' value="<?=$host["FQDN"]?>"/></td>
+                                    <td class="td-input"><input type="text" onchange="updateHost(this)" name='MacAddress' value="<?=$host["MacAddress"]?>"/></td>
+                                    <td class="td-input"><input type="text" onchange="updateHost(this)" name='Comments' value="<?=$host["Comments"]?>"/></td>
+                                </form>
+                            </tr>
 <?php
     }
 ?>                  
-                </tbody>
-                <tfoot>
-                    <tr>
-                        <td><em><?= long2ip($ip)?></em></td>
-                        <td colspan="4"><em>Adresse de diffusion</em></td>
-                    </tr>
-                </tfoot>
-        </table>
+                        </tbody>
+                        <tfoot>
+                            <tr>
+                                <td><em><?= long2ip($ip)?></em></td>
+                                <td colspan="4"><em>Adresse de diffusion</em></td>
+                            </tr>
+                        </tfoot>
+                    </table>
+                </div>
+            </div>
 <?php
 }
 $networks->closeCursor();
 ?>
 
-        <form name="addNetwork" id="addNetwork" action="addNetwork.php" method="post">
-            <fieldset class="add">
-                <legend>Ajouter un réseau</legend>
-                <label for="nameInput">Nom</label>
-                <input type="text" id="nameInput" name="name" required/>
-                <label for="gatewayInput">Passerelle</label>
-                <input type="text" id="gatewayInput" name="gateway" pattern="^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"/>
-                <label for="maskInput">Masque</label>
-                <input type="text" id="maskInput" name="mask" pattern="^((0|128|192|224|240|248|252|255)\.0\.0.0|255\.(0|128|192|224|240|248|252|255)\.0\.0|255\.255\.(0|128|192|224|240|248|252|255)\.0|255\.255\.255\.(0|128|192|224|240|248|252|255))$"'/>
-                <input type="hidden" name="siteId" value="<?=$siteId?>"/>
-                <input type="hidden" name="siteName" value="<?=$siteName?>"/>
-                <button id="addButton" type="submit">Ajouter</button>
-            </fieldset>
-        </form>
+            <div class="card teal lighten-5">
+                <div class="card-content">
+                    <span class="card-title">Nouveau réseau</span>
+                    <form name="addNetwork" id="addNetwork" action="addNetwork.php" method="post">
+                        <input type="hidden" name="siteId" value="<?=$siteId?>"/>
+                        <input type="hidden" name="siteName" value="<?=$siteName?>"/>
+                        <div class="input-field">
+                            <label for="nameInput">Nom</label>
+                            <input type="text" class="validate" id="nameInput" name="name" placeholder="LAN" required/>
+                        </div>
+                        <div class="input-field">
+                            <label for="gatewayInput">Passerelle</label>
+                            <input type="text" class="validate" id="gatewayInput" name="gateway" placeholder="192.168.0.1" pattern="^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"/>
+                        </div>
+                        <div class="input-field">
+                            <label for="maskInput">Masque</label>
+                            <input type="text" class="validate" id="maskInput" name="mask" placeholder="255.255.255.0" pattern="^((0|128|192|224|240|248|252|255)\.0\.0.0|255\.(0|128|192|224|240|248|252|255)\.0\.0|255\.255\.(0|128|192|224|240|248|252|255)\.0|255\.255\.255\.(0|128|192|224|240|248|252|255))$"'/>
+                        </div>
+                        <button type="submit" class="btn-floating halfway-fab waves-effect waves-light teal"><i class="material-icons">add</i></button>
+                    </form>
+                </div>
+            </div>
+        </div>
+
+
 
-        <footer>
-            <a href=".">Accueil</a>
-        </footer>
-    </body>
-</html>
\ No newline at end of file
diff --git a/sitesList.php b/sitesList.php
index ca3dcd3..762110b 100644
--- a/sitesList.php
+++ b/sitesList.php
@@ -1,32 +1,38 @@
-<html>
-    <head>
-        <title>TablIP</title>
-        <link rel="stylesheet" href="style.css"/>
-    </head>
-    <body>
         <header>
-            <h1>TablIP</h1>
+            <nav>
+                <div class="nav-wrapper navbar-fixed teal lighten-2">
+                    <a href="." class="brand-logo center">TablIP</a>
+                    <div>
+                        <a href="." class="breadcrumb">Sites</a>
+                    </div>
+                </div>
+            </nav>
         </header>
-        <ul>
+        <div class="container">
+            <h1>Sites</h1>
+            <div class="collection">
 
 <?php
 include "connect.php";
-$sites = $db->query('SELECT Name FROM Site ORDER BY Name');
+$sites = $db->query('SELECT Name FROM Sites ORDER BY Name');
 while ($site = $sites->fetch())
 {
-    echo "        <li><a href='.?site=${site['Name']}'>${site['Name']}</a></li>\n";
+    echo "            <a href='.?site=${site['Name']}' class='collection-item'>${site['Name']}</a>\n";
 }
 $sites->closeCursor();
 ?>
 
-        </ul>
-        <form name="addSite" id="addSite" action="addSite.php" method="post">
-            <fieldset class="add">
-                <legend>Ajouter un site</legend>
-                <label for="siteName">Nom</label>
-                <input type="text" id="siteName" name="siteName" required/>
-                <button type="submit">Ajouter</button>
-            </fieldset>
-        </form>
-    </body>
-</html>
\ No newline at end of file
+            </div>
+            <div class="card teal lighten-5">
+                <div class="card-content">
+                    <span class="card-title">Nouveau site</span>
+                    <form name="addSite" id="addSite" action="addSite.php" method="post">
+                        <div class="input-field">
+                            <label for="siteName">Nom</label>
+                            <input type="text" class="validate" id="siteName" name="siteName" placeholder="Site" required/>
+                        </div>
+                        <button type="submit" class="btn-floating halfway-fab waves-effect waves-light teal"><i class="material-icons">add</i></button>
+                    </form>
+                </div>
+            </div>
+        </div>
\ No newline at end of file
diff --git a/style.css b/style.css
deleted file mode 100644
index 096487f..0000000
--- a/style.css
+++ /dev/null
@@ -1,45 +0,0 @@
-body {
-    margin: auto 1em;
-}
-
-header {
-    text-align: center;
-}
-
-li {
-    list-style: none;
-}
-
-table {
-    border-collapse: collapse;
-}
-
-th, td {
-    border: solid 1px;
-}
-
-td {
-    padding: 0;
-}
-
-td input {
-    border: 0;
-    background-repeat: no-repeat;
-    background-position: right center;
-    width: 100%;
-}
-
-.add {
-    display: grid;
-    grid-template-columns: 1fr 2fr;
-    grid-gap: 1em;
-}
-.add button {
-    width: 100%;
-    margin: auto;
-    grid-column: 1/3;
-}
-
-footer {
-    text-align: center;
-}
\ No newline at end of file