diff options
Diffstat (limited to 'main/app/sprinkles/core/assets/userfrosting')
25 files changed, 6563 insertions, 6563 deletions
diff --git a/main/app/sprinkles/core/assets/userfrosting/css/AdminLTE-skins-all.css b/main/app/sprinkles/core/assets/userfrosting/css/AdminLTE-skins-all.css index e487cdb..ee30712 100644 --- a/main/app/sprinkles/core/assets/userfrosting/css/AdminLTE-skins-all.css +++ b/main/app/sprinkles/core/assets/userfrosting/css/AdminLTE-skins-all.css @@ -1,2178 +1,2178 @@ -/* - * Skin: Blue - * ---------- - */ -.skin-blue .main-header .navbar { - background-color: #3c8dbc; -} - -.skin-blue .main-header .navbar .nav > li > a { - color: #ffffff; -} - -.skin-blue .main-header .navbar .nav > li > a:hover, -.skin-blue .main-header .navbar .nav > li > a:active, -.skin-blue .main-header .navbar .nav > li > a:focus, -.skin-blue .main-header .navbar .nav .open > a, -.skin-blue .main-header .navbar .nav .open > a:hover, -.skin-blue .main-header .navbar .nav .open > a:focus, -.skin-blue .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} - -.skin-blue .main-header .navbar .sidebar-toggle { - color: #ffffff; -} - -.skin-blue .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} - -.skin-blue .main-header .navbar .sidebar-toggle { - color: #fff; -} - -.skin-blue .main-header .navbar .sidebar-toggle:hover { - background-color: #367fa9; -} - -@media (max-width: 767px) { - .skin-blue .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - - .skin-blue .main-header .navbar .dropdown-menu li a { - color: #fff; - } - - .skin-blue .main-header .navbar .dropdown-menu li a:hover { - background: #367fa9; - } -} - -.skin-blue .main-header .logo { - background-color: #367fa9; - color: #ffffff; - border-bottom: 0 solid transparent; -} - -.skin-blue .main-header .logo:hover { - background-color: #357ca5; -} - -.skin-blue .main-header li.user-header { - background-color: #3c8dbc; -} - -.skin-blue .content-header { - background: transparent; -} - -.skin-blue .wrapper, -.skin-blue .main-sidebar, -.skin-blue .left-side { - background-color: #222d32; -} - -.skin-blue .user-panel > .info, -.skin-blue .user-panel > .info > a { - color: #fff; -} - -.skin-blue .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} - -.skin-blue .sidebar-menu > li > a { - border-left: 3px solid transparent; -} - -.skin-blue .sidebar-menu > li:hover > a, -.skin-blue .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #3c8dbc; -} - -.skin-blue .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} - -.skin-blue .sidebar a { - color: #b8c7ce; -} - -.skin-blue .sidebar a:hover { - text-decoration: none; -} - -.skin-blue .treeview-menu > li > a { - color: #8aa4af; -} - -.skin-blue .treeview-menu > li.active > a, -.skin-blue .treeview-menu > li > a:hover { - color: #ffffff; -} - -.skin-blue .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} - -.skin-blue .sidebar-form input[type="text"], -.skin-blue .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} - -.skin-blue .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} - -.skin-blue .sidebar-form input[type="text"]:focus, -.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} - -.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} - -.skin-blue .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} - -.skin-blue.layout-top-nav .main-header > .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0 solid transparent; -} - -.skin-blue.layout-top-nav .main-header > .logo:hover { - background-color: #3b8ab8; -} - -/* - * Skin: Blue - * ---------- - */ -.skin-blue-light .main-header .navbar { - background-color: #3c8dbc; -} - -.skin-blue-light .main-header .navbar .nav > li > a { - color: #ffffff; -} - -.skin-blue-light .main-header .navbar .nav > li > a:hover, -.skin-blue-light .main-header .navbar .nav > li > a:active, -.skin-blue-light .main-header .navbar .nav > li > a:focus, -.skin-blue-light .main-header .navbar .nav .open > a, -.skin-blue-light .main-header .navbar .nav .open > a:hover, -.skin-blue-light .main-header .navbar .nav .open > a:focus, -.skin-blue-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} - -.skin-blue-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} - -.skin-blue-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} - -.skin-blue-light .main-header .navbar .sidebar-toggle { - color: #fff; -} - -.skin-blue-light .main-header .navbar .sidebar-toggle:hover { - background-color: #367fa9; -} - -@media (max-width: 767px) { - .skin-blue-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - - .skin-blue-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - - .skin-blue-light .main-header .navbar .dropdown-menu li a:hover { - background: #367fa9; - } -} - -.skin-blue-light .main-header .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0 solid transparent; -} - -.skin-blue-light .main-header .logo:hover { - background-color: #3b8ab8; -} - -.skin-blue-light .main-header li.user-header { - background-color: #3c8dbc; -} - -.skin-blue-light .content-header { - background: transparent; -} - -.skin-blue-light .wrapper, -.skin-blue-light .main-sidebar, -.skin-blue-light .left-side { - background-color: #f9fafc; -} - -.skin-blue-light .content-wrapper, -.skin-blue-light .main-footer { - border-left: 1px solid #d2d6de; -} - -.skin-blue-light .user-panel > .info, -.skin-blue-light .user-panel > .info > a { - color: #444444; -} - -.skin-blue-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} - -.skin-blue-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} - -.skin-blue-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} - -.skin-blue-light .sidebar-menu > li:hover > a, -.skin-blue-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} - -.skin-blue-light .sidebar-menu > li.active { - border-left-color: #3c8dbc; -} - -.skin-blue-light .sidebar-menu > li.active > a { - font-weight: 600; -} - -.skin-blue-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} - -.skin-blue-light .sidebar a { - color: #444444; -} - -.skin-blue-light .sidebar a:hover { - text-decoration: none; -} - -.skin-blue-light .treeview-menu > li > a { - color: #777777; -} - -.skin-blue-light .treeview-menu > li.active > a, -.skin-blue-light .treeview-menu > li > a:hover { - color: #000000; -} - -.skin-blue-light .treeview-menu > li.active > a { - font-weight: 600; -} - -.skin-blue-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} - -.skin-blue-light .sidebar-form input[type="text"], -.skin-blue-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} - -.skin-blue-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} - -.skin-blue-light .sidebar-form input[type="text"]:focus, -.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} - -.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} - -.skin-blue-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} - -@media (min-width: 768px) { - .skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} - -.skin-blue-light .main-footer { - border-top-color: #d2d6de; -} - -.skin-blue.layout-top-nav .main-header > .logo { - background-color: #3c8dbc; - color: #ffffff; - border-bottom: 0 solid transparent; -} - -.skin-blue.layout-top-nav .main-header > .logo:hover { - background-color: #3b8ab8; -} - -/* - * Skin: Black - * ----------- - */ -/* skin-black navbar */ -.skin-black .main-header { - -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); -} - -.skin-black .main-header .navbar-toggle { - color: #333; -} - -.skin-black .main-header .navbar-brand { - color: #333; - border-right: 1px solid #eee; -} - -.skin-black .main-header .navbar { - background-color: #ffffff; -} - -.skin-black .main-header .navbar .nav > li > a { - color: #333333; -} - -.skin-black .main-header .navbar .nav > li > a:hover, -.skin-black .main-header .navbar .nav > li > a:active, -.skin-black .main-header .navbar .nav > li > a:focus, -.skin-black .main-header .navbar .nav .open > a, -.skin-black .main-header .navbar .nav .open > a:hover, -.skin-black .main-header .navbar .nav .open > a:focus, -.skin-black .main-header .navbar .nav > .active > a { - background: #ffffff; - color: #999999; -} - -.skin-black .main-header .navbar .sidebar-toggle { - color: #333333; -} - -.skin-black .main-header .navbar .sidebar-toggle:hover { - color: #999999; - background: #ffffff; -} - -.skin-black .main-header .navbar > .sidebar-toggle { - color: #333; - border-right: 1px solid #eee; -} - -.skin-black .main-header .navbar .navbar-nav > li > a { - border-right: 1px solid #eee; -} - -.skin-black .main-header .navbar .navbar-custom-menu .navbar-nav > li > a, -.skin-black .main-header .navbar .navbar-right > li > a { - border-left: 1px solid #eee; - border-right-width: 0; -} - -.skin-black .main-header > .logo { - background-color: #ffffff; - color: #333333; - border-bottom: 0 solid transparent; - border-right: 1px solid #eee; -} - -.skin-black .main-header > .logo:hover { - background-color: #fcfcfc; -} - -@media (max-width: 767px) { - .skin-black .main-header > .logo { - background-color: #222222; - color: #ffffff; - border-bottom: 0 solid transparent; - border-right: none; - } - - .skin-black .main-header > .logo:hover { - background-color: #1f1f1f; - } -} - -.skin-black .main-header li.user-header { - background-color: #222; -} - -.skin-black .content-header { - background: transparent; - box-shadow: none; -} - -.skin-black .wrapper, -.skin-black .main-sidebar, -.skin-black .left-side { - background-color: #222d32; -} - -.skin-black .user-panel > .info, -.skin-black .user-panel > .info > a { - color: #fff; -} - -.skin-black .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} - -.skin-black .sidebar-menu > li > a { - border-left: 3px solid transparent; -} - -.skin-black .sidebar-menu > li:hover > a, -.skin-black .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #ffffff; -} - -.skin-black .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} - -.skin-black .sidebar a { - color: #b8c7ce; -} - -.skin-black .sidebar a:hover { - text-decoration: none; -} - -.skin-black .treeview-menu > li > a { - color: #8aa4af; -} - -.skin-black .treeview-menu > li.active > a, -.skin-black .treeview-menu > li > a:hover { - color: #ffffff; -} - -.skin-black .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} - -.skin-black .sidebar-form input[type="text"], -.skin-black .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} - -.skin-black .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} - -.skin-black .sidebar-form input[type="text"]:focus, -.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} - -.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} - -.skin-black .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} - -.skin-black .pace .pace-progress { - background: #222; -} - -.skin-black .pace .pace-activity { - border-top-color: #222; - border-left-color: #222; -} - -/* - * Skin: Black - * ----------- - */ -/* skin-black navbar */ -.skin-black-light .main-header { - -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); - box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05); -} - -.skin-black-light .main-header .navbar-toggle { - color: #333; -} - -.skin-black-light .main-header .navbar-brand { - color: #333; - border-right: 1px solid #eee; -} - -.skin-black-light .main-header .navbar { - background-color: #ffffff; -} - -.skin-black-light .main-header .navbar .nav > li > a { - color: #333333; -} - -.skin-black-light .main-header .navbar .nav > li > a:hover, -.skin-black-light .main-header .navbar .nav > li > a:active, -.skin-black-light .main-header .navbar .nav > li > a:focus, -.skin-black-light .main-header .navbar .nav .open > a, -.skin-black-light .main-header .navbar .nav .open > a:hover, -.skin-black-light .main-header .navbar .nav .open > a:focus, -.skin-black-light .main-header .navbar .nav > .active > a { - background: #ffffff; - color: #999999; -} - -.skin-black-light .main-header .navbar .sidebar-toggle { - color: #333333; -} - -.skin-black-light .main-header .navbar .sidebar-toggle:hover { - color: #999999; - background: #ffffff; -} - -.skin-black-light .main-header .navbar > .sidebar-toggle { - color: #333; - border-right: 1px solid #eee; -} - -.skin-black-light .main-header .navbar .navbar-nav > li > a { - border-right: 1px solid #eee; -} - -.skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav > li > a, -.skin-black-light .main-header .navbar .navbar-right > li > a { - border-left: 1px solid #eee; - border-right-width: 0; -} - -.skin-black-light .main-header > .logo { - background-color: #ffffff; - color: #333333; - border-bottom: 0 solid transparent; - border-right: 1px solid #eee; -} - -.skin-black-light .main-header > .logo:hover { - background-color: #fcfcfc; -} - -@media (max-width: 767px) { - .skin-black-light .main-header > .logo { - background-color: #222222; - color: #ffffff; - border-bottom: 0 solid transparent; - border-right: none; - } - - .skin-black-light .main-header > .logo:hover { - background-color: #1f1f1f; - } -} - -.skin-black-light .main-header li.user-header { - background-color: #222; -} - -.skin-black-light .content-header { - background: transparent; - box-shadow: none; -} - -.skin-black-light .wrapper, -.skin-black-light .main-sidebar, -.skin-black-light .left-side { - background-color: #f9fafc; -} - -.skin-black-light .content-wrapper, -.skin-black-light .main-footer { - border-left: 1px solid #d2d6de; -} - -.skin-black-light .user-panel > .info, -.skin-black-light .user-panel > .info > a { - color: #444444; -} - -.skin-black-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} - -.skin-black-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} - -.skin-black-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} - -.skin-black-light .sidebar-menu > li:hover > a, -.skin-black-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} - -.skin-black-light .sidebar-menu > li.active { - border-left-color: #ffffff; -} - -.skin-black-light .sidebar-menu > li.active > a { - font-weight: 600; -} - -.skin-black-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} - -.skin-black-light .sidebar a { - color: #444444; -} - -.skin-black-light .sidebar a:hover { - text-decoration: none; -} - -.skin-black-light .treeview-menu > li > a { - color: #777777; -} - -.skin-black-light .treeview-menu > li.active > a, -.skin-black-light .treeview-menu > li > a:hover { - color: #000000; -} - -.skin-black-light .treeview-menu > li.active > a { - font-weight: 600; -} - -.skin-black-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} - -.skin-black-light .sidebar-form input[type="text"], -.skin-black-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} - -.skin-black-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} - -.skin-black-light .sidebar-form input[type="text"]:focus, -.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} - -.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} - -.skin-black-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} - -@media (min-width: 768px) { - .skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} - -/* - * Skin: Green - * ----------- - */ -.skin-green .main-header .navbar { - background-color: #00a65a; -} - -.skin-green .main-header .navbar .nav > li > a { - color: #ffffff; -} - -.skin-green .main-header .navbar .nav > li > a:hover, -.skin-green .main-header .navbar .nav > li > a:active, -.skin-green .main-header .navbar .nav > li > a:focus, -.skin-green .main-header .navbar .nav .open > a, -.skin-green .main-header .navbar .nav .open > a:hover, -.skin-green .main-header .navbar .nav .open > a:focus, -.skin-green .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} - -.skin-green .main-header .navbar .sidebar-toggle { - color: #ffffff; -} - -.skin-green .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} - -.skin-green .main-header .navbar .sidebar-toggle { - color: #fff; -} - -.skin-green .main-header .navbar .sidebar-toggle:hover { - background-color: #008d4c; -} - -@media (max-width: 767px) { - .skin-green .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - - .skin-green .main-header .navbar .dropdown-menu li a { - color: #fff; - } - - .skin-green .main-header .navbar .dropdown-menu li a:hover { - background: #008d4c; - } -} - -.skin-green .main-header .logo { - background-color: #008d4c; - color: #ffffff; - border-bottom: 0 solid transparent; -} - -.skin-green .main-header .logo:hover { - background-color: #008749; -} - -.skin-green .main-header li.user-header { - background-color: #00a65a; -} - -.skin-green .content-header { - background: transparent; -} - -.skin-green .wrapper, -.skin-green .main-sidebar, -.skin-green .left-side { - background-color: #222d32; -} - -.skin-green .user-panel > .info, -.skin-green .user-panel > .info > a { - color: #fff; -} - -.skin-green .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} - -.skin-green .sidebar-menu > li > a { - border-left: 3px solid transparent; -} - -.skin-green .sidebar-menu > li:hover > a, -.skin-green .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #00a65a; -} - -.skin-green .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} - -.skin-green .sidebar a { - color: #b8c7ce; -} - -.skin-green .sidebar a:hover { - text-decoration: none; -} - -.skin-green .treeview-menu > li > a { - color: #8aa4af; -} - -.skin-green .treeview-menu > li.active > a, -.skin-green .treeview-menu > li > a:hover { - color: #ffffff; -} - -.skin-green .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} - -.skin-green .sidebar-form input[type="text"], -.skin-green .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} - -.skin-green .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} - -.skin-green .sidebar-form input[type="text"]:focus, -.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} - -.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} - -.skin-green .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} - -/* - * Skin: Green - * ----------- - */ -.skin-green-light .main-header .navbar { - background-color: #00a65a; -} - -.skin-green-light .main-header .navbar .nav > li > a { - color: #ffffff; -} - -.skin-green-light .main-header .navbar .nav > li > a:hover, -.skin-green-light .main-header .navbar .nav > li > a:active, -.skin-green-light .main-header .navbar .nav > li > a:focus, -.skin-green-light .main-header .navbar .nav .open > a, -.skin-green-light .main-header .navbar .nav .open > a:hover, -.skin-green-light .main-header .navbar .nav .open > a:focus, -.skin-green-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} - -.skin-green-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} - -.skin-green-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} - -.skin-green-light .main-header .navbar .sidebar-toggle { - color: #fff; -} - -.skin-green-light .main-header .navbar .sidebar-toggle:hover { - background-color: #008d4c; -} - -@media (max-width: 767px) { - .skin-green-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - - .skin-green-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - - .skin-green-light .main-header .navbar .dropdown-menu li a:hover { - background: #008d4c; - } -} - -.skin-green-light .main-header .logo { - background-color: #00a65a; - color: #ffffff; - border-bottom: 0 solid transparent; -} - -.skin-green-light .main-header .logo:hover { - background-color: #00a157; -} - -.skin-green-light .main-header li.user-header { - background-color: #00a65a; -} - -.skin-green-light .content-header { - background: transparent; -} - -.skin-green-light .wrapper, -.skin-green-light .main-sidebar, -.skin-green-light .left-side { - background-color: #f9fafc; -} - -.skin-green-light .content-wrapper, -.skin-green-light .main-footer { - border-left: 1px solid #d2d6de; -} - -.skin-green-light .user-panel > .info, -.skin-green-light .user-panel > .info > a { - color: #444444; -} - -.skin-green-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} - -.skin-green-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} - -.skin-green-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} - -.skin-green-light .sidebar-menu > li:hover > a, -.skin-green-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} - -.skin-green-light .sidebar-menu > li.active { - border-left-color: #00a65a; -} - -.skin-green-light .sidebar-menu > li.active > a { - font-weight: 600; -} - -.skin-green-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} - -.skin-green-light .sidebar a { - color: #444444; -} - -.skin-green-light .sidebar a:hover { - text-decoration: none; -} - -.skin-green-light .treeview-menu > li > a { - color: #777777; -} - -.skin-green-light .treeview-menu > li.active > a, -.skin-green-light .treeview-menu > li > a:hover { - color: #000000; -} - -.skin-green-light .treeview-menu > li.active > a { - font-weight: 600; -} - -.skin-green-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} - -.skin-green-light .sidebar-form input[type="text"], -.skin-green-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} - -.skin-green-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} - -.skin-green-light .sidebar-form input[type="text"]:focus, -.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} - -.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} - -.skin-green-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} - -@media (min-width: 768px) { - .skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} - -/* - * Skin: Red - * --------- - */ -.skin-red .main-header .navbar { - background-color: #dd4b39; -} - -.skin-red .main-header .navbar .nav > li > a { - color: #ffffff; -} - -.skin-red .main-header .navbar .nav > li > a:hover, -.skin-red .main-header .navbar .nav > li > a:active, -.skin-red .main-header .navbar .nav > li > a:focus, -.skin-red .main-header .navbar .nav .open > a, -.skin-red .main-header .navbar .nav .open > a:hover, -.skin-red .main-header .navbar .nav .open > a:focus, -.skin-red .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} - -.skin-red .main-header .navbar .sidebar-toggle { - color: #ffffff; -} - -.skin-red .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} - -.skin-red .main-header .navbar .sidebar-toggle { - color: #fff; -} - -.skin-red .main-header .navbar .sidebar-toggle:hover { - background-color: #d73925; -} - -@media (max-width: 767px) { - .skin-red .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - - .skin-red .main-header .navbar .dropdown-menu li a { - color: #fff; - } - - .skin-red .main-header .navbar .dropdown-menu li a:hover { - background: #d73925; - } -} - -.skin-red .main-header .logo { - background-color: #d73925; - color: #ffffff; - border-bottom: 0 solid transparent; -} - -.skin-red .main-header .logo:hover { - background-color: #d33724; -} - -.skin-red .main-header li.user-header { - background-color: #dd4b39; -} - -.skin-red .content-header { - background: transparent; -} - -.skin-red .wrapper, -.skin-red .main-sidebar, -.skin-red .left-side { - background-color: #222d32; -} - -.skin-red .user-panel > .info, -.skin-red .user-panel > .info > a { - color: #fff; -} - -.skin-red .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} - -.skin-red .sidebar-menu > li > a { - border-left: 3px solid transparent; -} - -.skin-red .sidebar-menu > li:hover > a, -.skin-red .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #dd4b39; -} - -.skin-red .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} - -.skin-red .sidebar a { - color: #b8c7ce; -} - -.skin-red .sidebar a:hover { - text-decoration: none; -} - -.skin-red .treeview-menu > li > a { - color: #8aa4af; -} - -.skin-red .treeview-menu > li.active > a, -.skin-red .treeview-menu > li > a:hover { - color: #ffffff; -} - -.skin-red .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} - -.skin-red .sidebar-form input[type="text"], -.skin-red .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} - -.skin-red .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} - -.skin-red .sidebar-form input[type="text"]:focus, -.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} - -.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} - -.skin-red .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} - -/* - * Skin: Red - * --------- - */ -.skin-red-light .main-header .navbar { - background-color: #dd4b39; -} - -.skin-red-light .main-header .navbar .nav > li > a { - color: #ffffff; -} - -.skin-red-light .main-header .navbar .nav > li > a:hover, -.skin-red-light .main-header .navbar .nav > li > a:active, -.skin-red-light .main-header .navbar .nav > li > a:focus, -.skin-red-light .main-header .navbar .nav .open > a, -.skin-red-light .main-header .navbar .nav .open > a:hover, -.skin-red-light .main-header .navbar .nav .open > a:focus, -.skin-red-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} - -.skin-red-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} - -.skin-red-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} - -.skin-red-light .main-header .navbar .sidebar-toggle { - color: #fff; -} - -.skin-red-light .main-header .navbar .sidebar-toggle:hover { - background-color: #d73925; -} - -@media (max-width: 767px) { - .skin-red-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - - .skin-red-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - - .skin-red-light .main-header .navbar .dropdown-menu li a:hover { - background: #d73925; - } -} - -.skin-red-light .main-header .logo { - background-color: #dd4b39; - color: #ffffff; - border-bottom: 0 solid transparent; -} - -.skin-red-light .main-header .logo:hover { - background-color: #dc4735; -} - -.skin-red-light .main-header li.user-header { - background-color: #dd4b39; -} - -.skin-red-light .content-header { - background: transparent; -} - -.skin-red-light .wrapper, -.skin-red-light .main-sidebar, -.skin-red-light .left-side { - background-color: #f9fafc; -} - -.skin-red-light .content-wrapper, -.skin-red-light .main-footer { - border-left: 1px solid #d2d6de; -} - -.skin-red-light .user-panel > .info, -.skin-red-light .user-panel > .info > a { - color: #444444; -} - -.skin-red-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} - -.skin-red-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} - -.skin-red-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} - -.skin-red-light .sidebar-menu > li:hover > a, -.skin-red-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} - -.skin-red-light .sidebar-menu > li.active { - border-left-color: #dd4b39; -} - -.skin-red-light .sidebar-menu > li.active > a { - font-weight: 600; -} - -.skin-red-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} - -.skin-red-light .sidebar a { - color: #444444; -} - -.skin-red-light .sidebar a:hover { - text-decoration: none; -} - -.skin-red-light .treeview-menu > li > a { - color: #777777; -} - -.skin-red-light .treeview-menu > li.active > a, -.skin-red-light .treeview-menu > li > a:hover { - color: #000000; -} - -.skin-red-light .treeview-menu > li.active > a { - font-weight: 600; -} - -.skin-red-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} - -.skin-red-light .sidebar-form input[type="text"], -.skin-red-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} - -.skin-red-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} - -.skin-red-light .sidebar-form input[type="text"]:focus, -.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} - -.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} - -.skin-red-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} - -@media (min-width: 768px) { - .skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} - -/* - * Skin: Yellow - * ------------ - */ -.skin-yellow .main-header .navbar { - background-color: #f39c12; -} - -.skin-yellow .main-header .navbar .nav > li > a { - color: #ffffff; -} - -.skin-yellow .main-header .navbar .nav > li > a:hover, -.skin-yellow .main-header .navbar .nav > li > a:active, -.skin-yellow .main-header .navbar .nav > li > a:focus, -.skin-yellow .main-header .navbar .nav .open > a, -.skin-yellow .main-header .navbar .nav .open > a:hover, -.skin-yellow .main-header .navbar .nav .open > a:focus, -.skin-yellow .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} - -.skin-yellow .main-header .navbar .sidebar-toggle { - color: #ffffff; -} - -.skin-yellow .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} - -.skin-yellow .main-header .navbar .sidebar-toggle { - color: #fff; -} - -.skin-yellow .main-header .navbar .sidebar-toggle:hover { - background-color: #e08e0b; -} - -@media (max-width: 767px) { - .skin-yellow .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - - .skin-yellow .main-header .navbar .dropdown-menu li a { - color: #fff; - } - - .skin-yellow .main-header .navbar .dropdown-menu li a:hover { - background: #e08e0b; - } -} - -.skin-yellow .main-header .logo { - background-color: #e08e0b; - color: #ffffff; - border-bottom: 0 solid transparent; -} - -.skin-yellow .main-header .logo:hover { - background-color: #db8b0b; -} - -.skin-yellow .main-header li.user-header { - background-color: #f39c12; -} - -.skin-yellow .content-header { - background: transparent; -} - -.skin-yellow .wrapper, -.skin-yellow .main-sidebar, -.skin-yellow .left-side { - background-color: #222d32; -} - -.skin-yellow .user-panel > .info, -.skin-yellow .user-panel > .info > a { - color: #fff; -} - -.skin-yellow .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} - -.skin-yellow .sidebar-menu > li > a { - border-left: 3px solid transparent; -} - -.skin-yellow .sidebar-menu > li:hover > a, -.skin-yellow .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #f39c12; -} - -.skin-yellow .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} - -.skin-yellow .sidebar a { - color: #b8c7ce; -} - -.skin-yellow .sidebar a:hover { - text-decoration: none; -} - -.skin-yellow .treeview-menu > li > a { - color: #8aa4af; -} - -.skin-yellow .treeview-menu > li.active > a, -.skin-yellow .treeview-menu > li > a:hover { - color: #ffffff; -} - -.skin-yellow .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} - -.skin-yellow .sidebar-form input[type="text"], -.skin-yellow .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} - -.skin-yellow .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} - -.skin-yellow .sidebar-form input[type="text"]:focus, -.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} - -.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} - -.skin-yellow .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} - -/* - * Skin: Yellow - * ------------ - */ -.skin-yellow-light .main-header .navbar { - background-color: #f39c12; -} - -.skin-yellow-light .main-header .navbar .nav > li > a { - color: #ffffff; -} - -.skin-yellow-light .main-header .navbar .nav > li > a:hover, -.skin-yellow-light .main-header .navbar .nav > li > a:active, -.skin-yellow-light .main-header .navbar .nav > li > a:focus, -.skin-yellow-light .main-header .navbar .nav .open > a, -.skin-yellow-light .main-header .navbar .nav .open > a:hover, -.skin-yellow-light .main-header .navbar .nav .open > a:focus, -.skin-yellow-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} - -.skin-yellow-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} - -.skin-yellow-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} - -.skin-yellow-light .main-header .navbar .sidebar-toggle { - color: #fff; -} - -.skin-yellow-light .main-header .navbar .sidebar-toggle:hover { - background-color: #e08e0b; -} - -@media (max-width: 767px) { - .skin-yellow-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - - .skin-yellow-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - - .skin-yellow-light .main-header .navbar .dropdown-menu li a:hover { - background: #e08e0b; - } -} - -.skin-yellow-light .main-header .logo { - background-color: #f39c12; - color: #ffffff; - border-bottom: 0 solid transparent; -} - -.skin-yellow-light .main-header .logo:hover { - background-color: #f39a0d; -} - -.skin-yellow-light .main-header li.user-header { - background-color: #f39c12; -} - -.skin-yellow-light .content-header { - background: transparent; -} - -.skin-yellow-light .wrapper, -.skin-yellow-light .main-sidebar, -.skin-yellow-light .left-side { - background-color: #f9fafc; -} - -.skin-yellow-light .content-wrapper, -.skin-yellow-light .main-footer { - border-left: 1px solid #d2d6de; -} - -.skin-yellow-light .user-panel > .info, -.skin-yellow-light .user-panel > .info > a { - color: #444444; -} - -.skin-yellow-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} - -.skin-yellow-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} - -.skin-yellow-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} - -.skin-yellow-light .sidebar-menu > li:hover > a, -.skin-yellow-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} - -.skin-yellow-light .sidebar-menu > li.active { - border-left-color: #f39c12; -} - -.skin-yellow-light .sidebar-menu > li.active > a { - font-weight: 600; -} - -.skin-yellow-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} - -.skin-yellow-light .sidebar a { - color: #444444; -} - -.skin-yellow-light .sidebar a:hover { - text-decoration: none; -} - -.skin-yellow-light .treeview-menu > li > a { - color: #777777; -} - -.skin-yellow-light .treeview-menu > li.active > a, -.skin-yellow-light .treeview-menu > li > a:hover { - color: #000000; -} - -.skin-yellow-light .treeview-menu > li.active > a { - font-weight: 600; -} - -.skin-yellow-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} - -.skin-yellow-light .sidebar-form input[type="text"], -.skin-yellow-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} - -.skin-yellow-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} - -.skin-yellow-light .sidebar-form input[type="text"]:focus, -.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} - -.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} - -.skin-yellow-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} - -@media (min-width: 768px) { - .skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} - -/* - * Skin: Purple - * ------------ - */ -.skin-purple .main-header .navbar { - background-color: #605ca8; -} - -.skin-purple .main-header .navbar .nav > li > a { - color: #ffffff; -} - -.skin-purple .main-header .navbar .nav > li > a:hover, -.skin-purple .main-header .navbar .nav > li > a:active, -.skin-purple .main-header .navbar .nav > li > a:focus, -.skin-purple .main-header .navbar .nav .open > a, -.skin-purple .main-header .navbar .nav .open > a:hover, -.skin-purple .main-header .navbar .nav .open > a:focus, -.skin-purple .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} - -.skin-purple .main-header .navbar .sidebar-toggle { - color: #ffffff; -} - -.skin-purple .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} - -.skin-purple .main-header .navbar .sidebar-toggle { - color: #fff; -} - -.skin-purple .main-header .navbar .sidebar-toggle:hover { - background-color: #555299; -} - -@media (max-width: 767px) { - .skin-purple .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - - .skin-purple .main-header .navbar .dropdown-menu li a { - color: #fff; - } - - .skin-purple .main-header .navbar .dropdown-menu li a:hover { - background: #555299; - } -} - -.skin-purple .main-header .logo { - background-color: #555299; - color: #ffffff; - border-bottom: 0 solid transparent; -} - -.skin-purple .main-header .logo:hover { - background-color: #545096; -} - -.skin-purple .main-header li.user-header { - background-color: #605ca8; -} - -.skin-purple .content-header { - background: transparent; -} - -.skin-purple .wrapper, -.skin-purple .main-sidebar, -.skin-purple .left-side { - background-color: #222d32; -} - -.skin-purple .user-panel > .info, -.skin-purple .user-panel > .info > a { - color: #fff; -} - -.skin-purple .sidebar-menu > li.header { - color: #4b646f; - background: #1a2226; -} - -.skin-purple .sidebar-menu > li > a { - border-left: 3px solid transparent; -} - -.skin-purple .sidebar-menu > li:hover > a, -.skin-purple .sidebar-menu > li.active > a { - color: #ffffff; - background: #1e282c; - border-left-color: #605ca8; -} - -.skin-purple .sidebar-menu > li > .treeview-menu { - margin: 0 1px; - background: #2c3b41; -} - -.skin-purple .sidebar a { - color: #b8c7ce; -} - -.skin-purple .sidebar a:hover { - text-decoration: none; -} - -.skin-purple .treeview-menu > li > a { - color: #8aa4af; -} - -.skin-purple .treeview-menu > li.active > a, -.skin-purple .treeview-menu > li > a:hover { - color: #ffffff; -} - -.skin-purple .sidebar-form { - border-radius: 3px; - border: 1px solid #374850; - margin: 10px 10px; -} - -.skin-purple .sidebar-form input[type="text"], -.skin-purple .sidebar-form .btn { - box-shadow: none; - background-color: #374850; - border: 1px solid transparent; - height: 35px; -} - -.skin-purple .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} - -.skin-purple .sidebar-form input[type="text"]:focus, -.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} - -.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} - -.skin-purple .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} - -/* - * Skin: Purple - * ------------ - */ -.skin-purple-light .main-header .navbar { - background-color: #605ca8; -} - -.skin-purple-light .main-header .navbar .nav > li > a { - color: #ffffff; -} - -.skin-purple-light .main-header .navbar .nav > li > a:hover, -.skin-purple-light .main-header .navbar .nav > li > a:active, -.skin-purple-light .main-header .navbar .nav > li > a:focus, -.skin-purple-light .main-header .navbar .nav .open > a, -.skin-purple-light .main-header .navbar .nav .open > a:hover, -.skin-purple-light .main-header .navbar .nav .open > a:focus, -.skin-purple-light .main-header .navbar .nav > .active > a { - background: rgba(0, 0, 0, 0.1); - color: #f6f6f6; -} - -.skin-purple-light .main-header .navbar .sidebar-toggle { - color: #ffffff; -} - -.skin-purple-light .main-header .navbar .sidebar-toggle:hover { - color: #f6f6f6; - background: rgba(0, 0, 0, 0.1); -} - -.skin-purple-light .main-header .navbar .sidebar-toggle { - color: #fff; -} - -.skin-purple-light .main-header .navbar .sidebar-toggle:hover { - background-color: #555299; -} - -@media (max-width: 767px) { - .skin-purple-light .main-header .navbar .dropdown-menu li.divider { - background-color: rgba(255, 255, 255, 0.1); - } - - .skin-purple-light .main-header .navbar .dropdown-menu li a { - color: #fff; - } - - .skin-purple-light .main-header .navbar .dropdown-menu li a:hover { - background: #555299; - } -} - -.skin-purple-light .main-header .logo { - background-color: #605ca8; - color: #ffffff; - border-bottom: 0 solid transparent; -} - -.skin-purple-light .main-header .logo:hover { - background-color: #5d59a6; -} - -.skin-purple-light .main-header li.user-header { - background-color: #605ca8; -} - -.skin-purple-light .content-header { - background: transparent; -} - -.skin-purple-light .wrapper, -.skin-purple-light .main-sidebar, -.skin-purple-light .left-side { - background-color: #f9fafc; -} - -.skin-purple-light .content-wrapper, -.skin-purple-light .main-footer { - border-left: 1px solid #d2d6de; -} - -.skin-purple-light .user-panel > .info, -.skin-purple-light .user-panel > .info > a { - color: #444444; -} - -.skin-purple-light .sidebar-menu > li { - -webkit-transition: border-left-color 0.3s ease; - -o-transition: border-left-color 0.3s ease; - transition: border-left-color 0.3s ease; -} - -.skin-purple-light .sidebar-menu > li.header { - color: #848484; - background: #f9fafc; -} - -.skin-purple-light .sidebar-menu > li > a { - border-left: 3px solid transparent; - font-weight: 600; -} - -.skin-purple-light .sidebar-menu > li:hover > a, -.skin-purple-light .sidebar-menu > li.active > a { - color: #000000; - background: #f4f4f5; -} - -.skin-purple-light .sidebar-menu > li.active { - border-left-color: #605ca8; -} - -.skin-purple-light .sidebar-menu > li.active > a { - font-weight: 600; -} - -.skin-purple-light .sidebar-menu > li > .treeview-menu { - background: #f4f4f5; -} - -.skin-purple-light .sidebar a { - color: #444444; -} - -.skin-purple-light .sidebar a:hover { - text-decoration: none; -} - -.skin-purple-light .treeview-menu > li > a { - color: #777777; -} - -.skin-purple-light .treeview-menu > li.active > a, -.skin-purple-light .treeview-menu > li > a:hover { - color: #000000; -} - -.skin-purple-light .treeview-menu > li.active > a { - font-weight: 600; -} - -.skin-purple-light .sidebar-form { - border-radius: 3px; - border: 1px solid #d2d6de; - margin: 10px 10px; -} - -.skin-purple-light .sidebar-form input[type="text"], -.skin-purple-light .sidebar-form .btn { - box-shadow: none; - background-color: #fff; - border: 1px solid transparent; - height: 35px; -} - -.skin-purple-light .sidebar-form input[type="text"] { - color: #666; - border-top-left-radius: 2px; - border-top-right-radius: 0; - border-bottom-right-radius: 0; - border-bottom-left-radius: 2px; -} - -.skin-purple-light .sidebar-form input[type="text"]:focus, -.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - background-color: #fff; - color: #666; -} - -.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn { - border-left-color: #fff; -} - -.skin-purple-light .sidebar-form .btn { - color: #999; - border-top-left-radius: 0; - border-top-right-radius: 2px; - border-bottom-right-radius: 2px; - border-bottom-left-radius: 0; -} - -@media (min-width: 768px) { - .skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu { - border-left: 1px solid #d2d6de; - } -} +/*
+ * Skin: Blue
+ * ----------
+ */
+.skin-blue .main-header .navbar {
+ background-color: #3c8dbc;
+}
+
+.skin-blue .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+
+.skin-blue .main-header .navbar .nav > li > a:hover,
+.skin-blue .main-header .navbar .nav > li > a:active,
+.skin-blue .main-header .navbar .nav > li > a:focus,
+.skin-blue .main-header .navbar .nav .open > a,
+.skin-blue .main-header .navbar .nav .open > a:hover,
+.skin-blue .main-header .navbar .nav .open > a:focus,
+.skin-blue .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+
+.skin-blue .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+
+.skin-blue .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+
+.skin-blue .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+
+.skin-blue .main-header .navbar .sidebar-toggle:hover {
+ background-color: #367fa9;
+}
+
+@media (max-width: 767px) {
+ .skin-blue .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+
+ .skin-blue .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+
+ .skin-blue .main-header .navbar .dropdown-menu li a:hover {
+ background: #367fa9;
+ }
+}
+
+.skin-blue .main-header .logo {
+ background-color: #367fa9;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+
+.skin-blue .main-header .logo:hover {
+ background-color: #357ca5;
+}
+
+.skin-blue .main-header li.user-header {
+ background-color: #3c8dbc;
+}
+
+.skin-blue .content-header {
+ background: transparent;
+}
+
+.skin-blue .wrapper,
+.skin-blue .main-sidebar,
+.skin-blue .left-side {
+ background-color: #222d32;
+}
+
+.skin-blue .user-panel > .info,
+.skin-blue .user-panel > .info > a {
+ color: #fff;
+}
+
+.skin-blue .sidebar-menu > li.header {
+ color: #4b646f;
+ background: #1a2226;
+}
+
+.skin-blue .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+}
+
+.skin-blue .sidebar-menu > li:hover > a,
+.skin-blue .sidebar-menu > li.active > a {
+ color: #ffffff;
+ background: #1e282c;
+ border-left-color: #3c8dbc;
+}
+
+.skin-blue .sidebar-menu > li > .treeview-menu {
+ margin: 0 1px;
+ background: #2c3b41;
+}
+
+.skin-blue .sidebar a {
+ color: #b8c7ce;
+}
+
+.skin-blue .sidebar a:hover {
+ text-decoration: none;
+}
+
+.skin-blue .treeview-menu > li > a {
+ color: #8aa4af;
+}
+
+.skin-blue .treeview-menu > li.active > a,
+.skin-blue .treeview-menu > li > a:hover {
+ color: #ffffff;
+}
+
+.skin-blue .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #374850;
+ margin: 10px 10px;
+}
+
+.skin-blue .sidebar-form input[type="text"],
+.skin-blue .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #374850;
+ border: 1px solid transparent;
+ height: 35px;
+}
+
+.skin-blue .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+
+.skin-blue .sidebar-form input[type="text"]:focus,
+.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+
+.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+
+.skin-blue .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+
+.skin-blue.layout-top-nav .main-header > .logo {
+ background-color: #3c8dbc;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+
+.skin-blue.layout-top-nav .main-header > .logo:hover {
+ background-color: #3b8ab8;
+}
+
+/*
+ * Skin: Blue
+ * ----------
+ */
+.skin-blue-light .main-header .navbar {
+ background-color: #3c8dbc;
+}
+
+.skin-blue-light .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+
+.skin-blue-light .main-header .navbar .nav > li > a:hover,
+.skin-blue-light .main-header .navbar .nav > li > a:active,
+.skin-blue-light .main-header .navbar .nav > li > a:focus,
+.skin-blue-light .main-header .navbar .nav .open > a,
+.skin-blue-light .main-header .navbar .nav .open > a:hover,
+.skin-blue-light .main-header .navbar .nav .open > a:focus,
+.skin-blue-light .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+
+.skin-blue-light .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+
+.skin-blue-light .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+
+.skin-blue-light .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+
+.skin-blue-light .main-header .navbar .sidebar-toggle:hover {
+ background-color: #367fa9;
+}
+
+@media (max-width: 767px) {
+ .skin-blue-light .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+
+ .skin-blue-light .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+
+ .skin-blue-light .main-header .navbar .dropdown-menu li a:hover {
+ background: #367fa9;
+ }
+}
+
+.skin-blue-light .main-header .logo {
+ background-color: #3c8dbc;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+
+.skin-blue-light .main-header .logo:hover {
+ background-color: #3b8ab8;
+}
+
+.skin-blue-light .main-header li.user-header {
+ background-color: #3c8dbc;
+}
+
+.skin-blue-light .content-header {
+ background: transparent;
+}
+
+.skin-blue-light .wrapper,
+.skin-blue-light .main-sidebar,
+.skin-blue-light .left-side {
+ background-color: #f9fafc;
+}
+
+.skin-blue-light .content-wrapper,
+.skin-blue-light .main-footer {
+ border-left: 1px solid #d2d6de;
+}
+
+.skin-blue-light .user-panel > .info,
+.skin-blue-light .user-panel > .info > a {
+ color: #444444;
+}
+
+.skin-blue-light .sidebar-menu > li {
+ -webkit-transition: border-left-color 0.3s ease;
+ -o-transition: border-left-color 0.3s ease;
+ transition: border-left-color 0.3s ease;
+}
+
+.skin-blue-light .sidebar-menu > li.header {
+ color: #848484;
+ background: #f9fafc;
+}
+
+.skin-blue-light .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+ font-weight: 600;
+}
+
+.skin-blue-light .sidebar-menu > li:hover > a,
+.skin-blue-light .sidebar-menu > li.active > a {
+ color: #000000;
+ background: #f4f4f5;
+}
+
+.skin-blue-light .sidebar-menu > li.active {
+ border-left-color: #3c8dbc;
+}
+
+.skin-blue-light .sidebar-menu > li.active > a {
+ font-weight: 600;
+}
+
+.skin-blue-light .sidebar-menu > li > .treeview-menu {
+ background: #f4f4f5;
+}
+
+.skin-blue-light .sidebar a {
+ color: #444444;
+}
+
+.skin-blue-light .sidebar a:hover {
+ text-decoration: none;
+}
+
+.skin-blue-light .treeview-menu > li > a {
+ color: #777777;
+}
+
+.skin-blue-light .treeview-menu > li.active > a,
+.skin-blue-light .treeview-menu > li > a:hover {
+ color: #000000;
+}
+
+.skin-blue-light .treeview-menu > li.active > a {
+ font-weight: 600;
+}
+
+.skin-blue-light .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #d2d6de;
+ margin: 10px 10px;
+}
+
+.skin-blue-light .sidebar-form input[type="text"],
+.skin-blue-light .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #fff;
+ border: 1px solid transparent;
+ height: 35px;
+}
+
+.skin-blue-light .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+
+.skin-blue-light .sidebar-form input[type="text"]:focus,
+.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+
+.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+
+.skin-blue-light .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+
+@media (min-width: 768px) {
+ .skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ border-left: 1px solid #d2d6de;
+ }
+}
+
+.skin-blue-light .main-footer {
+ border-top-color: #d2d6de;
+}
+
+.skin-blue.layout-top-nav .main-header > .logo {
+ background-color: #3c8dbc;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+
+.skin-blue.layout-top-nav .main-header > .logo:hover {
+ background-color: #3b8ab8;
+}
+
+/*
+ * Skin: Black
+ * -----------
+ */
+/* skin-black navbar */
+.skin-black .main-header {
+ -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
+}
+
+.skin-black .main-header .navbar-toggle {
+ color: #333;
+}
+
+.skin-black .main-header .navbar-brand {
+ color: #333;
+ border-right: 1px solid #eee;
+}
+
+.skin-black .main-header .navbar {
+ background-color: #ffffff;
+}
+
+.skin-black .main-header .navbar .nav > li > a {
+ color: #333333;
+}
+
+.skin-black .main-header .navbar .nav > li > a:hover,
+.skin-black .main-header .navbar .nav > li > a:active,
+.skin-black .main-header .navbar .nav > li > a:focus,
+.skin-black .main-header .navbar .nav .open > a,
+.skin-black .main-header .navbar .nav .open > a:hover,
+.skin-black .main-header .navbar .nav .open > a:focus,
+.skin-black .main-header .navbar .nav > .active > a {
+ background: #ffffff;
+ color: #999999;
+}
+
+.skin-black .main-header .navbar .sidebar-toggle {
+ color: #333333;
+}
+
+.skin-black .main-header .navbar .sidebar-toggle:hover {
+ color: #999999;
+ background: #ffffff;
+}
+
+.skin-black .main-header .navbar > .sidebar-toggle {
+ color: #333;
+ border-right: 1px solid #eee;
+}
+
+.skin-black .main-header .navbar .navbar-nav > li > a {
+ border-right: 1px solid #eee;
+}
+
+.skin-black .main-header .navbar .navbar-custom-menu .navbar-nav > li > a,
+.skin-black .main-header .navbar .navbar-right > li > a {
+ border-left: 1px solid #eee;
+ border-right-width: 0;
+}
+
+.skin-black .main-header > .logo {
+ background-color: #ffffff;
+ color: #333333;
+ border-bottom: 0 solid transparent;
+ border-right: 1px solid #eee;
+}
+
+.skin-black .main-header > .logo:hover {
+ background-color: #fcfcfc;
+}
+
+@media (max-width: 767px) {
+ .skin-black .main-header > .logo {
+ background-color: #222222;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+ border-right: none;
+ }
+
+ .skin-black .main-header > .logo:hover {
+ background-color: #1f1f1f;
+ }
+}
+
+.skin-black .main-header li.user-header {
+ background-color: #222;
+}
+
+.skin-black .content-header {
+ background: transparent;
+ box-shadow: none;
+}
+
+.skin-black .wrapper,
+.skin-black .main-sidebar,
+.skin-black .left-side {
+ background-color: #222d32;
+}
+
+.skin-black .user-panel > .info,
+.skin-black .user-panel > .info > a {
+ color: #fff;
+}
+
+.skin-black .sidebar-menu > li.header {
+ color: #4b646f;
+ background: #1a2226;
+}
+
+.skin-black .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+}
+
+.skin-black .sidebar-menu > li:hover > a,
+.skin-black .sidebar-menu > li.active > a {
+ color: #ffffff;
+ background: #1e282c;
+ border-left-color: #ffffff;
+}
+
+.skin-black .sidebar-menu > li > .treeview-menu {
+ margin: 0 1px;
+ background: #2c3b41;
+}
+
+.skin-black .sidebar a {
+ color: #b8c7ce;
+}
+
+.skin-black .sidebar a:hover {
+ text-decoration: none;
+}
+
+.skin-black .treeview-menu > li > a {
+ color: #8aa4af;
+}
+
+.skin-black .treeview-menu > li.active > a,
+.skin-black .treeview-menu > li > a:hover {
+ color: #ffffff;
+}
+
+.skin-black .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #374850;
+ margin: 10px 10px;
+}
+
+.skin-black .sidebar-form input[type="text"],
+.skin-black .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #374850;
+ border: 1px solid transparent;
+ height: 35px;
+}
+
+.skin-black .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+
+.skin-black .sidebar-form input[type="text"]:focus,
+.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+
+.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+
+.skin-black .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+
+.skin-black .pace .pace-progress {
+ background: #222;
+}
+
+.skin-black .pace .pace-activity {
+ border-top-color: #222;
+ border-left-color: #222;
+}
+
+/*
+ * Skin: Black
+ * -----------
+ */
+/* skin-black navbar */
+.skin-black-light .main-header {
+ -webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
+ box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
+}
+
+.skin-black-light .main-header .navbar-toggle {
+ color: #333;
+}
+
+.skin-black-light .main-header .navbar-brand {
+ color: #333;
+ border-right: 1px solid #eee;
+}
+
+.skin-black-light .main-header .navbar {
+ background-color: #ffffff;
+}
+
+.skin-black-light .main-header .navbar .nav > li > a {
+ color: #333333;
+}
+
+.skin-black-light .main-header .navbar .nav > li > a:hover,
+.skin-black-light .main-header .navbar .nav > li > a:active,
+.skin-black-light .main-header .navbar .nav > li > a:focus,
+.skin-black-light .main-header .navbar .nav .open > a,
+.skin-black-light .main-header .navbar .nav .open > a:hover,
+.skin-black-light .main-header .navbar .nav .open > a:focus,
+.skin-black-light .main-header .navbar .nav > .active > a {
+ background: #ffffff;
+ color: #999999;
+}
+
+.skin-black-light .main-header .navbar .sidebar-toggle {
+ color: #333333;
+}
+
+.skin-black-light .main-header .navbar .sidebar-toggle:hover {
+ color: #999999;
+ background: #ffffff;
+}
+
+.skin-black-light .main-header .navbar > .sidebar-toggle {
+ color: #333;
+ border-right: 1px solid #eee;
+}
+
+.skin-black-light .main-header .navbar .navbar-nav > li > a {
+ border-right: 1px solid #eee;
+}
+
+.skin-black-light .main-header .navbar .navbar-custom-menu .navbar-nav > li > a,
+.skin-black-light .main-header .navbar .navbar-right > li > a {
+ border-left: 1px solid #eee;
+ border-right-width: 0;
+}
+
+.skin-black-light .main-header > .logo {
+ background-color: #ffffff;
+ color: #333333;
+ border-bottom: 0 solid transparent;
+ border-right: 1px solid #eee;
+}
+
+.skin-black-light .main-header > .logo:hover {
+ background-color: #fcfcfc;
+}
+
+@media (max-width: 767px) {
+ .skin-black-light .main-header > .logo {
+ background-color: #222222;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+ border-right: none;
+ }
+
+ .skin-black-light .main-header > .logo:hover {
+ background-color: #1f1f1f;
+ }
+}
+
+.skin-black-light .main-header li.user-header {
+ background-color: #222;
+}
+
+.skin-black-light .content-header {
+ background: transparent;
+ box-shadow: none;
+}
+
+.skin-black-light .wrapper,
+.skin-black-light .main-sidebar,
+.skin-black-light .left-side {
+ background-color: #f9fafc;
+}
+
+.skin-black-light .content-wrapper,
+.skin-black-light .main-footer {
+ border-left: 1px solid #d2d6de;
+}
+
+.skin-black-light .user-panel > .info,
+.skin-black-light .user-panel > .info > a {
+ color: #444444;
+}
+
+.skin-black-light .sidebar-menu > li {
+ -webkit-transition: border-left-color 0.3s ease;
+ -o-transition: border-left-color 0.3s ease;
+ transition: border-left-color 0.3s ease;
+}
+
+.skin-black-light .sidebar-menu > li.header {
+ color: #848484;
+ background: #f9fafc;
+}
+
+.skin-black-light .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+ font-weight: 600;
+}
+
+.skin-black-light .sidebar-menu > li:hover > a,
+.skin-black-light .sidebar-menu > li.active > a {
+ color: #000000;
+ background: #f4f4f5;
+}
+
+.skin-black-light .sidebar-menu > li.active {
+ border-left-color: #ffffff;
+}
+
+.skin-black-light .sidebar-menu > li.active > a {
+ font-weight: 600;
+}
+
+.skin-black-light .sidebar-menu > li > .treeview-menu {
+ background: #f4f4f5;
+}
+
+.skin-black-light .sidebar a {
+ color: #444444;
+}
+
+.skin-black-light .sidebar a:hover {
+ text-decoration: none;
+}
+
+.skin-black-light .treeview-menu > li > a {
+ color: #777777;
+}
+
+.skin-black-light .treeview-menu > li.active > a,
+.skin-black-light .treeview-menu > li > a:hover {
+ color: #000000;
+}
+
+.skin-black-light .treeview-menu > li.active > a {
+ font-weight: 600;
+}
+
+.skin-black-light .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #d2d6de;
+ margin: 10px 10px;
+}
+
+.skin-black-light .sidebar-form input[type="text"],
+.skin-black-light .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #fff;
+ border: 1px solid transparent;
+ height: 35px;
+}
+
+.skin-black-light .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+
+.skin-black-light .sidebar-form input[type="text"]:focus,
+.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+
+.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+
+.skin-black-light .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+
+@media (min-width: 768px) {
+ .skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ border-left: 1px solid #d2d6de;
+ }
+}
+
+/*
+ * Skin: Green
+ * -----------
+ */
+.skin-green .main-header .navbar {
+ background-color: #00a65a;
+}
+
+.skin-green .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+
+.skin-green .main-header .navbar .nav > li > a:hover,
+.skin-green .main-header .navbar .nav > li > a:active,
+.skin-green .main-header .navbar .nav > li > a:focus,
+.skin-green .main-header .navbar .nav .open > a,
+.skin-green .main-header .navbar .nav .open > a:hover,
+.skin-green .main-header .navbar .nav .open > a:focus,
+.skin-green .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+
+.skin-green .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+
+.skin-green .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+
+.skin-green .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+
+.skin-green .main-header .navbar .sidebar-toggle:hover {
+ background-color: #008d4c;
+}
+
+@media (max-width: 767px) {
+ .skin-green .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+
+ .skin-green .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+
+ .skin-green .main-header .navbar .dropdown-menu li a:hover {
+ background: #008d4c;
+ }
+}
+
+.skin-green .main-header .logo {
+ background-color: #008d4c;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+
+.skin-green .main-header .logo:hover {
+ background-color: #008749;
+}
+
+.skin-green .main-header li.user-header {
+ background-color: #00a65a;
+}
+
+.skin-green .content-header {
+ background: transparent;
+}
+
+.skin-green .wrapper,
+.skin-green .main-sidebar,
+.skin-green .left-side {
+ background-color: #222d32;
+}
+
+.skin-green .user-panel > .info,
+.skin-green .user-panel > .info > a {
+ color: #fff;
+}
+
+.skin-green .sidebar-menu > li.header {
+ color: #4b646f;
+ background: #1a2226;
+}
+
+.skin-green .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+}
+
+.skin-green .sidebar-menu > li:hover > a,
+.skin-green .sidebar-menu > li.active > a {
+ color: #ffffff;
+ background: #1e282c;
+ border-left-color: #00a65a;
+}
+
+.skin-green .sidebar-menu > li > .treeview-menu {
+ margin: 0 1px;
+ background: #2c3b41;
+}
+
+.skin-green .sidebar a {
+ color: #b8c7ce;
+}
+
+.skin-green .sidebar a:hover {
+ text-decoration: none;
+}
+
+.skin-green .treeview-menu > li > a {
+ color: #8aa4af;
+}
+
+.skin-green .treeview-menu > li.active > a,
+.skin-green .treeview-menu > li > a:hover {
+ color: #ffffff;
+}
+
+.skin-green .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #374850;
+ margin: 10px 10px;
+}
+
+.skin-green .sidebar-form input[type="text"],
+.skin-green .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #374850;
+ border: 1px solid transparent;
+ height: 35px;
+}
+
+.skin-green .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+
+.skin-green .sidebar-form input[type="text"]:focus,
+.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+
+.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+
+.skin-green .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+
+/*
+ * Skin: Green
+ * -----------
+ */
+.skin-green-light .main-header .navbar {
+ background-color: #00a65a;
+}
+
+.skin-green-light .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+
+.skin-green-light .main-header .navbar .nav > li > a:hover,
+.skin-green-light .main-header .navbar .nav > li > a:active,
+.skin-green-light .main-header .navbar .nav > li > a:focus,
+.skin-green-light .main-header .navbar .nav .open > a,
+.skin-green-light .main-header .navbar .nav .open > a:hover,
+.skin-green-light .main-header .navbar .nav .open > a:focus,
+.skin-green-light .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+
+.skin-green-light .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+
+.skin-green-light .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+
+.skin-green-light .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+
+.skin-green-light .main-header .navbar .sidebar-toggle:hover {
+ background-color: #008d4c;
+}
+
+@media (max-width: 767px) {
+ .skin-green-light .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+
+ .skin-green-light .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+
+ .skin-green-light .main-header .navbar .dropdown-menu li a:hover {
+ background: #008d4c;
+ }
+}
+
+.skin-green-light .main-header .logo {
+ background-color: #00a65a;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+
+.skin-green-light .main-header .logo:hover {
+ background-color: #00a157;
+}
+
+.skin-green-light .main-header li.user-header {
+ background-color: #00a65a;
+}
+
+.skin-green-light .content-header {
+ background: transparent;
+}
+
+.skin-green-light .wrapper,
+.skin-green-light .main-sidebar,
+.skin-green-light .left-side {
+ background-color: #f9fafc;
+}
+
+.skin-green-light .content-wrapper,
+.skin-green-light .main-footer {
+ border-left: 1px solid #d2d6de;
+}
+
+.skin-green-light .user-panel > .info,
+.skin-green-light .user-panel > .info > a {
+ color: #444444;
+}
+
+.skin-green-light .sidebar-menu > li {
+ -webkit-transition: border-left-color 0.3s ease;
+ -o-transition: border-left-color 0.3s ease;
+ transition: border-left-color 0.3s ease;
+}
+
+.skin-green-light .sidebar-menu > li.header {
+ color: #848484;
+ background: #f9fafc;
+}
+
+.skin-green-light .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+ font-weight: 600;
+}
+
+.skin-green-light .sidebar-menu > li:hover > a,
+.skin-green-light .sidebar-menu > li.active > a {
+ color: #000000;
+ background: #f4f4f5;
+}
+
+.skin-green-light .sidebar-menu > li.active {
+ border-left-color: #00a65a;
+}
+
+.skin-green-light .sidebar-menu > li.active > a {
+ font-weight: 600;
+}
+
+.skin-green-light .sidebar-menu > li > .treeview-menu {
+ background: #f4f4f5;
+}
+
+.skin-green-light .sidebar a {
+ color: #444444;
+}
+
+.skin-green-light .sidebar a:hover {
+ text-decoration: none;
+}
+
+.skin-green-light .treeview-menu > li > a {
+ color: #777777;
+}
+
+.skin-green-light .treeview-menu > li.active > a,
+.skin-green-light .treeview-menu > li > a:hover {
+ color: #000000;
+}
+
+.skin-green-light .treeview-menu > li.active > a {
+ font-weight: 600;
+}
+
+.skin-green-light .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #d2d6de;
+ margin: 10px 10px;
+}
+
+.skin-green-light .sidebar-form input[type="text"],
+.skin-green-light .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #fff;
+ border: 1px solid transparent;
+ height: 35px;
+}
+
+.skin-green-light .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+
+.skin-green-light .sidebar-form input[type="text"]:focus,
+.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+
+.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+
+.skin-green-light .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+
+@media (min-width: 768px) {
+ .skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ border-left: 1px solid #d2d6de;
+ }
+}
+
+/*
+ * Skin: Red
+ * ---------
+ */
+.skin-red .main-header .navbar {
+ background-color: #dd4b39;
+}
+
+.skin-red .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+
+.skin-red .main-header .navbar .nav > li > a:hover,
+.skin-red .main-header .navbar .nav > li > a:active,
+.skin-red .main-header .navbar .nav > li > a:focus,
+.skin-red .main-header .navbar .nav .open > a,
+.skin-red .main-header .navbar .nav .open > a:hover,
+.skin-red .main-header .navbar .nav .open > a:focus,
+.skin-red .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+
+.skin-red .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+
+.skin-red .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+
+.skin-red .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+
+.skin-red .main-header .navbar .sidebar-toggle:hover {
+ background-color: #d73925;
+}
+
+@media (max-width: 767px) {
+ .skin-red .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+
+ .skin-red .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+
+ .skin-red .main-header .navbar .dropdown-menu li a:hover {
+ background: #d73925;
+ }
+}
+
+.skin-red .main-header .logo {
+ background-color: #d73925;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+
+.skin-red .main-header .logo:hover {
+ background-color: #d33724;
+}
+
+.skin-red .main-header li.user-header {
+ background-color: #dd4b39;
+}
+
+.skin-red .content-header {
+ background: transparent;
+}
+
+.skin-red .wrapper,
+.skin-red .main-sidebar,
+.skin-red .left-side {
+ background-color: #222d32;
+}
+
+.skin-red .user-panel > .info,
+.skin-red .user-panel > .info > a {
+ color: #fff;
+}
+
+.skin-red .sidebar-menu > li.header {
+ color: #4b646f;
+ background: #1a2226;
+}
+
+.skin-red .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+}
+
+.skin-red .sidebar-menu > li:hover > a,
+.skin-red .sidebar-menu > li.active > a {
+ color: #ffffff;
+ background: #1e282c;
+ border-left-color: #dd4b39;
+}
+
+.skin-red .sidebar-menu > li > .treeview-menu {
+ margin: 0 1px;
+ background: #2c3b41;
+}
+
+.skin-red .sidebar a {
+ color: #b8c7ce;
+}
+
+.skin-red .sidebar a:hover {
+ text-decoration: none;
+}
+
+.skin-red .treeview-menu > li > a {
+ color: #8aa4af;
+}
+
+.skin-red .treeview-menu > li.active > a,
+.skin-red .treeview-menu > li > a:hover {
+ color: #ffffff;
+}
+
+.skin-red .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #374850;
+ margin: 10px 10px;
+}
+
+.skin-red .sidebar-form input[type="text"],
+.skin-red .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #374850;
+ border: 1px solid transparent;
+ height: 35px;
+}
+
+.skin-red .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+
+.skin-red .sidebar-form input[type="text"]:focus,
+.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+
+.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+
+.skin-red .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+
+/*
+ * Skin: Red
+ * ---------
+ */
+.skin-red-light .main-header .navbar {
+ background-color: #dd4b39;
+}
+
+.skin-red-light .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+
+.skin-red-light .main-header .navbar .nav > li > a:hover,
+.skin-red-light .main-header .navbar .nav > li > a:active,
+.skin-red-light .main-header .navbar .nav > li > a:focus,
+.skin-red-light .main-header .navbar .nav .open > a,
+.skin-red-light .main-header .navbar .nav .open > a:hover,
+.skin-red-light .main-header .navbar .nav .open > a:focus,
+.skin-red-light .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+
+.skin-red-light .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+
+.skin-red-light .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+
+.skin-red-light .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+
+.skin-red-light .main-header .navbar .sidebar-toggle:hover {
+ background-color: #d73925;
+}
+
+@media (max-width: 767px) {
+ .skin-red-light .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+
+ .skin-red-light .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+
+ .skin-red-light .main-header .navbar .dropdown-menu li a:hover {
+ background: #d73925;
+ }
+}
+
+.skin-red-light .main-header .logo {
+ background-color: #dd4b39;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+
+.skin-red-light .main-header .logo:hover {
+ background-color: #dc4735;
+}
+
+.skin-red-light .main-header li.user-header {
+ background-color: #dd4b39;
+}
+
+.skin-red-light .content-header {
+ background: transparent;
+}
+
+.skin-red-light .wrapper,
+.skin-red-light .main-sidebar,
+.skin-red-light .left-side {
+ background-color: #f9fafc;
+}
+
+.skin-red-light .content-wrapper,
+.skin-red-light .main-footer {
+ border-left: 1px solid #d2d6de;
+}
+
+.skin-red-light .user-panel > .info,
+.skin-red-light .user-panel > .info > a {
+ color: #444444;
+}
+
+.skin-red-light .sidebar-menu > li {
+ -webkit-transition: border-left-color 0.3s ease;
+ -o-transition: border-left-color 0.3s ease;
+ transition: border-left-color 0.3s ease;
+}
+
+.skin-red-light .sidebar-menu > li.header {
+ color: #848484;
+ background: #f9fafc;
+}
+
+.skin-red-light .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+ font-weight: 600;
+}
+
+.skin-red-light .sidebar-menu > li:hover > a,
+.skin-red-light .sidebar-menu > li.active > a {
+ color: #000000;
+ background: #f4f4f5;
+}
+
+.skin-red-light .sidebar-menu > li.active {
+ border-left-color: #dd4b39;
+}
+
+.skin-red-light .sidebar-menu > li.active > a {
+ font-weight: 600;
+}
+
+.skin-red-light .sidebar-menu > li > .treeview-menu {
+ background: #f4f4f5;
+}
+
+.skin-red-light .sidebar a {
+ color: #444444;
+}
+
+.skin-red-light .sidebar a:hover {
+ text-decoration: none;
+}
+
+.skin-red-light .treeview-menu > li > a {
+ color: #777777;
+}
+
+.skin-red-light .treeview-menu > li.active > a,
+.skin-red-light .treeview-menu > li > a:hover {
+ color: #000000;
+}
+
+.skin-red-light .treeview-menu > li.active > a {
+ font-weight: 600;
+}
+
+.skin-red-light .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #d2d6de;
+ margin: 10px 10px;
+}
+
+.skin-red-light .sidebar-form input[type="text"],
+.skin-red-light .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #fff;
+ border: 1px solid transparent;
+ height: 35px;
+}
+
+.skin-red-light .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+
+.skin-red-light .sidebar-form input[type="text"]:focus,
+.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+
+.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+
+.skin-red-light .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+
+@media (min-width: 768px) {
+ .skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ border-left: 1px solid #d2d6de;
+ }
+}
+
+/*
+ * Skin: Yellow
+ * ------------
+ */
+.skin-yellow .main-header .navbar {
+ background-color: #f39c12;
+}
+
+.skin-yellow .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+
+.skin-yellow .main-header .navbar .nav > li > a:hover,
+.skin-yellow .main-header .navbar .nav > li > a:active,
+.skin-yellow .main-header .navbar .nav > li > a:focus,
+.skin-yellow .main-header .navbar .nav .open > a,
+.skin-yellow .main-header .navbar .nav .open > a:hover,
+.skin-yellow .main-header .navbar .nav .open > a:focus,
+.skin-yellow .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+
+.skin-yellow .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+
+.skin-yellow .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+
+.skin-yellow .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+
+.skin-yellow .main-header .navbar .sidebar-toggle:hover {
+ background-color: #e08e0b;
+}
+
+@media (max-width: 767px) {
+ .skin-yellow .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+
+ .skin-yellow .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+
+ .skin-yellow .main-header .navbar .dropdown-menu li a:hover {
+ background: #e08e0b;
+ }
+}
+
+.skin-yellow .main-header .logo {
+ background-color: #e08e0b;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+
+.skin-yellow .main-header .logo:hover {
+ background-color: #db8b0b;
+}
+
+.skin-yellow .main-header li.user-header {
+ background-color: #f39c12;
+}
+
+.skin-yellow .content-header {
+ background: transparent;
+}
+
+.skin-yellow .wrapper,
+.skin-yellow .main-sidebar,
+.skin-yellow .left-side {
+ background-color: #222d32;
+}
+
+.skin-yellow .user-panel > .info,
+.skin-yellow .user-panel > .info > a {
+ color: #fff;
+}
+
+.skin-yellow .sidebar-menu > li.header {
+ color: #4b646f;
+ background: #1a2226;
+}
+
+.skin-yellow .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+}
+
+.skin-yellow .sidebar-menu > li:hover > a,
+.skin-yellow .sidebar-menu > li.active > a {
+ color: #ffffff;
+ background: #1e282c;
+ border-left-color: #f39c12;
+}
+
+.skin-yellow .sidebar-menu > li > .treeview-menu {
+ margin: 0 1px;
+ background: #2c3b41;
+}
+
+.skin-yellow .sidebar a {
+ color: #b8c7ce;
+}
+
+.skin-yellow .sidebar a:hover {
+ text-decoration: none;
+}
+
+.skin-yellow .treeview-menu > li > a {
+ color: #8aa4af;
+}
+
+.skin-yellow .treeview-menu > li.active > a,
+.skin-yellow .treeview-menu > li > a:hover {
+ color: #ffffff;
+}
+
+.skin-yellow .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #374850;
+ margin: 10px 10px;
+}
+
+.skin-yellow .sidebar-form input[type="text"],
+.skin-yellow .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #374850;
+ border: 1px solid transparent;
+ height: 35px;
+}
+
+.skin-yellow .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+
+.skin-yellow .sidebar-form input[type="text"]:focus,
+.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+
+.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+
+.skin-yellow .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+
+/*
+ * Skin: Yellow
+ * ------------
+ */
+.skin-yellow-light .main-header .navbar {
+ background-color: #f39c12;
+}
+
+.skin-yellow-light .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+
+.skin-yellow-light .main-header .navbar .nav > li > a:hover,
+.skin-yellow-light .main-header .navbar .nav > li > a:active,
+.skin-yellow-light .main-header .navbar .nav > li > a:focus,
+.skin-yellow-light .main-header .navbar .nav .open > a,
+.skin-yellow-light .main-header .navbar .nav .open > a:hover,
+.skin-yellow-light .main-header .navbar .nav .open > a:focus,
+.skin-yellow-light .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+
+.skin-yellow-light .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+
+.skin-yellow-light .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+
+.skin-yellow-light .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+
+.skin-yellow-light .main-header .navbar .sidebar-toggle:hover {
+ background-color: #e08e0b;
+}
+
+@media (max-width: 767px) {
+ .skin-yellow-light .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+
+ .skin-yellow-light .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+
+ .skin-yellow-light .main-header .navbar .dropdown-menu li a:hover {
+ background: #e08e0b;
+ }
+}
+
+.skin-yellow-light .main-header .logo {
+ background-color: #f39c12;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+
+.skin-yellow-light .main-header .logo:hover {
+ background-color: #f39a0d;
+}
+
+.skin-yellow-light .main-header li.user-header {
+ background-color: #f39c12;
+}
+
+.skin-yellow-light .content-header {
+ background: transparent;
+}
+
+.skin-yellow-light .wrapper,
+.skin-yellow-light .main-sidebar,
+.skin-yellow-light .left-side {
+ background-color: #f9fafc;
+}
+
+.skin-yellow-light .content-wrapper,
+.skin-yellow-light .main-footer {
+ border-left: 1px solid #d2d6de;
+}
+
+.skin-yellow-light .user-panel > .info,
+.skin-yellow-light .user-panel > .info > a {
+ color: #444444;
+}
+
+.skin-yellow-light .sidebar-menu > li {
+ -webkit-transition: border-left-color 0.3s ease;
+ -o-transition: border-left-color 0.3s ease;
+ transition: border-left-color 0.3s ease;
+}
+
+.skin-yellow-light .sidebar-menu > li.header {
+ color: #848484;
+ background: #f9fafc;
+}
+
+.skin-yellow-light .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+ font-weight: 600;
+}
+
+.skin-yellow-light .sidebar-menu > li:hover > a,
+.skin-yellow-light .sidebar-menu > li.active > a {
+ color: #000000;
+ background: #f4f4f5;
+}
+
+.skin-yellow-light .sidebar-menu > li.active {
+ border-left-color: #f39c12;
+}
+
+.skin-yellow-light .sidebar-menu > li.active > a {
+ font-weight: 600;
+}
+
+.skin-yellow-light .sidebar-menu > li > .treeview-menu {
+ background: #f4f4f5;
+}
+
+.skin-yellow-light .sidebar a {
+ color: #444444;
+}
+
+.skin-yellow-light .sidebar a:hover {
+ text-decoration: none;
+}
+
+.skin-yellow-light .treeview-menu > li > a {
+ color: #777777;
+}
+
+.skin-yellow-light .treeview-menu > li.active > a,
+.skin-yellow-light .treeview-menu > li > a:hover {
+ color: #000000;
+}
+
+.skin-yellow-light .treeview-menu > li.active > a {
+ font-weight: 600;
+}
+
+.skin-yellow-light .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #d2d6de;
+ margin: 10px 10px;
+}
+
+.skin-yellow-light .sidebar-form input[type="text"],
+.skin-yellow-light .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #fff;
+ border: 1px solid transparent;
+ height: 35px;
+}
+
+.skin-yellow-light .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+
+.skin-yellow-light .sidebar-form input[type="text"]:focus,
+.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+
+.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+
+.skin-yellow-light .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+
+@media (min-width: 768px) {
+ .skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ border-left: 1px solid #d2d6de;
+ }
+}
+
+/*
+ * Skin: Purple
+ * ------------
+ */
+.skin-purple .main-header .navbar {
+ background-color: #605ca8;
+}
+
+.skin-purple .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+
+.skin-purple .main-header .navbar .nav > li > a:hover,
+.skin-purple .main-header .navbar .nav > li > a:active,
+.skin-purple .main-header .navbar .nav > li > a:focus,
+.skin-purple .main-header .navbar .nav .open > a,
+.skin-purple .main-header .navbar .nav .open > a:hover,
+.skin-purple .main-header .navbar .nav .open > a:focus,
+.skin-purple .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+
+.skin-purple .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+
+.skin-purple .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+
+.skin-purple .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+
+.skin-purple .main-header .navbar .sidebar-toggle:hover {
+ background-color: #555299;
+}
+
+@media (max-width: 767px) {
+ .skin-purple .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+
+ .skin-purple .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+
+ .skin-purple .main-header .navbar .dropdown-menu li a:hover {
+ background: #555299;
+ }
+}
+
+.skin-purple .main-header .logo {
+ background-color: #555299;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+
+.skin-purple .main-header .logo:hover {
+ background-color: #545096;
+}
+
+.skin-purple .main-header li.user-header {
+ background-color: #605ca8;
+}
+
+.skin-purple .content-header {
+ background: transparent;
+}
+
+.skin-purple .wrapper,
+.skin-purple .main-sidebar,
+.skin-purple .left-side {
+ background-color: #222d32;
+}
+
+.skin-purple .user-panel > .info,
+.skin-purple .user-panel > .info > a {
+ color: #fff;
+}
+
+.skin-purple .sidebar-menu > li.header {
+ color: #4b646f;
+ background: #1a2226;
+}
+
+.skin-purple .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+}
+
+.skin-purple .sidebar-menu > li:hover > a,
+.skin-purple .sidebar-menu > li.active > a {
+ color: #ffffff;
+ background: #1e282c;
+ border-left-color: #605ca8;
+}
+
+.skin-purple .sidebar-menu > li > .treeview-menu {
+ margin: 0 1px;
+ background: #2c3b41;
+}
+
+.skin-purple .sidebar a {
+ color: #b8c7ce;
+}
+
+.skin-purple .sidebar a:hover {
+ text-decoration: none;
+}
+
+.skin-purple .treeview-menu > li > a {
+ color: #8aa4af;
+}
+
+.skin-purple .treeview-menu > li.active > a,
+.skin-purple .treeview-menu > li > a:hover {
+ color: #ffffff;
+}
+
+.skin-purple .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #374850;
+ margin: 10px 10px;
+}
+
+.skin-purple .sidebar-form input[type="text"],
+.skin-purple .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #374850;
+ border: 1px solid transparent;
+ height: 35px;
+}
+
+.skin-purple .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+
+.skin-purple .sidebar-form input[type="text"]:focus,
+.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+
+.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+
+.skin-purple .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+
+/*
+ * Skin: Purple
+ * ------------
+ */
+.skin-purple-light .main-header .navbar {
+ background-color: #605ca8;
+}
+
+.skin-purple-light .main-header .navbar .nav > li > a {
+ color: #ffffff;
+}
+
+.skin-purple-light .main-header .navbar .nav > li > a:hover,
+.skin-purple-light .main-header .navbar .nav > li > a:active,
+.skin-purple-light .main-header .navbar .nav > li > a:focus,
+.skin-purple-light .main-header .navbar .nav .open > a,
+.skin-purple-light .main-header .navbar .nav .open > a:hover,
+.skin-purple-light .main-header .navbar .nav .open > a:focus,
+.skin-purple-light .main-header .navbar .nav > .active > a {
+ background: rgba(0, 0, 0, 0.1);
+ color: #f6f6f6;
+}
+
+.skin-purple-light .main-header .navbar .sidebar-toggle {
+ color: #ffffff;
+}
+
+.skin-purple-light .main-header .navbar .sidebar-toggle:hover {
+ color: #f6f6f6;
+ background: rgba(0, 0, 0, 0.1);
+}
+
+.skin-purple-light .main-header .navbar .sidebar-toggle {
+ color: #fff;
+}
+
+.skin-purple-light .main-header .navbar .sidebar-toggle:hover {
+ background-color: #555299;
+}
+
+@media (max-width: 767px) {
+ .skin-purple-light .main-header .navbar .dropdown-menu li.divider {
+ background-color: rgba(255, 255, 255, 0.1);
+ }
+
+ .skin-purple-light .main-header .navbar .dropdown-menu li a {
+ color: #fff;
+ }
+
+ .skin-purple-light .main-header .navbar .dropdown-menu li a:hover {
+ background: #555299;
+ }
+}
+
+.skin-purple-light .main-header .logo {
+ background-color: #605ca8;
+ color: #ffffff;
+ border-bottom: 0 solid transparent;
+}
+
+.skin-purple-light .main-header .logo:hover {
+ background-color: #5d59a6;
+}
+
+.skin-purple-light .main-header li.user-header {
+ background-color: #605ca8;
+}
+
+.skin-purple-light .content-header {
+ background: transparent;
+}
+
+.skin-purple-light .wrapper,
+.skin-purple-light .main-sidebar,
+.skin-purple-light .left-side {
+ background-color: #f9fafc;
+}
+
+.skin-purple-light .content-wrapper,
+.skin-purple-light .main-footer {
+ border-left: 1px solid #d2d6de;
+}
+
+.skin-purple-light .user-panel > .info,
+.skin-purple-light .user-panel > .info > a {
+ color: #444444;
+}
+
+.skin-purple-light .sidebar-menu > li {
+ -webkit-transition: border-left-color 0.3s ease;
+ -o-transition: border-left-color 0.3s ease;
+ transition: border-left-color 0.3s ease;
+}
+
+.skin-purple-light .sidebar-menu > li.header {
+ color: #848484;
+ background: #f9fafc;
+}
+
+.skin-purple-light .sidebar-menu > li > a {
+ border-left: 3px solid transparent;
+ font-weight: 600;
+}
+
+.skin-purple-light .sidebar-menu > li:hover > a,
+.skin-purple-light .sidebar-menu > li.active > a {
+ color: #000000;
+ background: #f4f4f5;
+}
+
+.skin-purple-light .sidebar-menu > li.active {
+ border-left-color: #605ca8;
+}
+
+.skin-purple-light .sidebar-menu > li.active > a {
+ font-weight: 600;
+}
+
+.skin-purple-light .sidebar-menu > li > .treeview-menu {
+ background: #f4f4f5;
+}
+
+.skin-purple-light .sidebar a {
+ color: #444444;
+}
+
+.skin-purple-light .sidebar a:hover {
+ text-decoration: none;
+}
+
+.skin-purple-light .treeview-menu > li > a {
+ color: #777777;
+}
+
+.skin-purple-light .treeview-menu > li.active > a,
+.skin-purple-light .treeview-menu > li > a:hover {
+ color: #000000;
+}
+
+.skin-purple-light .treeview-menu > li.active > a {
+ font-weight: 600;
+}
+
+.skin-purple-light .sidebar-form {
+ border-radius: 3px;
+ border: 1px solid #d2d6de;
+ margin: 10px 10px;
+}
+
+.skin-purple-light .sidebar-form input[type="text"],
+.skin-purple-light .sidebar-form .btn {
+ box-shadow: none;
+ background-color: #fff;
+ border: 1px solid transparent;
+ height: 35px;
+}
+
+.skin-purple-light .sidebar-form input[type="text"] {
+ color: #666;
+ border-top-left-radius: 2px;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 2px;
+}
+
+.skin-purple-light .sidebar-form input[type="text"]:focus,
+.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ background-color: #fff;
+ color: #666;
+}
+
+.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
+ border-left-color: #fff;
+}
+
+.skin-purple-light .sidebar-form .btn {
+ color: #999;
+ border-top-left-radius: 0;
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-bottom-left-radius: 0;
+}
+
+@media (min-width: 768px) {
+ .skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
+ border-left: 1px solid #d2d6de;
+ }
+}
diff --git a/main/app/sprinkles/core/assets/userfrosting/css/tablesorter-reflow.css b/main/app/sprinkles/core/assets/userfrosting/css/tablesorter-reflow.css index e944100..993077e 100644 --- a/main/app/sprinkles/core/assets/userfrosting/css/tablesorter-reflow.css +++ b/main/app/sprinkles/core/assets/userfrosting/css/tablesorter-reflow.css @@ -1,65 +1,65 @@ -/* REQUIRED CSS: change your reflow breakpoint here (35em below) */ -@media ( max-width: 35em ) { - - /* uncomment out the line below if you don't want the sortable headers to show */ - table.ui-table-reflow thead { - display: none; - } - - .uf-table-search { - display: inherit; - } - - /* css for reflow & reflow2 widgets */ - .ui-table-reflow td, - .ui-table-reflow th { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - float: right; - /* if not using the stickyHeaders widget (not the css3 version) - * the "!important" flag, and "height: auto" can be removed */ - width: 100% !important; - height: auto !important; - } - - .tablesorter-bootstrap > thead > tr > th, - .tablesorter-bootstrap > thead > tr > td, - .tablesorter-bootstrap > tfoot > tr > th, - .tablesorter-bootstrap > tfoot > tr > td { - padding: 4px; - margin: 0; - } - - /* reflow widget only */ - .ui-table-reflow tbody td[data-title]:not(:first-child):before { - color: #469; - font-size: 1.5em; - content: attr(data-title); - width: 100%; - white-space: pre; - display: block; - } - - /* reflow2 widget only */ - table.ui-table-reflow .ui-table-cell-label { - display: none; - } - - table.ui-table-reflow .ui-table-cell-label.ui-table-cell-label-top { - display: block; - padding: .4em 0; - margin: .4em 0; - text-transform: uppercase; - font-size: 1.5em; - font-weight: 400; - } - -} - -/* end media query */ - -/* reflow2 widget */ -.ui-table-reflow .ui-table-cell-label { - display: none; -} +/* REQUIRED CSS: change your reflow breakpoint here (35em below) */
+@media ( max-width: 35em ) {
+
+ /* uncomment out the line below if you don't want the sortable headers to show */
+ table.ui-table-reflow thead {
+ display: none;
+ }
+
+ .uf-table-search {
+ display: inherit;
+ }
+
+ /* css for reflow & reflow2 widgets */
+ .ui-table-reflow td,
+ .ui-table-reflow th {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ float: right;
+ /* if not using the stickyHeaders widget (not the css3 version)
+ * the "!important" flag, and "height: auto" can be removed */
+ width: 100% !important;
+ height: auto !important;
+ }
+
+ .tablesorter-bootstrap > thead > tr > th,
+ .tablesorter-bootstrap > thead > tr > td,
+ .tablesorter-bootstrap > tfoot > tr > th,
+ .tablesorter-bootstrap > tfoot > tr > td {
+ padding: 4px;
+ margin: 0;
+ }
+
+ /* reflow widget only */
+ .ui-table-reflow tbody td[data-title]:not(:first-child):before {
+ color: #469;
+ font-size: 1.5em;
+ content: attr(data-title);
+ width: 100%;
+ white-space: pre;
+ display: block;
+ }
+
+ /* reflow2 widget only */
+ table.ui-table-reflow .ui-table-cell-label {
+ display: none;
+ }
+
+ table.ui-table-reflow .ui-table-cell-label.ui-table-cell-label-top {
+ display: block;
+ padding: .4em 0;
+ margin: .4em 0;
+ text-transform: uppercase;
+ font-size: 1.5em;
+ font-weight: 400;
+ }
+
+}
+
+/* end media query */
+
+/* reflow2 widget */
+.ui-table-reflow .ui-table-cell-label {
+ display: none;
+}
diff --git a/main/app/sprinkles/core/assets/userfrosting/css/uf-alerts.css b/main/app/sprinkles/core/assets/userfrosting/css/uf-alerts.css index 1c6d45c..0b6a750 100644 --- a/main/app/sprinkles/core/assets/userfrosting/css/uf-alerts.css +++ b/main/app/sprinkles/core/assets/userfrosting/css/uf-alerts.css @@ -1,21 +1,21 @@ -.uf-alert { - margin: 10px 0px 0px 0px; -} - -/* Invert margin when inside a modal-body */ -.modal-body .uf-alert { - margin: 0px 0px 10px 0px; -} - -.uf-alert .icon { - line-height: 20px; -} - -.uf-alert-message-container { - margin-left: 30px; - line-height: 20px; -} - -.uf-alert-message-container > ul { - margin-left: -20px; +.uf-alert {
+ margin: 10px 0px 0px 0px;
+}
+
+/* Invert margin when inside a modal-body */
+.modal-body .uf-alert {
+ margin: 0px 0px 10px 0px;
+}
+
+.uf-alert .icon {
+ line-height: 20px;
+}
+
+.uf-alert-message-container {
+ margin-left: 30px;
+ line-height: 20px;
+}
+
+.uf-alert-message-container > ul {
+ margin-left: -20px;
}
\ No newline at end of file diff --git a/main/app/sprinkles/core/assets/userfrosting/css/uf-collection.css b/main/app/sprinkles/core/assets/userfrosting/css/uf-collection.css index 4c5475a..43ea292 100644 --- a/main/app/sprinkles/core/assets/userfrosting/css/uf-collection.css +++ b/main/app/sprinkles/core/assets/userfrosting/css/uf-collection.css @@ -1,15 +1,15 @@ -/** - * Custom CSS for the ufCollection widget. - */ - -/** Prevent rows from overflowing container */ -.uf-collection-col-wrap { - overflow-wrap: break-word; - word-wrap: break-word; - word-break: break-all; -} - -.uf-collection span.select2-dropdown.select2-dropdown--below { - position: absolute; - top: -32px; -} +/**
+ * Custom CSS for the ufCollection widget.
+ */
+
+/** Prevent rows from overflowing container */
+.uf-collection-col-wrap {
+ overflow-wrap: break-word;
+ word-wrap: break-word;
+ word-break: break-all;
+}
+
+.uf-collection span.select2-dropdown.select2-dropdown--below {
+ position: absolute;
+ top: -32px;
+}
diff --git a/main/app/sprinkles/core/assets/userfrosting/css/userfrosting.css b/main/app/sprinkles/core/assets/userfrosting/css/userfrosting.css index b6dfe6f..d483890 100644 --- a/main/app/sprinkles/core/assets/userfrosting/css/userfrosting.css +++ b/main/app/sprinkles/core/assets/userfrosting/css/userfrosting.css @@ -1,206 +1,206 @@ -/* Use to collapse empty button columns */ - -.hideable { - min-height: 0px; -} - -/* Custom styles for bootstrap-switch labels */ -label.label-switch { - margin-top: 5px; -} - -form textarea { - resize: vertical; /* user can resize vertically, but width is fixed */ -} - -/* Custom styling for table tool menus */ -.dropdown-toggle .caret { - position: relative; - top: -1px; - right: -3px; -} - -.box-tools .dropdown-toggle { - background-color: #ebeef5; - box-shadow: 1px 1px 15px 0px rgba(155, 155, 155, 0.1); -} - -/* Add some extra padding to tool groups in boxes */ -.box-tool-group { - padding: 10px 0 10px; -} - -.box-tool-group .btn-app { - margin: 0 10px 10px 0; -} - -.box-tool-menu { - background-color: #f4f4f4; -} - -.box-tool-menu > li > a { - color: #444; -} - -.box-profile { - padding: 10px 20px; -} - -.box-profile-property { - float: right !important; -} - -/* Styles for table column selectors */ - -.uf-table-cs-title { - padding: 0px 20px; - font-weight: bold; -} - -.uf-table-cs-options { - padding: 3px 20px; -} - -.uf-table-cs-options label { - width: 100%; - font-weight: normal; - word-wrap: break-word; - word-break: break-all; -} - -.uf-table-cs-options label span { - padding-left: 10px; -} - -/* Table column width, fit to content */ -.uf-table-fit-width { - width: 1%; - white-space: nowrap; -} - -/* Hide global search field on larger devices */ -.uf-table-search { - display: none; -} - -/* Special styling for uf-table messages */ -.uf-table-info { - background-color: #fff !important; - color: #cdcdcd; - font-weight: 700; - text-align: center; -} - -.uf-table-error-row td { - background-color: #f39c12 !important; - color: #fff !important; - text-align: center; -} - -/* Cursor styling for ufCopy */ -.uf-copy-trigger { - cursor: pointer; -} - -/* Special wrapper for alerts on public form pages (sign-in, register, etc) */ -.form-alerts { - margin-bottom: 10px !important; -} - -/* Styling for AdminLTE form control icons, that doesn't interfere with validation plugin */ -.form-control-icon { - position: absolute; - top: 0; - right: 0; - z-index: 2; - display: block; - width: 34px; - height: 34px; - line-height: 34px; - text-align: center; - pointer-events: none; -} - -.input-lg ~ .form-control-icon, -.input-group-lg ~ .form-control-icon, -.form-group-lg .form-control ~ .form-control-icon { - width: 46px; - height: 46px; - line-height: 46px; -} - -.input-sm ~ .form-control-icon, -.input-group-sm ~ .form-control-icon, -.form-group-sm .form-control ~ .form-control-icon { - width: 30px; - height: 30px; - line-height: 30px; -} - -@media (min-width: 768px) { - .form-inline .has-feedback .form-control-icon, - .navbar-form .has-feedback .form-control-icon { - top: 0; - } -} - -.form-horizontal .has-feedback .form-control-icon { - right: 15px; -} - -/* Fix for select2 not resizing properly when the page is resized */ -.select2-container--default { - display: block; - width: 100% !important; -} - -/* Fix for links on info-box */ -a .info-box { - color: black; -} - -/* Custom styling for trash buttons */ -.btn-trash { - padding: 0 10px; - color: #777; -} - -.btn-trash:hover { - color: #d73925; -} - -/* Custom styling for nav logo */ -.main-header .logo { - font-weight: 400; - font-size: 18px; -} - -/* Padding for user menu */ -.user-menu .fa { - padding-left: .5em; - font-size: 11px; -} - -/* Custom classes to add responsiveness to bootstrap's dropdown-menu-right and dropdown-menu-left */ - -.dropdown-menu-right-responsive { - right: auto; - left: 0; -} - -.dropdown-menu-left-responsive { - right: 0; - left: auto; -} - -@media (min-width: 561px) { - .dropdown-menu-right-responsive { - right: 0; - left: auto; - } - - .dropdown-menu-left-responsive { - right: auto; - left: 0; - } -} +/* Use to collapse empty button columns */
+
+.hideable {
+ min-height: 0px;
+}
+
+/* Custom styles for bootstrap-switch labels */
+label.label-switch {
+ margin-top: 5px;
+}
+
+form textarea {
+ resize: vertical; /* user can resize vertically, but width is fixed */
+}
+
+/* Custom styling for table tool menus */
+.dropdown-toggle .caret {
+ position: relative;
+ top: -1px;
+ right: -3px;
+}
+
+.box-tools .dropdown-toggle {
+ background-color: #ebeef5;
+ box-shadow: 1px 1px 15px 0px rgba(155, 155, 155, 0.1);
+}
+
+/* Add some extra padding to tool groups in boxes */
+.box-tool-group {
+ padding: 10px 0 10px;
+}
+
+.box-tool-group .btn-app {
+ margin: 0 10px 10px 0;
+}
+
+.box-tool-menu {
+ background-color: #f4f4f4;
+}
+
+.box-tool-menu > li > a {
+ color: #444;
+}
+
+.box-profile {
+ padding: 10px 20px;
+}
+
+.box-profile-property {
+ float: right !important;
+}
+
+/* Styles for table column selectors */
+
+.uf-table-cs-title {
+ padding: 0px 20px;
+ font-weight: bold;
+}
+
+.uf-table-cs-options {
+ padding: 3px 20px;
+}
+
+.uf-table-cs-options label {
+ width: 100%;
+ font-weight: normal;
+ word-wrap: break-word;
+ word-break: break-all;
+}
+
+.uf-table-cs-options label span {
+ padding-left: 10px;
+}
+
+/* Table column width, fit to content */
+.uf-table-fit-width {
+ width: 1%;
+ white-space: nowrap;
+}
+
+/* Hide global search field on larger devices */
+.uf-table-search {
+ display: none;
+}
+
+/* Special styling for uf-table messages */
+.uf-table-info {
+ background-color: #fff !important;
+ color: #cdcdcd;
+ font-weight: 700;
+ text-align: center;
+}
+
+.uf-table-error-row td {
+ background-color: #f39c12 !important;
+ color: #fff !important;
+ text-align: center;
+}
+
+/* Cursor styling for ufCopy */
+.uf-copy-trigger {
+ cursor: pointer;
+}
+
+/* Special wrapper for alerts on public form pages (sign-in, register, etc) */
+.form-alerts {
+ margin-bottom: 10px !important;
+}
+
+/* Styling for AdminLTE form control icons, that doesn't interfere with validation plugin */
+.form-control-icon {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ display: block;
+ width: 34px;
+ height: 34px;
+ line-height: 34px;
+ text-align: center;
+ pointer-events: none;
+}
+
+.input-lg ~ .form-control-icon,
+.input-group-lg ~ .form-control-icon,
+.form-group-lg .form-control ~ .form-control-icon {
+ width: 46px;
+ height: 46px;
+ line-height: 46px;
+}
+
+.input-sm ~ .form-control-icon,
+.input-group-sm ~ .form-control-icon,
+.form-group-sm .form-control ~ .form-control-icon {
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+}
+
+@media (min-width: 768px) {
+ .form-inline .has-feedback .form-control-icon,
+ .navbar-form .has-feedback .form-control-icon {
+ top: 0;
+ }
+}
+
+.form-horizontal .has-feedback .form-control-icon {
+ right: 15px;
+}
+
+/* Fix for select2 not resizing properly when the page is resized */
+.select2-container--default {
+ display: block;
+ width: 100% !important;
+}
+
+/* Fix for links on info-box */
+a .info-box {
+ color: black;
+}
+
+/* Custom styling for trash buttons */
+.btn-trash {
+ padding: 0 10px;
+ color: #777;
+}
+
+.btn-trash:hover {
+ color: #d73925;
+}
+
+/* Custom styling for nav logo */
+.main-header .logo {
+ font-weight: 400;
+ font-size: 18px;
+}
+
+/* Padding for user menu */
+.user-menu .fa {
+ padding-left: .5em;
+ font-size: 11px;
+}
+
+/* Custom classes to add responsiveness to bootstrap's dropdown-menu-right and dropdown-menu-left */
+
+.dropdown-menu-right-responsive {
+ right: auto;
+ left: 0;
+}
+
+.dropdown-menu-left-responsive {
+ right: 0;
+ left: auto;
+}
+
+@media (min-width: 561px) {
+ .dropdown-menu-right-responsive {
+ right: 0;
+ left: auto;
+ }
+
+ .dropdown-menu-left-responsive {
+ right: auto;
+ left: 0;
+ }
+}
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/ieconfig.xml b/main/app/sprinkles/core/assets/userfrosting/favicons/ieconfig.xml index a008d3d..cdf27b4 100644 --- a/main/app/sprinkles/core/assets/userfrosting/favicons/ieconfig.xml +++ b/main/app/sprinkles/core/assets/userfrosting/favicons/ieconfig.xml @@ -1,12 +1,12 @@ -<?xml version="1.0" encoding="utf-8"?> -<browserconfig> - <msapplication> - <tile> - <square70x70logo src="/mstile-70x70.png"/> - <square150x150logo src="/mstile-150x150.png"/> - <square310x310logo src="/mstile-310x310.png"/> - <wide310x150logo src="/mstile-310x150.png"/> - <TileColor>#603cba</TileColor> - </tile> - </msapplication> -</browserconfig> +<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+ <msapplication>
+ <tile>
+ <square70x70logo src="/mstile-70x70.png"/>
+ <square150x150logo src="/mstile-150x150.png"/>
+ <square310x310logo src="/mstile-310x310.png"/>
+ <wide310x150logo src="/mstile-310x150.png"/>
+ <TileColor>#603cba</TileColor>
+ </tile>
+ </msapplication>
+</browserconfig>
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/manifest.json b/main/app/sprinkles/core/assets/userfrosting/favicons/manifest.json index 51628c7..53a5ed0 100644 --- a/main/app/sprinkles/core/assets/userfrosting/favicons/manifest.json +++ b/main/app/sprinkles/core/assets/userfrosting/favicons/manifest.json @@ -1,51 +1,51 @@ -{ - "name": "UserFrosting", - "icons": [ - { - "src": "\/android-chrome-36x36.png", - "sizes": "36x36", - "type": "image\/png" - }, - { - "src": "\/android-chrome-48x48.png", - "sizes": "48x48", - "type": "image\/png" - }, - { - "src": "\/android-chrome-72x72.png", - "sizes": "72x72", - "type": "image\/png" - }, - { - "src": "\/android-chrome-96x96.png", - "sizes": "96x96", - "type": "image\/png" - }, - { - "src": "\/android-chrome-144x144.png", - "sizes": "144x144", - "type": "image\/png" - }, - { - "src": "\/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image\/png" - }, - { - "src": "\/android-chrome-256x256.png", - "sizes": "256x256", - "type": "image\/png" - }, - { - "src": "\/android-chrome-384x384.png", - "sizes": "384x384", - "type": "image\/png" - }, - { - "src": "\/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image\/png" - } - ], - "theme_color": "#f3f2e4" -} +{
+ "name": "UserFrosting",
+ "icons": [
+ {
+ "src": "\/android-chrome-36x36.png",
+ "sizes": "36x36",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-48x48.png",
+ "sizes": "48x48",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-72x72.png",
+ "sizes": "72x72",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-96x96.png",
+ "sizes": "96x96",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-144x144.png",
+ "sizes": "144x144",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-256x256.png",
+ "sizes": "256x256",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-384x384.png",
+ "sizes": "384x384",
+ "type": "image\/png"
+ },
+ {
+ "src": "\/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image\/png"
+ }
+ ],
+ "theme_color": "#f3f2e4"
+}
diff --git a/main/app/sprinkles/core/assets/userfrosting/favicons/safari-pinned-tab.svg b/main/app/sprinkles/core/assets/userfrosting/favicons/safari-pinned-tab.svg index 67d76d2..458fb29 100644 --- a/main/app/sprinkles/core/assets/userfrosting/favicons/safari-pinned-tab.svg +++ b/main/app/sprinkles/core/assets/userfrosting/favicons/safari-pinned-tab.svg @@ -1,246 +1,246 @@ -<?xml version="1.0" standalone="no"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" - "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> -<svg version="1.0" xmlns="http://www.w3.org/2000/svg" - width="2061.000000pt" height="2061.000000pt" viewBox="0 0 2061.000000 2061.000000" - preserveAspectRatio="xMidYMid meet"> - <metadata> - Created by potrace 1.11, written by Peter Selinger 2001-2013 - </metadata> - <g transform="translate(0.000000,2061.000000) scale(0.100000,-0.100000)" - fill="#000000" stroke="none"> - <path d="M11924 20602 c-23 -15 -154 -225 -166 -265 -6 -23 -24 -56 -38 -73 --29 -34 -77 -193 -104 -344 -34 -185 -47 -488 -25 -547 13 -34 59 -84 71 -77 -4 3 8 38 8 77 0 40 5 135 10 212 27 360 96 596 235 800 53 77 85 145 85 180 0 -34 -47 57 -76 37z"/> - <path d="M9482 18775 c-113 -29 -217 -78 -303 -142 l-64 -48 56 -8 c48 -8 63 --6 102 12 25 12 77 28 114 37 126 28 178 67 197 147 8 32 14 32 -102 2z"/> - <path d="M11641 18720 c-26 -43 -26 -66 -1 -132 22 -58 26 -118 10 -148 -15 --28 -47 -42 -110 -49 l-55 -6 74 -24 c40 -14 146 -60 235 -104 236 -116 321 --152 442 -187 137 -39 306 -121 410 -197 110 -83 250 -233 334 -360 40 -60 -107 -180 151 -268 43 -88 97 -189 119 -224 38 -62 45 -86 41 -141 -4 -50 -6 --51 -83 -24 -190 65 -447 128 -711 173 -222 39 -321 52 -786 106 -409 48 -450 -54 -774 115 -115 22 -234 40 -264 40 l-56 0 6 -37 c4 -24 16 -46 33 -59 28 --23 111 -49 183 -59 24 -3 56 -12 71 -20 30 -15 52 -62 43 -93 -2 -10 0 -37 6 --60 15 -53 84 -117 269 -247 78 -55 142 -107 142 -115 0 -9 -7 -26 -16 -38 --13 -18 -24 -22 -72 -22 -31 0 -86 9 -120 20 -35 11 -78 20 -95 20 -35 0 -117 --34 -117 -48 0 -8 738 -232 1040 -316 333 -93 675 -172 1440 -336 644 -138 -744 -162 803 -191 55 -27 104 -74 129 -123 21 -41 48 -152 48 -200 l0 -28 --122 6 c-973 50 -1322 53 -1676 16 -122 -13 -152 -25 -152 -57 0 -41 41 -69 -146 -102 390 -119 938 -257 1284 -322 61 -11 120 -42 103 -52 -9 -5 -129 -25 --345 -56 -138 -21 -299 -66 -305 -88 -2 -6 5 -14 17 -18 12 -4 19 -12 17 -18 --10 -28 -164 -5 -587 84 -543 115 -765 160 -1025 204 -116 20 -250 44 -300 55 --141 30 -162 32 -206 20 -33 -9 -43 -18 -56 -47 -13 -33 -13 -38 5 -62 30 -41 -76 -57 321 -116 405 -97 628 -136 1326 -235 237 -34 484 -70 550 -81 66 -10 -123 -19 127 -19 4 0 10 -10 13 -22 12 -40 55 -87 96 -109 23 -11 81 -29 131 --40 94 -20 152 -41 161 -56 3 -5 -343 -19 -811 -32 -449 -13 -819 -26 -822 --28 -9 -8 33 -33 64 -37 537 -77 1265 -146 2021 -192 276 -17 736 -15 852 4 -33 5 56 5 63 -2 6 -6 17 -6 32 1 13 6 56 14 96 17 73 6 73 6 109 -29 45 -43 -110 -68 253 -95 74 -14 144 -35 204 -62 50 -22 132 -54 181 -72 71 -26 93 -38 -103 -59 19 -39 -2 -78 -48 -90 -56 -15 -465 -1 -665 23 -99 11 -297 37 -440 -56 -391 52 -509 64 -755 74 -186 8 -267 16 -465 49 -132 22 -314 49 -405 61 --312 38 -1083 202 -1157 246 -37 21 -53 24 -152 24 -127 0 -136 -8 -78 -64 25 --26 78 -49 260 -115 273 -98 401 -132 602 -161 176 -25 297 -51 611 -131 259 --65 460 -105 608 -118 78 -7 102 -13 113 -27 19 -25 17 -32 -15 -48 -16 -8 --48 -40 -72 -71 -62 -80 -142 -150 -195 -171 -39 -15 -53 -15 -99 -5 -63 14 --179 80 -261 150 -33 28 -75 59 -93 68 -31 16 -35 16 -67 -1 -40 -22 -60 -63 --51 -109 9 -49 80 -190 141 -282 29 -44 97 -132 150 -195 53 -63 123 -147 156 --187 l60 -72 -40 -20 c-72 -37 -104 -36 -286 8 -94 22 -307 63 -475 91 -168 -27 -394 68 -504 90 -288 58 -531 100 -1066 185 -695 110 -993 165 -1355 251 --162 39 -205 40 -253 6 l-28 -21 -493 185 c-272 102 -496 182 -500 178 -11 --11 97 -102 166 -140 105 -59 531 -236 993 -414 680 -261 1396 -498 2105 -695 -554 -154 1403 -355 1503 -355 104 0 150 -42 122 -111 -27 -65 -169 -104 -410 --114 -488 -19 -1114 97 -1990 370 -366 115 -1178 393 -1218 419 -22 13 -58 29 --80 36 -42 11 -92 5 -92 -11 0 -12 84 -59 134 -74 24 -7 79 -33 122 -58 421 --238 1013 -477 1619 -652 498 -144 1352 -337 1965 -444 150 -26 1044 -171 -1056 -171 2 0 4 -7 4 -15 0 -26 53 -74 105 -94 163 -62 375 -155 422 -183 29 --18 70 -49 90 -70 l37 -38 -31 0 c-17 0 -44 6 -60 14 -20 11 -145 22 -447 41 --230 14 -419 25 -421 23 -1 -2 -5 -13 -9 -24 -6 -20 -1 -23 56 -36 602 -136 -1408 -324 1408 -329 0 -12 -58 -31 -92 -31 -18 0 -80 8 -137 17 -189 32 -381 -8 -561 -68 -72 -31 -79 -32 -160 -25 -47 4 -404 57 -794 118 -1439 225 -1626 -249 -2466 319 -679 57 -687 57 -718 34 -15 -11 -28 -27 -30 -35 -6 -29 253 --128 333 -128 13 0 28 -6 34 -14 6 -8 31 -17 55 -20 38 -6 44 -10 50 -37 9 --47 44 -72 146 -108 199 -69 337 -148 445 -254 89 -87 98 -141 31 -192 -81 --62 -509 -215 -1061 -380 -176 -52 -378 -118 -450 -146 -169 -66 -273 -93 --339 -86 -44 5 -68 -1 -171 -40 -275 -104 -834 -281 -1145 -363 -184 -48 -208 --58 -233 -95 -20 -32 -23 -33 -112 -39 -727 -56 -1440 -59 -2045 -11 -510 41 --1079 132 -1514 241 -191 48 -298 83 -536 176 -169 66 -209 85 -230 111 -49 -63 -123 137 -176 178 -53 41 -224 133 -231 125 -11 -11 46 -96 96 -146 58 -59 -146 -113 249 -155 43 -18 75 -41 114 -81 29 -31 93 -88 142 -126 98 -76 321 --216 376 -236 336 -123 583 -181 925 -217 231 -24 745 -38 1190 -31 899 14 -1535 56 2435 161 331 39 1117 120 1255 130 50 3 110 13 135 20 25 8 162 30 -305 50 143 20 355 49 470 65 116 16 320 41 455 55 135 14 405 50 600 80 426 -66 573 84 746 92 l130 6 80 -42 c250 -131 504 -389 630 -638 80 -160 41 -273 --114 -327 -66 -24 -180 -35 -523 -51 -361 -18 -352 -17 -1134 -95 -324 -33 --705 -68 -845 -80 -868 -70 -1174 -130 -1670 -325 -195 -77 -342 -125 -685 --223 -324 -93 -764 -212 -784 -212 -10 0 -44 9 -77 20 -53 19 -223 47 -1249 -210 -334 53 -386 63 -570 115 -169 48 -548 171 -584 189 -59 31 -101 16 -101 --36 0 -33 2 -33 -139 -12 -275 40 -478 117 -649 246 -36 28 -124 77 -195 109 --361 166 -641 320 -867 478 -267 187 -384 240 -594 267 -124 16 -189 42 -289 -116 l-58 43 30 7 c16 5 45 26 64 48 l34 40 646 -294 c356 -161 659 -304 673 --317 24 -22 33 -24 121 -23 95 2 97 1 121 -27 19 -23 27 -27 38 -18 22 18 17 -26 -20 39 -23 7 -49 30 -78 67 -49 64 -137 141 -728 633 -234 195 -567 476 --740 625 -402 346 -730 619 -1362 1133 -278 227 -530 439 -560 470 -66 72 --122 177 -144 268 -42 179 29 596 151 877 6 13 2 17 -17 17 -39 0 -136 -54 --218 -120 -41 -34 -100 -82 -131 -106 -91 -73 -100 -116 -43 -210 118 -194 -140 -281 112 -445 -22 -134 21 -260 127 -369 23 -25 46 -59 50 -77 3 -17 12 --34 19 -36 7 -3 16 -19 19 -36 4 -17 16 -39 27 -48 11 -10 20 -26 20 -37 0 --11 20 -41 44 -66 24 -25 87 -114 141 -198 83 -131 105 -158 152 -188 29 -20 -67 -56 84 -80 36 -52 74 -151 83 -216 7 -49 38 -98 62 -98 10 0 14 -13 14 -46 -0 -42 -1 -45 -22 -38 -42 13 -73 32 -131 83 -60 53 -106 81 -130 81 -16 0 -49 --70 -68 -143 -18 -72 -6 -216 25 -312 14 -45 30 -126 35 -186 11 -120 22 -176 -53 -269 65 -201 194 -364 376 -476 160 -98 248 -190 277 -287 12 -41 14 -84 9 --216 -7 -191 1 -218 72 -255 36 -19 54 -21 229 -19 217 3 323 17 485 62 127 -36 154 34 186 -14 16 -24 15 -27 -12 -66 -63 -89 -76 -120 -82 -184 -11 -141 -91 -292 206 -303 56 -5 99 11 187 68 34 22 75 42 91 46 46 9 86 -31 144 -145 -107 -207 224 -284 386 -251 76 15 219 83 319 150 83 56 165 96 205 102 24 3 -25 0 28 -50 2 -29 -6 -95 -17 -147 -23 -103 -27 -237 -10 -298 6 -21 26 -56 -46 -78 121 -133 421 -74 932 183 285 143 310 150 354 99 18 -21 33 -65 52 --148 35 -153 75 -260 131 -359 73 -127 117 -164 200 -164 66 0 125 31 152 79 -27 48 38 135 51 391 6 102 16 205 23 230 13 43 15 45 48 42 53 -6 146 -37 276 --93 71 -31 157 -59 214 -70 152 -31 211 -71 238 -159 6 -19 16 -136 22 -259 -16 -323 36 -422 101 -496 47 -53 114 -69 259 -62 63 4 134 10 158 13 l44 7 --21 -39 c-35 -66 -28 -124 53 -446 95 -373 162 -611 287 -1023 56 -181 144 --476 196 -655 130 -448 230 -739 284 -826 14 -23 19 -50 19 -103 0 -73 9 -93 -55 -119 15 -8 27 -78 75 -423 32 -228 72 -531 89 -674 22 -184 41 -299 66 --392 49 -188 60 -282 45 -370 -11 -66 -16 -76 -56 -112 -34 -32 -51 -41 -79 --41 -80 0 -133 53 -342 340 -78 107 -97 142 -137 247 -51 138 -61 199 -136 -823 -93 771 -115 903 -271 1580 -197 854 -306 1230 -472 1631 -35 85 -67 166 --71 181 -14 58 -57 74 -101 35 -21 -18 -31 -48 -60 -172 -85 -364 -86 -417 --14 -706 113 -458 170 -750 214 -1108 37 -295 52 -359 180 -776 95 -307 129 --449 160 -661 51 -347 155 -673 322 -1012 65 -132 70 -168 30 -227 -15 -22 --32 -58 -38 -80 -15 -53 -60 -108 -132 -161 -99 -73 -169 -69 -255 14 -112 -109 -214 298 -302 559 -48 141 -60 188 -60 239 0 121 -498 2064 -730 2849 --179 606 -275 899 -340 1043 -46 102 -98 199 -110 207 -11 7 -55 -50 -75 -98 --8 -20 -15 -54 -15 -75 0 -80 87 -558 171 -937 98 -442 336 -1383 459 -1815 -149 -525 190 -716 183 -860 -4 -71 1 -127 17 -220 24 -134 28 -265 11 -370 --13 -80 -49 -120 -108 -120 -33 0 -46 9 -118 82 -45 46 -96 101 -113 123 l-32 -40 0 -30 c0 -36 30 -151 58 -222 72 -188 228 -370 382 -448 25 -12 101 -35 -170 -50 188 -40 438 -113 930 -270 58 -18 146 -45 196 -59 51 -14 163 -53 250 --87 396 -153 413 -156 829 -163 464 -7 641 -28 1545 -180 750 -126 927 -145 -1425 -153 566 -9 988 24 1733 137 1120 171 1302 188 1982 194 431 4 527 11 -780 56 400 73 727 191 1739 629 178 77 341 152 363 167 81 57 138 165 138 264 -0 107 -52 187 -179 272 -153 104 -250 221 -309 376 -28 73 -40 120 -78 322 --31 166 -124 309 -238 365 -28 13 -95 33 -149 44 -104 21 -195 58 -274 112 --89 61 -367 272 -533 404 -270 216 -360 272 -520 326 -115 38 -270 49 -385 27 -l-71 -14 94 225 c51 124 210 512 352 861 602 1481 843 2031 1216 2780 168 336 -222 434 316 576 127 190 211 331 413 699 76 138 156 277 180 310 59 84 83 135 -99 208 10 50 33 97 104 214 59 96 101 154 117 161 29 14 41 52 25 82 -9 17 -9 -25 4 39 18 20 20 44 6 70 -5 10 -71 90 -146 177 -157 184 -178 221 -178 314 1 -81 25 146 101 265 31 50 85 146 120 213 56 110 63 130 63 182 0 63 -19 94 -76 -123 -16 8 -179 58 -363 112 -184 53 -351 105 -371 115 -59 30 -88 71 -95 137 --14 121 -49 206 -145 348 -26 39 -59 92 -75 119 -19 34 -38 53 -64 64 l-36 16 -0 90 c0 133 -23 174 -195 351 -149 154 -160 173 -160 283 0 81 31 236 85 429 -25 87 45 179 45 206 0 45 -1 47 -28 47 -39 0 -52 32 -52 125 0 57 -5 82 -20 -107 -16 26 -20 51 -20 116 0 56 -4 82 -12 82 -6 0 -22 10 -35 22 -42 40 -48 -17 -49 -195 -1 -187 -10 -254 -37 -287 -14 -19 -58 -50 -69 -50 -16 0 -8 97 -16 195 46 192 49 212 36 282 -20 117 -97 256 -159 287 -14 7 -55 16 -90 20 --146 16 -183 56 -189 203 l-4 93 53 -16 c30 -9 78 -30 107 -47 62 -37 230 --169 253 -199 10 -13 23 -19 33 -15 22 9 20 27 -4 27 -13 0 -22 10 -29 36 -17 -60 -51 101 -151 178 -52 41 -104 84 -115 96 -11 12 -38 31 -60 42 -22 11 -69 -46 -104 77 -304 269 -576 385 -1206 514 l-109 22 -53 70 c-242 318 -456 448 --773 470 -174 12 -287 50 -550 186 -178 92 -195 106 -186 144 9 36 28 40 110 -26 39 -7 162 -16 273 -21 319 -15 398 -38 583 -175 125 -91 217 -147 309 -185 -71 -29 200 -65 207 -57 3 3 -157 166 -354 363 -453 454 -602 628 -783 921 --115 186 -209 272 -384 354 -80 38 -247 87 -355 104 l-45 7 65 -59 c64 -59 -153 -137 344 -303 155 -134 303 -310 424 -505 52 -84 150 -280 167 -334 7 -23 -5 -23 -33 10 -22 19 -147 126 -278 239 -471 406 -873 722 -1449 1140 l-210 -153 63 -7 c93 -10 211 -47 437 -136 191 -75 334 -124 341 -117 10 9 -51 78 --93 105 -78 50 -263 134 -468 211 -263 100 -432 186 -699 356 -289 184 -394 -246 -509 300 -102 47 -245 97 -331 115 -71 15 -110 47 -134 113 l-20 51 -21 --34z m105 -1815 c193 -33 371 -97 549 -196 134 -74 155 -92 155 -135 0 -50 --14 -55 -126 -44 -134 13 -312 12 -376 -1 -29 -6 -81 -24 -115 -39 -84 -38 --118 -44 -169 -30 -63 18 -117 70 -158 150 -46 93 -55 149 -29 191 22 34 139 -119 164 119 9 0 56 -7 105 -15z m5990 -3540 c-15 -23 -52 -42 -62 -32 -3 3 -2 -17 2 32 8 33 67 64 72 39 2 -8 -3 -26 -12 -39z m-15398 -3420 c35 -29 46 -67 -36 -119 l-6 -36 -50 42 c-57 47 -72 77 -58 113 12 32 40 32 78 0z m109 -180 -c2 -6 -3 -20 -12 -30 -14 -20 -15 -20 -35 5 -11 14 -20 29 -20 33 0 12 63 4 -67 -8z m263 -103 c0 -2 -13 -15 -30 -29 -21 -17 -30 -34 -30 -54 0 -34 19 -46 -126 -77 80 -24 92 -35 101 -86 l6 -36 -64 0 c-51 0 -67 -4 -86 -22 -13 -12 --23 -27 -23 -35 0 -20 -60 -16 -97 7 -33 20 -76 77 -88 118 -7 24 4 29 23 10 -10 -10 15 -10 22 2 18 28 10 56 -29 113 -42 59 -41 66 10 86 21 9 159 11 159 -3z m90 -451 c3 -2 -8 -1 -25 3 -32 8 -55 30 -55 55 0 10 13 3 37 -20 21 -18 -40 -36 43 -38z m3374 -1488 c57 -40 57 -53 2 -53 -53 0 -110 21 -143 52 -31 -29 -13 41 52 34 32 -4 64 -16 89 -33z m158 -77 c22 -16 22 -16 -14 -16 -22 0 --45 8 -59 21 l-24 20 37 -5 c21 -2 48 -12 60 -20z m263 -110 c26 -8 65 -29 86 --45 21 -17 45 -31 54 -31 22 0 55 -18 55 -30 0 -19 -59 -11 -70 10 -8 15 -21 -20 -54 20 -47 0 -166 53 -174 78 -5 17 43 16 103 -2z m7062 -337 c24 -11 52 --33 63 -47 12 -15 85 -111 163 -213 78 -103 190 -245 249 -317 123 -149 166 --179 244 -168 43 5 44 5 44 -23 0 -15 -9 -70 -20 -122 -11 -52 -20 -116 -20 --144 0 -27 -9 -72 -19 -100 -10 -27 -67 -232 -126 -455 -308 -1171 -764 -2779 --798 -2819 -8 -9 -17 -32 -21 -51 -12 -60 -153 -157 -208 -142 -32 8 -66 64 --118 192 -60 149 -120 421 -120 545 0 78 125 1113 196 1620 40 292 42 402 6 -510 -73 220 -88 245 -137 245 -36 0 -74 -36 -80 -78 -4 -20 -19 -93 -35 -162 --61 -260 -95 -447 -306 -1700 -19 -113 -72 -470 -119 -795 -124 -857 -172 --1143 -256 -1519 l-39 -178 -58 -77 c-90 -117 -150 -142 -242 -101 -67 30 --225 141 -236 164 -5 12 -40 37 -77 56 -38 20 -76 44 -84 55 -20 27 -14 96 36 -430 53 353 86 619 171 1375 93 826 102 947 132 1750 19 508 17 820 -5 897 -24 -86 -159 363 -191 392 -17 16 -41 25 -74 29 -44 4 -53 1 -84 -26 -36 -32 -52 --72 -63 -157 -4 -27 -9 -59 -12 -69 -5 -18 -6 -18 -19 5 -9 16 -13 62 -14 139 --1 215 -23 412 -63 549 l-21 74 29 55 c41 78 117 157 170 178 128 48 307 -47 -560 -299 66 -66 147 -140 180 -165 159 -118 438 -216 657 -229 91 -6 100 -4 -152 21 42 21 62 39 81 71 37 62 44 94 55 240 12 154 28 223 80 330 33 68 50 -90 120 150 124 108 188 127 277 84z m-4723 -610 c20 -17 52 -58 72 -92 195 --325 376 -468 618 -486 120 -9 120 -8 127 -279 3 -119 9 -226 14 -237 25 -61 -101 -124 152 -126 10 0 -3 -7 -29 -15 -92 -28 -107 -91 -68 -282 10 -54 24 --173 30 -267 21 -327 235 -2034 340 -2705 26 -166 31 -187 54 -206 13 -12 30 --24 36 -26 7 -2 20 -61 31 -143 48 -351 71 -455 126 -557 25 -46 25 -48 8 -75 --73 -114 -169 -181 -241 -170 -96 16 -213 109 -320 252 -75 103 -145 165 -185 -165 -22 0 -12 -66 -99 695 -97 852 -125 1105 -159 1460 -47 472 -60 577 -92 -745 -69 353 -209 750 -386 1093 -46 89 -104 152 -151 164 l-24 6 3 496 c3 453 -2 499 -14 535 -9 21 -17 40 -17 42 0 3 15 13 33 24 49 30 99 26 141 -11z -m1526 -69 c129 -219 248 -287 431 -247 l66 14 7 -406 c14 -880 49 -1612 112 --2361 33 -406 46 -520 55 -520 4 0 22 30 40 66 30 61 33 77 40 198 4 72 25 -514 48 981 23 468 46 860 51 872 5 12 18 27 29 33 19 10 20 8 16 -17 -3 -16 --12 -197 -20 -403 -25 -627 -47 -976 -75 -1205 -6 -44 -15 -210 -20 -370 -5 --159 -17 -414 -26 -565 -9 -151 -17 -459 -18 -685 -3 -383 -4 -415 -24 -480 --18 -62 -28 -77 -84 -130 -35 -33 -87 -72 -115 -88 -71 -38 -189 -67 -305 -74 -l-98 -6 0 99 c0 54 9 430 20 834 34 1295 42 1820 38 2510 -4 642 -6 679 -25 -760 -40 160 -102 299 -186 410 -48 63 -44 22 -38 420 3 172 1 204 -18 273 -19 -72 -19 82 -6 115 17 39 33 62 45 62 4 0 31 -40 60 -90z m-1540 -2529 c50 -398 -89 -726 87 -728 -12 -11 -41 15 -61 56 -21 41 -22 49 -10 76 19 44 17 158 -6 -252 -11 45 -27 144 -35 220 -9 76 -31 242 -50 368 -58 395 -60 415 -40 460 10 -22 19 36 21 30 2 -5 44 -336 94 -734z"/> - <path d="M7997 17171 c-21 -10 -55 -34 -75 -53 -20 -19 -71 -62 -113 -96 -42 --33 -98 -85 -126 -115 l-50 -55 -7 -94 c-12 -177 22 -403 79 -524 33 -68 111 --160 157 -185 27 -15 27 -15 -56 183 -37 86 -74 191 -83 232 -15 70 -15 78 1 -121 30 78 84 91 228 54 105 -27 147 -18 173 38 16 33 18 64 16 228 -2 196 -6 -251 -24 273 -14 17 -75 14 -120 -7z"/> - <path d="M6910 17111 c-207 -255 -261 -331 -432 -617 -160 -266 -161 -270 --124 -544 8 -63 20 -218 26 -345 11 -253 21 -340 51 -448 11 -40 24 -94 30 --122 14 -64 41 -109 85 -135 27 -17 34 -28 34 -53 0 -34 31 -110 48 -121 16 --10 35 32 28 60 -4 13 -19 38 -35 56 -23 27 -37 68 -74 213 -55 216 -72 331 --63 445 11 161 78 331 170 435 50 56 46 59 71 -60 27 -126 73 -262 123 -360 -37 -73 64 -108 139 -183 51 -52 96 -105 99 -118 8 -33 57 -80 91 -89 15 -3 38 --16 51 -27 12 -12 22 -17 22 -11 0 5 -9 18 -20 28 -11 10 -20 27 -20 37 0 28 --27 76 -49 88 -11 5 -31 10 -45 10 -23 0 -26 4 -26 38 0 28 -11 56 -40 101 --52 80 -163 301 -201 400 -58 151 -83 274 -82 406 1 69 8 143 16 175 45 172 -85 286 131 375 50 97 51 102 51 185 0 83 -20 200 -33 200 -4 -1 -14 -9 -22 --19z"/> - <path d="M4200 15495 c-19 -19 -42 -35 -53 -35 -10 0 -39 -21 -65 -47 -26 -25 --35 -37 -21 -25 14 12 32 22 40 22 23 1 53 22 98 73 50 55 51 64 1 12z"/> - <path d="M3930 13725 c-7 -8 -21 -15 -33 -15 -28 0 -81 -35 -111 -74 -14 -19 --41 -44 -60 -56 -19 -11 -107 -98 -195 -191 -137 -145 -166 -182 -201 -252 --30 -62 -42 -99 -46 -152 l-6 -70 46 -43 c27 -25 55 -42 69 -42 31 0 88 39 -104 70 7 14 32 66 55 115 24 50 87 158 140 240 133 210 219 364 225 405 3 19 -15 45 26 58 11 12 16 22 10 22 -6 0 -16 -7 -23 -15z"/> - <path d="M2674 13567 c-25 -14 -132 -145 -192 -234 -98 -145 -190 -374 -227 --563 -49 -255 11 -719 131 -1009 111 -269 296 -490 779 -933 371 -340 858 --778 862 -774 3 2 -1 23 -7 46 -9 34 -49 81 -222 263 -522 549 -1019 1133 --1175 1382 -53 84 -112 216 -134 300 -39 150 -22 409 44 685 l13 55 18 -80 -c42 -186 147 -439 255 -618 27 -45 52 -100 56 -122 11 -57 22 -75 56 -87 24 --8 29 -15 29 -43 0 -32 21 -65 40 -65 5 0 17 11 25 24 21 31 6 63 -35 77 -25 -9 -28 16 -32 64 -3 40 -14 70 -41 113 -59 96 -133 376 -156 594 -21 192 -8 -400 38 583 44 177 46 199 27 249 -28 73 -106 121 -152 93z"/> - <path d="M5265 6405 c56 -741 1232 -4262 1540 -4612 13 -16 25 -22 25 -15 0 7 --22 86 -50 175 -71 234 -180 621 -335 1197 -335 1241 -499 1768 -740 2380 --128 325 -382 878 -430 935 -15 19 -16 16 -10 -60z"/> - <path d="M5345 4220 c6 -31 41 -162 187 -685 50 -181 91 -381 118 -575 39 --283 116 -539 255 -840 34 -74 67 -149 74 -167 20 -51 54 -76 90 -68 38 8 71 -48 71 85 0 40 -34 201 -81 380 -76 292 -174 561 -424 1160 -70 168 -165 404 --212 525 -46 121 -81 204 -78 185z"/> - <path d="M5125 3042 c1 -265 3 -275 126 -456 107 -160 195 -265 253 -306 41 --28 66 -37 66 -25 0 3 -23 50 -50 105 -28 56 -103 232 -166 393 -100 251 -200 -475 -222 499 -4 4 -7 -91 -7 -210z"/> - </g> -</svg> +<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="2061.000000pt" height="2061.000000pt" viewBox="0 0 2061.000000 2061.000000"
+ preserveAspectRatio="xMidYMid meet">
+ <metadata>
+ Created by potrace 1.11, written by Peter Selinger 2001-2013
+ </metadata>
+ <g transform="translate(0.000000,2061.000000) scale(0.100000,-0.100000)"
+ fill="#000000" stroke="none">
+ <path d="M11924 20602 c-23 -15 -154 -225 -166 -265 -6 -23 -24 -56 -38 -73
+-29 -34 -77 -193 -104 -344 -34 -185 -47 -488 -25 -547 13 -34 59 -84 71 -77
+4 3 8 38 8 77 0 40 5 135 10 212 27 360 96 596 235 800 53 77 85 145 85 180 0
+34 -47 57 -76 37z"/>
+ <path d="M9482 18775 c-113 -29 -217 -78 -303 -142 l-64 -48 56 -8 c48 -8 63
+-6 102 12 25 12 77 28 114 37 126 28 178 67 197 147 8 32 14 32 -102 2z"/>
+ <path d="M11641 18720 c-26 -43 -26 -66 -1 -132 22 -58 26 -118 10 -148 -15
+-28 -47 -42 -110 -49 l-55 -6 74 -24 c40 -14 146 -60 235 -104 236 -116 321
+-152 442 -187 137 -39 306 -121 410 -197 110 -83 250 -233 334 -360 40 -60
+107 -180 151 -268 43 -88 97 -189 119 -224 38 -62 45 -86 41 -141 -4 -50 -6
+-51 -83 -24 -190 65 -447 128 -711 173 -222 39 -321 52 -786 106 -409 48 -450
+54 -774 115 -115 22 -234 40 -264 40 l-56 0 6 -37 c4 -24 16 -46 33 -59 28
+-23 111 -49 183 -59 24 -3 56 -12 71 -20 30 -15 52 -62 43 -93 -2 -10 0 -37 6
+-60 15 -53 84 -117 269 -247 78 -55 142 -107 142 -115 0 -9 -7 -26 -16 -38
+-13 -18 -24 -22 -72 -22 -31 0 -86 9 -120 20 -35 11 -78 20 -95 20 -35 0 -117
+-34 -117 -48 0 -8 738 -232 1040 -316 333 -93 675 -172 1440 -336 644 -138
+744 -162 803 -191 55 -27 104 -74 129 -123 21 -41 48 -152 48 -200 l0 -28
+-122 6 c-973 50 -1322 53 -1676 16 -122 -13 -152 -25 -152 -57 0 -41 41 -69
+146 -102 390 -119 938 -257 1284 -322 61 -11 120 -42 103 -52 -9 -5 -129 -25
+-345 -56 -138 -21 -299 -66 -305 -88 -2 -6 5 -14 17 -18 12 -4 19 -12 17 -18
+-10 -28 -164 -5 -587 84 -543 115 -765 160 -1025 204 -116 20 -250 44 -300 55
+-141 30 -162 32 -206 20 -33 -9 -43 -18 -56 -47 -13 -33 -13 -38 5 -62 30 -41
+76 -57 321 -116 405 -97 628 -136 1326 -235 237 -34 484 -70 550 -81 66 -10
+123 -19 127 -19 4 0 10 -10 13 -22 12 -40 55 -87 96 -109 23 -11 81 -29 131
+-40 94 -20 152 -41 161 -56 3 -5 -343 -19 -811 -32 -449 -13 -819 -26 -822
+-28 -9 -8 33 -33 64 -37 537 -77 1265 -146 2021 -192 276 -17 736 -15 852 4
+33 5 56 5 63 -2 6 -6 17 -6 32 1 13 6 56 14 96 17 73 6 73 6 109 -29 45 -43
+110 -68 253 -95 74 -14 144 -35 204 -62 50 -22 132 -54 181 -72 71 -26 93 -38
+103 -59 19 -39 -2 -78 -48 -90 -56 -15 -465 -1 -665 23 -99 11 -297 37 -440
+56 -391 52 -509 64 -755 74 -186 8 -267 16 -465 49 -132 22 -314 49 -405 61
+-312 38 -1083 202 -1157 246 -37 21 -53 24 -152 24 -127 0 -136 -8 -78 -64 25
+-26 78 -49 260 -115 273 -98 401 -132 602 -161 176 -25 297 -51 611 -131 259
+-65 460 -105 608 -118 78 -7 102 -13 113 -27 19 -25 17 -32 -15 -48 -16 -8
+-48 -40 -72 -71 -62 -80 -142 -150 -195 -171 -39 -15 -53 -15 -99 -5 -63 14
+-179 80 -261 150 -33 28 -75 59 -93 68 -31 16 -35 16 -67 -1 -40 -22 -60 -63
+-51 -109 9 -49 80 -190 141 -282 29 -44 97 -132 150 -195 53 -63 123 -147 156
+-187 l60 -72 -40 -20 c-72 -37 -104 -36 -286 8 -94 22 -307 63 -475 91 -168
+27 -394 68 -504 90 -288 58 -531 100 -1066 185 -695 110 -993 165 -1355 251
+-162 39 -205 40 -253 6 l-28 -21 -493 185 c-272 102 -496 182 -500 178 -11
+-11 97 -102 166 -140 105 -59 531 -236 993 -414 680 -261 1396 -498 2105 -695
+554 -154 1403 -355 1503 -355 104 0 150 -42 122 -111 -27 -65 -169 -104 -410
+-114 -488 -19 -1114 97 -1990 370 -366 115 -1178 393 -1218 419 -22 13 -58 29
+-80 36 -42 11 -92 5 -92 -11 0 -12 84 -59 134 -74 24 -7 79 -33 122 -58 421
+-238 1013 -477 1619 -652 498 -144 1352 -337 1965 -444 150 -26 1044 -171
+1056 -171 2 0 4 -7 4 -15 0 -26 53 -74 105 -94 163 -62 375 -155 422 -183 29
+-18 70 -49 90 -70 l37 -38 -31 0 c-17 0 -44 6 -60 14 -20 11 -145 22 -447 41
+-230 14 -419 25 -421 23 -1 -2 -5 -13 -9 -24 -6 -20 -1 -23 56 -36 602 -136
+1408 -324 1408 -329 0 -12 -58 -31 -92 -31 -18 0 -80 8 -137 17 -189 32 -381
+8 -561 -68 -72 -31 -79 -32 -160 -25 -47 4 -404 57 -794 118 -1439 225 -1626
+249 -2466 319 -679 57 -687 57 -718 34 -15 -11 -28 -27 -30 -35 -6 -29 253
+-128 333 -128 13 0 28 -6 34 -14 6 -8 31 -17 55 -20 38 -6 44 -10 50 -37 9
+-47 44 -72 146 -108 199 -69 337 -148 445 -254 89 -87 98 -141 31 -192 -81
+-62 -509 -215 -1061 -380 -176 -52 -378 -118 -450 -146 -169 -66 -273 -93
+-339 -86 -44 5 -68 -1 -171 -40 -275 -104 -834 -281 -1145 -363 -184 -48 -208
+-58 -233 -95 -20 -32 -23 -33 -112 -39 -727 -56 -1440 -59 -2045 -11 -510 41
+-1079 132 -1514 241 -191 48 -298 83 -536 176 -169 66 -209 85 -230 111 -49
+63 -123 137 -176 178 -53 41 -224 133 -231 125 -11 -11 46 -96 96 -146 58 -59
+146 -113 249 -155 43 -18 75 -41 114 -81 29 -31 93 -88 142 -126 98 -76 321
+-216 376 -236 336 -123 583 -181 925 -217 231 -24 745 -38 1190 -31 899 14
+1535 56 2435 161 331 39 1117 120 1255 130 50 3 110 13 135 20 25 8 162 30
+305 50 143 20 355 49 470 65 116 16 320 41 455 55 135 14 405 50 600 80 426
+66 573 84 746 92 l130 6 80 -42 c250 -131 504 -389 630 -638 80 -160 41 -273
+-114 -327 -66 -24 -180 -35 -523 -51 -361 -18 -352 -17 -1134 -95 -324 -33
+-705 -68 -845 -80 -868 -70 -1174 -130 -1670 -325 -195 -77 -342 -125 -685
+-223 -324 -93 -764 -212 -784 -212 -10 0 -44 9 -77 20 -53 19 -223 47 -1249
+210 -334 53 -386 63 -570 115 -169 48 -548 171 -584 189 -59 31 -101 16 -101
+-36 0 -33 2 -33 -139 -12 -275 40 -478 117 -649 246 -36 28 -124 77 -195 109
+-361 166 -641 320 -867 478 -267 187 -384 240 -594 267 -124 16 -189 42 -289
+116 l-58 43 30 7 c16 5 45 26 64 48 l34 40 646 -294 c356 -161 659 -304 673
+-317 24 -22 33 -24 121 -23 95 2 97 1 121 -27 19 -23 27 -27 38 -18 22 18 17
+26 -20 39 -23 7 -49 30 -78 67 -49 64 -137 141 -728 633 -234 195 -567 476
+-740 625 -402 346 -730 619 -1362 1133 -278 227 -530 439 -560 470 -66 72
+-122 177 -144 268 -42 179 29 596 151 877 6 13 2 17 -17 17 -39 0 -136 -54
+-218 -120 -41 -34 -100 -82 -131 -106 -91 -73 -100 -116 -43 -210 118 -194
+140 -281 112 -445 -22 -134 21 -260 127 -369 23 -25 46 -59 50 -77 3 -17 12
+-34 19 -36 7 -3 16 -19 19 -36 4 -17 16 -39 27 -48 11 -10 20 -26 20 -37 0
+-11 20 -41 44 -66 24 -25 87 -114 141 -198 83 -131 105 -158 152 -188 29 -20
+67 -56 84 -80 36 -52 74 -151 83 -216 7 -49 38 -98 62 -98 10 0 14 -13 14 -46
+0 -42 -1 -45 -22 -38 -42 13 -73 32 -131 83 -60 53 -106 81 -130 81 -16 0 -49
+-70 -68 -143 -18 -72 -6 -216 25 -312 14 -45 30 -126 35 -186 11 -120 22 -176
+53 -269 65 -201 194 -364 376 -476 160 -98 248 -190 277 -287 12 -41 14 -84 9
+-216 -7 -191 1 -218 72 -255 36 -19 54 -21 229 -19 217 3 323 17 485 62 127
+36 154 34 186 -14 16 -24 15 -27 -12 -66 -63 -89 -76 -120 -82 -184 -11 -141
+91 -292 206 -303 56 -5 99 11 187 68 34 22 75 42 91 46 46 9 86 -31 144 -145
+107 -207 224 -284 386 -251 76 15 219 83 319 150 83 56 165 96 205 102 24 3
+25 0 28 -50 2 -29 -6 -95 -17 -147 -23 -103 -27 -237 -10 -298 6 -21 26 -56
+46 -78 121 -133 421 -74 932 183 285 143 310 150 354 99 18 -21 33 -65 52
+-148 35 -153 75 -260 131 -359 73 -127 117 -164 200 -164 66 0 125 31 152 79
+27 48 38 135 51 391 6 102 16 205 23 230 13 43 15 45 48 42 53 -6 146 -37 276
+-93 71 -31 157 -59 214 -70 152 -31 211 -71 238 -159 6 -19 16 -136 22 -259
+16 -323 36 -422 101 -496 47 -53 114 -69 259 -62 63 4 134 10 158 13 l44 7
+-21 -39 c-35 -66 -28 -124 53 -446 95 -373 162 -611 287 -1023 56 -181 144
+-476 196 -655 130 -448 230 -739 284 -826 14 -23 19 -50 19 -103 0 -73 9 -93
+55 -119 15 -8 27 -78 75 -423 32 -228 72 -531 89 -674 22 -184 41 -299 66
+-392 49 -188 60 -282 45 -370 -11 -66 -16 -76 -56 -112 -34 -32 -51 -41 -79
+-41 -80 0 -133 53 -342 340 -78 107 -97 142 -137 247 -51 138 -61 199 -136
+823 -93 771 -115 903 -271 1580 -197 854 -306 1230 -472 1631 -35 85 -67 166
+-71 181 -14 58 -57 74 -101 35 -21 -18 -31 -48 -60 -172 -85 -364 -86 -417
+-14 -706 113 -458 170 -750 214 -1108 37 -295 52 -359 180 -776 95 -307 129
+-449 160 -661 51 -347 155 -673 322 -1012 65 -132 70 -168 30 -227 -15 -22
+-32 -58 -38 -80 -15 -53 -60 -108 -132 -161 -99 -73 -169 -69 -255 14 -112
+109 -214 298 -302 559 -48 141 -60 188 -60 239 0 121 -498 2064 -730 2849
+-179 606 -275 899 -340 1043 -46 102 -98 199 -110 207 -11 7 -55 -50 -75 -98
+-8 -20 -15 -54 -15 -75 0 -80 87 -558 171 -937 98 -442 336 -1383 459 -1815
+149 -525 190 -716 183 -860 -4 -71 1 -127 17 -220 24 -134 28 -265 11 -370
+-13 -80 -49 -120 -108 -120 -33 0 -46 9 -118 82 -45 46 -96 101 -113 123 l-32
+40 0 -30 c0 -36 30 -151 58 -222 72 -188 228 -370 382 -448 25 -12 101 -35
+170 -50 188 -40 438 -113 930 -270 58 -18 146 -45 196 -59 51 -14 163 -53 250
+-87 396 -153 413 -156 829 -163 464 -7 641 -28 1545 -180 750 -126 927 -145
+1425 -153 566 -9 988 24 1733 137 1120 171 1302 188 1982 194 431 4 527 11
+780 56 400 73 727 191 1739 629 178 77 341 152 363 167 81 57 138 165 138 264
+0 107 -52 187 -179 272 -153 104 -250 221 -309 376 -28 73 -40 120 -78 322
+-31 166 -124 309 -238 365 -28 13 -95 33 -149 44 -104 21 -195 58 -274 112
+-89 61 -367 272 -533 404 -270 216 -360 272 -520 326 -115 38 -270 49 -385 27
+l-71 -14 94 225 c51 124 210 512 352 861 602 1481 843 2031 1216 2780 168 336
+222 434 316 576 127 190 211 331 413 699 76 138 156 277 180 310 59 84 83 135
+99 208 10 50 33 97 104 214 59 96 101 154 117 161 29 14 41 52 25 82 -9 17 -9
+25 4 39 18 20 20 44 6 70 -5 10 -71 90 -146 177 -157 184 -178 221 -178 314 1
+81 25 146 101 265 31 50 85 146 120 213 56 110 63 130 63 182 0 63 -19 94 -76
+123 -16 8 -179 58 -363 112 -184 53 -351 105 -371 115 -59 30 -88 71 -95 137
+-14 121 -49 206 -145 348 -26 39 -59 92 -75 119 -19 34 -38 53 -64 64 l-36 16
+0 90 c0 133 -23 174 -195 351 -149 154 -160 173 -160 283 0 81 31 236 85 429
+25 87 45 179 45 206 0 45 -1 47 -28 47 -39 0 -52 32 -52 125 0 57 -5 82 -20
+107 -16 26 -20 51 -20 116 0 56 -4 82 -12 82 -6 0 -22 10 -35 22 -42 40 -48
+17 -49 -195 -1 -187 -10 -254 -37 -287 -14 -19 -58 -50 -69 -50 -16 0 -8 97
+16 195 46 192 49 212 36 282 -20 117 -97 256 -159 287 -14 7 -55 16 -90 20
+-146 16 -183 56 -189 203 l-4 93 53 -16 c30 -9 78 -30 107 -47 62 -37 230
+-169 253 -199 10 -13 23 -19 33 -15 22 9 20 27 -4 27 -13 0 -22 10 -29 36 -17
+60 -51 101 -151 178 -52 41 -104 84 -115 96 -11 12 -38 31 -60 42 -22 11 -69
+46 -104 77 -304 269 -576 385 -1206 514 l-109 22 -53 70 c-242 318 -456 448
+-773 470 -174 12 -287 50 -550 186 -178 92 -195 106 -186 144 9 36 28 40 110
+26 39 -7 162 -16 273 -21 319 -15 398 -38 583 -175 125 -91 217 -147 309 -185
+71 -29 200 -65 207 -57 3 3 -157 166 -354 363 -453 454 -602 628 -783 921
+-115 186 -209 272 -384 354 -80 38 -247 87 -355 104 l-45 7 65 -59 c64 -59
+153 -137 344 -303 155 -134 303 -310 424 -505 52 -84 150 -280 167 -334 7 -23
+5 -23 -33 10 -22 19 -147 126 -278 239 -471 406 -873 722 -1449 1140 l-210
+153 63 -7 c93 -10 211 -47 437 -136 191 -75 334 -124 341 -117 10 9 -51 78
+-93 105 -78 50 -263 134 -468 211 -263 100 -432 186 -699 356 -289 184 -394
+246 -509 300 -102 47 -245 97 -331 115 -71 15 -110 47 -134 113 l-20 51 -21
+-34z m105 -1815 c193 -33 371 -97 549 -196 134 -74 155 -92 155 -135 0 -50
+-14 -55 -126 -44 -134 13 -312 12 -376 -1 -29 -6 -81 -24 -115 -39 -84 -38
+-118 -44 -169 -30 -63 18 -117 70 -158 150 -46 93 -55 149 -29 191 22 34 139
+119 164 119 9 0 56 -7 105 -15z m5990 -3540 c-15 -23 -52 -42 -62 -32 -3 3 -2
+17 2 32 8 33 67 64 72 39 2 -8 -3 -26 -12 -39z m-15398 -3420 c35 -29 46 -67
+36 -119 l-6 -36 -50 42 c-57 47 -72 77 -58 113 12 32 40 32 78 0z m109 -180
+c2 -6 -3 -20 -12 -30 -14 -20 -15 -20 -35 5 -11 14 -20 29 -20 33 0 12 63 4
+67 -8z m263 -103 c0 -2 -13 -15 -30 -29 -21 -17 -30 -34 -30 -54 0 -34 19 -46
+126 -77 80 -24 92 -35 101 -86 l6 -36 -64 0 c-51 0 -67 -4 -86 -22 -13 -12
+-23 -27 -23 -35 0 -20 -60 -16 -97 7 -33 20 -76 77 -88 118 -7 24 4 29 23 10
+10 -10 15 -10 22 2 18 28 10 56 -29 113 -42 59 -41 66 10 86 21 9 159 11 159
+3z m90 -451 c3 -2 -8 -1 -25 3 -32 8 -55 30 -55 55 0 10 13 3 37 -20 21 -18
+40 -36 43 -38z m3374 -1488 c57 -40 57 -53 2 -53 -53 0 -110 21 -143 52 -31
+29 -13 41 52 34 32 -4 64 -16 89 -33z m158 -77 c22 -16 22 -16 -14 -16 -22 0
+-45 8 -59 21 l-24 20 37 -5 c21 -2 48 -12 60 -20z m263 -110 c26 -8 65 -29 86
+-45 21 -17 45 -31 54 -31 22 0 55 -18 55 -30 0 -19 -59 -11 -70 10 -8 15 -21
+20 -54 20 -47 0 -166 53 -174 78 -5 17 43 16 103 -2z m7062 -337 c24 -11 52
+-33 63 -47 12 -15 85 -111 163 -213 78 -103 190 -245 249 -317 123 -149 166
+-179 244 -168 43 5 44 5 44 -23 0 -15 -9 -70 -20 -122 -11 -52 -20 -116 -20
+-144 0 -27 -9 -72 -19 -100 -10 -27 -67 -232 -126 -455 -308 -1171 -764 -2779
+-798 -2819 -8 -9 -17 -32 -21 -51 -12 -60 -153 -157 -208 -142 -32 8 -66 64
+-118 192 -60 149 -120 421 -120 545 0 78 125 1113 196 1620 40 292 42 402 6
+510 -73 220 -88 245 -137 245 -36 0 -74 -36 -80 -78 -4 -20 -19 -93 -35 -162
+-61 -260 -95 -447 -306 -1700 -19 -113 -72 -470 -119 -795 -124 -857 -172
+-1143 -256 -1519 l-39 -178 -58 -77 c-90 -117 -150 -142 -242 -101 -67 30
+-225 141 -236 164 -5 12 -40 37 -77 56 -38 20 -76 44 -84 55 -20 27 -14 96 36
+430 53 353 86 619 171 1375 93 826 102 947 132 1750 19 508 17 820 -5 897 -24
+86 -159 363 -191 392 -17 16 -41 25 -74 29 -44 4 -53 1 -84 -26 -36 -32 -52
+-72 -63 -157 -4 -27 -9 -59 -12 -69 -5 -18 -6 -18 -19 5 -9 16 -13 62 -14 139
+-1 215 -23 412 -63 549 l-21 74 29 55 c41 78 117 157 170 178 128 48 307 -47
+560 -299 66 -66 147 -140 180 -165 159 -118 438 -216 657 -229 91 -6 100 -4
+152 21 42 21 62 39 81 71 37 62 44 94 55 240 12 154 28 223 80 330 33 68 50
+90 120 150 124 108 188 127 277 84z m-4723 -610 c20 -17 52 -58 72 -92 195
+-325 376 -468 618 -486 120 -9 120 -8 127 -279 3 -119 9 -226 14 -237 25 -61
+101 -124 152 -126 10 0 -3 -7 -29 -15 -92 -28 -107 -91 -68 -282 10 -54 24
+-173 30 -267 21 -327 235 -2034 340 -2705 26 -166 31 -187 54 -206 13 -12 30
+-24 36 -26 7 -2 20 -61 31 -143 48 -351 71 -455 126 -557 25 -46 25 -48 8 -75
+-73 -114 -169 -181 -241 -170 -96 16 -213 109 -320 252 -75 103 -145 165 -185
+165 -22 0 -12 -66 -99 695 -97 852 -125 1105 -159 1460 -47 472 -60 577 -92
+745 -69 353 -209 750 -386 1093 -46 89 -104 152 -151 164 l-24 6 3 496 c3 453
+2 499 -14 535 -9 21 -17 40 -17 42 0 3 15 13 33 24 49 30 99 26 141 -11z
+m1526 -69 c129 -219 248 -287 431 -247 l66 14 7 -406 c14 -880 49 -1612 112
+-2361 33 -406 46 -520 55 -520 4 0 22 30 40 66 30 61 33 77 40 198 4 72 25
+514 48 981 23 468 46 860 51 872 5 12 18 27 29 33 19 10 20 8 16 -17 -3 -16
+-12 -197 -20 -403 -25 -627 -47 -976 -75 -1205 -6 -44 -15 -210 -20 -370 -5
+-159 -17 -414 -26 -565 -9 -151 -17 -459 -18 -685 -3 -383 -4 -415 -24 -480
+-18 -62 -28 -77 -84 -130 -35 -33 -87 -72 -115 -88 -71 -38 -189 -67 -305 -74
+l-98 -6 0 99 c0 54 9 430 20 834 34 1295 42 1820 38 2510 -4 642 -6 679 -25
+760 -40 160 -102 299 -186 410 -48 63 -44 22 -38 420 3 172 1 204 -18 273 -19
+72 -19 82 -6 115 17 39 33 62 45 62 4 0 31 -40 60 -90z m-1540 -2529 c50 -398
+89 -726 87 -728 -12 -11 -41 15 -61 56 -21 41 -22 49 -10 76 19 44 17 158 -6
+252 -11 45 -27 144 -35 220 -9 76 -31 242 -50 368 -58 395 -60 415 -40 460 10
+22 19 36 21 30 2 -5 44 -336 94 -734z"/>
+ <path d="M7997 17171 c-21 -10 -55 -34 -75 -53 -20 -19 -71 -62 -113 -96 -42
+-33 -98 -85 -126 -115 l-50 -55 -7 -94 c-12 -177 22 -403 79 -524 33 -68 111
+-160 157 -185 27 -15 27 -15 -56 183 -37 86 -74 191 -83 232 -15 70 -15 78 1
+121 30 78 84 91 228 54 105 -27 147 -18 173 38 16 33 18 64 16 228 -2 196 -6
+251 -24 273 -14 17 -75 14 -120 -7z"/>
+ <path d="M6910 17111 c-207 -255 -261 -331 -432 -617 -160 -266 -161 -270
+-124 -544 8 -63 20 -218 26 -345 11 -253 21 -340 51 -448 11 -40 24 -94 30
+-122 14 -64 41 -109 85 -135 27 -17 34 -28 34 -53 0 -34 31 -110 48 -121 16
+-10 35 32 28 60 -4 13 -19 38 -35 56 -23 27 -37 68 -74 213 -55 216 -72 331
+-63 445 11 161 78 331 170 435 50 56 46 59 71 -60 27 -126 73 -262 123 -360
+37 -73 64 -108 139 -183 51 -52 96 -105 99 -118 8 -33 57 -80 91 -89 15 -3 38
+-16 51 -27 12 -12 22 -17 22 -11 0 5 -9 18 -20 28 -11 10 -20 27 -20 37 0 28
+-27 76 -49 88 -11 5 -31 10 -45 10 -23 0 -26 4 -26 38 0 28 -11 56 -40 101
+-52 80 -163 301 -201 400 -58 151 -83 274 -82 406 1 69 8 143 16 175 45 172
+85 286 131 375 50 97 51 102 51 185 0 83 -20 200 -33 200 -4 -1 -14 -9 -22
+-19z"/>
+ <path d="M4200 15495 c-19 -19 -42 -35 -53 -35 -10 0 -39 -21 -65 -47 -26 -25
+-35 -37 -21 -25 14 12 32 22 40 22 23 1 53 22 98 73 50 55 51 64 1 12z"/>
+ <path d="M3930 13725 c-7 -8 -21 -15 -33 -15 -28 0 -81 -35 -111 -74 -14 -19
+-41 -44 -60 -56 -19 -11 -107 -98 -195 -191 -137 -145 -166 -182 -201 -252
+-30 -62 -42 -99 -46 -152 l-6 -70 46 -43 c27 -25 55 -42 69 -42 31 0 88 39
+104 70 7 14 32 66 55 115 24 50 87 158 140 240 133 210 219 364 225 405 3 19
+15 45 26 58 11 12 16 22 10 22 -6 0 -16 -7 -23 -15z"/>
+ <path d="M2674 13567 c-25 -14 -132 -145 -192 -234 -98 -145 -190 -374 -227
+-563 -49 -255 11 -719 131 -1009 111 -269 296 -490 779 -933 371 -340 858
+-778 862 -774 3 2 -1 23 -7 46 -9 34 -49 81 -222 263 -522 549 -1019 1133
+-1175 1382 -53 84 -112 216 -134 300 -39 150 -22 409 44 685 l13 55 18 -80
+c42 -186 147 -439 255 -618 27 -45 52 -100 56 -122 11 -57 22 -75 56 -87 24
+-8 29 -15 29 -43 0 -32 21 -65 40 -65 5 0 17 11 25 24 21 31 6 63 -35 77 -25
+9 -28 16 -32 64 -3 40 -14 70 -41 113 -59 96 -133 376 -156 594 -21 192 -8
+400 38 583 44 177 46 199 27 249 -28 73 -106 121 -152 93z"/>
+ <path d="M5265 6405 c56 -741 1232 -4262 1540 -4612 13 -16 25 -22 25 -15 0 7
+-22 86 -50 175 -71 234 -180 621 -335 1197 -335 1241 -499 1768 -740 2380
+-128 325 -382 878 -430 935 -15 19 -16 16 -10 -60z"/>
+ <path d="M5345 4220 c6 -31 41 -162 187 -685 50 -181 91 -381 118 -575 39
+-283 116 -539 255 -840 34 -74 67 -149 74 -167 20 -51 54 -76 90 -68 38 8 71
+48 71 85 0 40 -34 201 -81 380 -76 292 -174 561 -424 1160 -70 168 -165 404
+-212 525 -46 121 -81 204 -78 185z"/>
+ <path d="M5125 3042 c1 -265 3 -275 126 -456 107 -160 195 -265 253 -306 41
+-28 66 -37 66 -25 0 3 -23 50 -50 105 -28 56 -103 232 -166 393 -100 251 -200
+475 -222 499 -4 4 -7 -91 -7 -210z"/>
+ </g>
+</svg>
diff --git a/main/app/sprinkles/core/assets/userfrosting/images/logo.svg b/main/app/sprinkles/core/assets/userfrosting/images/logo.svg index 148efe6..b11b0b5 100644 --- a/main/app/sprinkles/core/assets/userfrosting/images/logo.svg +++ b/main/app/sprinkles/core/assets/userfrosting/images/logo.svg @@ -1,514 +1,514 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" - width="612px" height="537px" viewBox="0 0 612 537" style="enable-background:new 0 0 612 537;" xml:space="preserve"> -<path style="fill:#FFFFFF;" d="M71.3,277.7c-1.9,3.4-2.2,7.6-1.4,12.6c9.1,23.9,33.6,61.6,48.5,100.3c14.8,38.2,18.8,57.5,32.1,75.8 - s59.7,30.3,59.7,30.3l59.2,11.9V309C269.5,309,77.4,266.9,71.3,277.7z"/> -<polygon style="fill:#FFFFFF;" points="310.5,35.1 305.1,40.5 299.3,44.3 242.7,84 278.2,108.5 328.5,109.7 310,72.4 310,54 "/> -<path style="fill:#FFFFFF;" d="M133,147L133,147c-0.4,0.4-0.7,0.7-1,1l0,0c-0.8,0-1.5,0.2-2,1l0,0c-0.3,0.3-0.7,0.6-1,1 - c-2.6,0.3-3.9,2.4-5.4,4.1c-6,6.8-12.2,13.3-19.2,19.2c-10.4,8.8-19,19.4-27.5,29.8c-3.6,4.3-7.4,8.7-9.8,13.9c-4,0.6-6.4,3.9-9.5,6 - c-1.8,1.3-1.6,2.9-0.4,4.7c2,2.9,3.4,6.3,2.7,9.8c-0.8,3.8,0.3,6.7,2.8,9.4c0.4,0.3,0.9,0.7,1.3,1l0,0c0,0.9,0,1.7,1,2l0,0 - c0,0.9,0.1,1.7,1,2l0,0c0,0.9,0.2,1.6,1,2l0,0c0.3,0.4,0.7,0.8,1,1.1c1.7,2.6,3.4,5.2,5,7.8c0,2.7,0,5.4,0,8.1 - c-2.4,3.8-2,7.8-0.5,11.8c0.5,1.4,0.4,2.9,0.6,4.4c0.8,7.4,4.2,13.4,10.4,17.1c4.8,2.9,7.8,5.8,6.6,11.6c-0.2,0.8,0,1.7,0,2.5 - c-0.2,3.2,1.3,4.5,4.5,4.5c4.8,0,9.6,0,14.3-1.6c1.5-0.5,3.5-1.3,4.6,0.2c0.9,1.2-0.9,2.3-1.4,3.4c-1.8,3.3-0.7,6.3,1.5,8.7 - c2.3,2.5,5.1,1.2,7.2-0.4c2.9-2.2,4.1-0.6,5.2,1.8c3.5,7.4,7.5,8.6,14.6,4.7c2.6-1.4,4.9-3.7,8.1-4.2c0.6,2,0,3.5-0.4,5.2 - c-1.9,8.8,1.3,11.9,10.1,9.7c1.1-0.3,2.2-0.7,3.3-1.1c5.1-1.6,9.7-4.4,14.5-6.7c2.8-1.4,4.3-0.9,4.9,2.3c0.6,3.3,1.5,6.5,3.1,9.4 - c1.3,2.4,2.6,4.9,5.9,4.3c3.5-0.7,3.3-3.9,3.6-6.3c0.4-3.8-0.3-7.8,1.2-11.5c4.7,0.2,8.4,3.5,13,4.1c3.4,0.4,5.6,2,5.8,5.6 - c0.1,1.8,0.1,3.6,0.2,5.5c0.6,12.3,2.1,13.6,14,11.6c-1.9,1.6-1.9,3.3-1.3,5.7c2.8,12.1,6.3,24,10,35.8c3.1,9.8,5.3,19.8,9.3,29.3 - l0,0c0.3,0.7,0.7,1.3,1,2l0,0c0.3,1.7-0.8,3.9,1.9,4.5c1.3,10,2.9,20,3.9,30c0.5,5.4,3.5,10.5,2,16.1c-2.2,3.3-4.6,2.7-6.7,0.2 - c-2.5-3-4.7-6.2-7-9.4c-0.5-2.2-1.8-4.1-2.2-6.5c-2.3-15.6-3.3-31.4-6.9-46.8c-4-16.8-7.2-33.7-14.4-49.6c-0.4-0.8-0.1-2.2-1.4-2.3 - c-1.1-0.1-1.7,1-1.9,2c-1,5.3-3.2,10.5-1.7,16.2c2.6,10.3,5.1,20.6,6.1,31.2c1.1,11.3,6.7,21.6,8,32.8c1,8.4,3.8,16.1,7.3,23.7 - c0.8,1.8,2.2,3.4,1.8,5.5c-0.7,1.2-1.7,2.2-1.7,3.7c-5.1,6-7.8,5.8-12.2-0.9c-2.8-4.3-4.3-9.2-5.8-14c0.2-1.7,0-3.3-0.4-4.9 - c-6.3-25.2-12.4-50.5-20.2-75.4c-2.1-6.7-3.9-13.5-7.7-19.8c-2,1.9-2.3,3.6-1.9,5.8c2.8,18.5,7.7,36.6,12.3,54.7 - c2.4,9.6,5.8,19,7.3,28.9c-1,4.5,1.4,8.7,0.8,13.2c-0.3,2,0.1,4.4-1.8,5.3c-2.2,1-3.4-1.3-4.8-2.6c-0.9-0.9-1.7-1.9-2.6-3 - c0.8,7.9,6.9,16.3,13.4,17.4c7.5,1.3,14.5,4.1,21.8,6.1c1.9,0.6,3.7,1.3,5.7,1.8c7.5,1.9,14.6,6.5,22.2,6.2 - c19-0.7,37.2,4.1,55.7,6.6c17.9,2.4,35.5,1.8,53.1-0.6c18.7-2.5,37.2-6.5,56.3-5.9c10,0.3,20.3-1.1,29.9-4.2 - c12.6-4.2,24.7-9.9,37-15.1c6.3-2.6,7.4-10,1.5-13.6c-6.2-3.8-8.5-9-9.5-15.8c-0.7-5.3-3.3-10.3-9.2-10.9c-3.7-0.4-6.1-2.1-8.7-4 - c-3.5-2.5-6.9-5.1-10.3-7.8c-6.9-5.6-13.7-11.5-24.3-8.6c14.7-35.1,27.7-70.6,45.5-103.9c5.9-8,10.3-16.8,15.1-25.4 - c1.4-2.5,3.8-4.6,3.6-7.8c1.6-2.5,3.1-5.1,4.7-7.6c1.6-0.6,1.8-1.6,0.8-2.9c1.5-0.9,0.8-1.8,0-2.7c-2.1-2.4-4.1-4.9-6.2-7.3 - c-2-3.6-0.7-6.7,1.3-9.7c1.5-2.4,2.9-4.8,4.1-7.4c1.6-3.3,0.4-5-2.8-5.9c-4.5-1.3-8.9-2.6-13.4-3.9c-2.3-0.7-4.9-1.5-5-4.1 - c-0.2-4.2-2.5-7.1-4.7-10.2c-0.6-1.5-1.5-2.8-3.2-3c1.6-6.3-3.2-9.2-6.7-12.8c-2.4-2.5-1.7-5.6-1.2-8.5c0.6-3.6,1.8-7,2.8-10.6 - c1-1.7,2.4-3.3,0.2-6.4c-0.2,2.3-0.3,3.4-0.3,4.5c-0.3,0-0.7,0-1,0c0-1.4,0.5-2.9-0.8-4.1c0-0.4-0.1-0.7-0.1-1.1 - c-0.2-1.7,0.6-3.5-0.8-5l-0.1-0.2c-0.2-2.9,0.4-6.2-3-7.9c-0.4,0-0.7,0-1.1,0l0,0c-0.5-4.2-5-5.1-7-8c-0.5-7.2-6.1-10.4-11.3-13.7 - c-8-5.1-17.8-6.7-25.5-12.4c-1.3-1.4-2.6-2.9-4.1-4.3c-8.6-8.4-17.6-16.7-23.7-27.2c-4.3-7.4-11-9.3-18.5-10.6c-1-0.6-2-1.3-3-1.9 - c-1.1-2.3-3.3-3.2-5.4-4.2c-5.5-2.7-11.4-4.3-16.9-7.1c-9.6-5-17.8-12.8-28.9-14.9c-1.7-0.3-2.6-1.9-2.8-3.8 - c-1.3-4.3-1.7-8.7-0.1-13.1c0.5-9.6,0.5-19.2,6.8-27.3c0.4-0.5,0.6-1.2,0.9-1.8c0.4-0.8,0.6-1.7-0.2-2.2s-1.6,0.1-2,0.9 - c-1.2,2.1-3.1,3.9-3.5,6.5c-0.3,0.3-0.6,0.7-0.9,1l0,0c-1.4,0-1.9,1.1-2.5,2.1c-3,4.9-3.4,10.4-3.3,15.8c0.2,7.9-1.5,15.3-4.2,22.7 - c-0.7,2-2,2.3-3.8,2.5c-5.2,0.7-10.5,1.2-15.6,2.3c-6.2,1.3-8.3,5.6-5.9,11.5c0.7,1.9,1.1,4.7,3.7,4.8c2.6,0.2,4.6-2.2,5.1-4.1 - c1.9-7,6.6-8.3,12.9-7.6c1.5,0.2,3,0,4.5,0c9.8,0.2,14.9,5.5,15.3,15.4c0.1,3.4-0.8,4.8-4.4,4.6c-7-0.3-14-0.1-21,0 - c-1.6,0-3.4-0.5-4.7,1c-0.7,0-1.3,0-2,0c-11.4-0.9-19.9-9.3-30.7-12c-1.1-0.3-1.7-1.9-0.8-2.3c3.9-1.6,1.7-4.3,1.5-6.7 - c-0.1-1.6-0.3-3,1.7-4.2c6.7-4.2,13.7-7.8,19.5-13.7c5.9-5.8,13.5-9.9,19.2-16.2c1.1-1.2,3.2-2.1,1.8-4.6 - c-11.6,9.3-23.5,18-37.4,23.5c-4.1,0.7-7.9,2.2-11.1,5.1c-3,0-5.7,1.3-7.8,2.9c-8.4,6.4-17.6,10.9-27.4,14.5 - c-4.9,1.8-9.9,3.5-14.5,5.8c-7.8,3.9-12.8,10.9-18.2,17.3c-4.3,5.1-8.9,10.4-14.7,13.2c-7.5,3.5-15,7-22.4,10.7 - c-4.3,2.2-9.1,4-11.8,8.6C133.6,146.2,133.3,146.6,133,147z"/> -<path style="fill:#FFFFFF;" d="M156,405c-0.1-0.4-0.3-0.9-0.4-1.3c-0.1,0.1-0.4,0.2-0.4,0.3C155.5,404.3,155.7,404.7,156,405 - c0.1,0.8,0.2,1.5,0.4,2.2c0.1-0.1,0.3-0.1,0.4-0.3C157.1,406.1,156.7,405.4,156,405z"/> -<path style="fill:#FFFFFF;" d="M158.3,363.3c-0.6,13.8,30.6,108,37.7,113.3C184.1,438.5,177.3,399.2,158.3,363.3z"/> -<path style="fill:#FFFFFF;" d="M160,416.7c2.4,10.3,6.3,20.3,7.5,30.7c1,8.3,3.7,15.7,7.3,23c0.7,1.4,1,3.9,3,3.2 - c2.1-0.7,1.2-3.2,0.9-4.9C175.2,450.5,166,434.2,160,416.7z"/> -<path style="fill:#FFFFFF;" d="M154.9,440.7c1.1,4.6-1.3,9.5,1.6,13.9c4.7,7.2,6.8,9.6,9.3,10.6 - C161.3,457.3,159.4,448.5,154.9,440.7z"/> -<path style="fill:#FFFFFF;" d="M153.4,398.4c0.1-0.3,0.1-0.5,0.2-0.7c-0.1,0-0.2,0.1-0.4,0.1C153.3,398,153.3,398.1,153.4,398.4z"/> -<path style="fill:#FFFFFF;" d="M154.4,401.3c0.4,0,0.5-0.2,0.2-0.5c0,0-0.2,0.1-0.4,0.1C154.3,401,154.3,401.1,154.4,401.3z"/> -<path style="fill:#FFFFFF;" d="M157.8,409.9c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1,0.1-0.2,0.2-0.3,0.3c0.1,0.1,0.3,0.3,0.4,0.4 - C157.7,410.2,157.7,410,157.8,409.9z"/> -<path style="fill:#F7E3E5;" d="M261.9,67.9c13.9-5.5,25.8-14.2,37.4-23.5c1.4,2.5-0.7,3.4-1.8,4.6c-5.7,6.3-13.4,10.4-19.2,16.2 - c-5.9,5.9-12.8,9.5-19.5,13.7c-2,1.2-1.8,2.6-1.7,4.2c0.2,2.4,2.4,5.1-1.5,6.7c-0.9,0.4-0.3,2,0.8,2.3c10.8,2.7,19.3,11.1,30.7,12 - c-0.3,2.4,1.2,2.7,3.1,3.3c1.7,0.6,4.5-0.3,5,2.7c-0.5,2.7,1.4,3.9,3.1,5.2c2.2,1.7,4.5,3.3,6.8,4.9c-0.1,2.6-1.6,2.1-3.5,1.9 - c-1.9-0.2-3.9-2.1-6.7,0.2c7.9,2.4,15.2,4.6,22.5,6.7c17.3,5,35,8.2,52.5,12.1c6,1.4,7.6,3.4,8.1,9.8c-15.4-0.4-30.7-2.2-46.1-0.1 - c-0.4-0.5-0.7-0.3-0.9,0.2c-0.1,2,1.6,2.4,2.9,2.8c10.9,3.4,21.9,6.1,33.1,8.2c0.5,0.8,1.2,0.9,2.1,0.8h0.1 - c-5.6,1.7-11.7,1.1-17.1,3.7c1.1,0.5,1.3,0.7,0.9,1.5c-1.6-0.2-3.3-0.2-4.9-0.5c-13-2.7-25.8-5.7-38.9-7.7c-3-0.5-7.4-2.4-8.3,0.4 - c-0.7,2.2,4.5,2.9,7.3,3.6c16.1,4.2,32.6,5.5,48.9,8.3c1.4,5.3,7.2,3,10,5.8c-13.3,0.4-26.6,0.8-39.8,1.2c0.3-0.9,2.1-2-0.8-2.3 - c-5.2-0.5-10.5-1.3-15.6-2.6c-20-4.9-39.4-11.4-58.1-20.1c-11.5-5.3-23.2-10.4-31.7-20.3c-1.2-3-2.7-6-3.6-9.1 - c-1.4-4.7,0.7-6.9,5.2-5.4c3.9,1.3,4.7-0.3,4.8-3.5c1.5,0,3,0.1,4.3,0.9c6.5,4,13,7.9,19.5,11.8c7.4,4.3,14.6,8.8,23.2,10.7 - c15.3,3.3,30.6,7.2,45.9,10.4c2.6,0.5,5.5,2.5,9.1-0.1c-8.9-3.7-17.6-6-25.9-9.5c-10.5-4.4-20.4-8.9-27.1-18.9 - c-2.3-3.4-5.8-6.2-10.5-7.8c-8.8-2.9-17.6-5.9-25.5-10.9c-5.2-3.3-9.9-3-14.9,0.7c-1.4,1-2.5,2.2-2.4,4.1c-2.4,2.8-6.1,4.4-8,7.8 - c-3-2.6-5.5-0.1-8.3,0.6c-4.4,1.3-7.1,5.2-11.2,7c0.3-1.6,0.6-3.2,1.5-4.7c2.4-4.1,2.4-4.9,1.2-10.1c-5,5.4-8.7,11.7-12.4,17.9 - c-1.3,2.1-2.3,4.6-1.8,7.1c1.7,7.9,0.2,16.2,2.8,24c-1,0.6-1.4,1.9-2.8,1.9c-4.2,0.1-3.5,1.9-1.5,4.2c1,1.1,1.7,2.4,2.8,3.5 - c9.7,9.7,22.1,15.4,33.7,22.4c1.6,0.9,3.3,1.8,5.3,1.3c-0.1-1.4-1.1-1.6-1.8-1.9c-8.7-4-16.3-9.5-23.5-15.8 - c-1.2-1.1-2.2-2.6-4.1-2.6c-2.8-0.1-3.5-2.2-4.1-4.3c1.2-1.7-0.3-2.6-1.2-3.7l0.1,0.1c-0.9-3.7-2.1-7.3-2.5-11.1 - c-0.6-5.8,0.6-11.2,5.3-16.1c1.4,7.4,3.1,13.9,9.2,18.1l0,0c0.1,1.9,1.3,2.8,3,3l0,0c0.3,0.3,0.7,0.7,1,1c3.3,1.6,5.1,4.9,8.2,6.9 - c10.2,6.5,20,13.5,30.2,19.9c5.5,3.4,11.2,6.8,18.1,7.8c-0.1-2.3-3-1.9-3-4.3c4.4-1,9.2,0.5,13.6-0.9c2.7-0.8,5.1-0.2,7.7,0.9 - c9.5,4.3,18,10.4,27.9,14c5.9,2.1,11.3,5.4,17.8,5.8c-8-7-16.3-13.5-25.8-18.3c-8.4-4.3-16.2-9.9-24.9-13.4 - c-9.1-3.7-19.1-5.3-28.5-8.4c-6.9-2.3-11.7-7.5-16.5-13c2.2-1.1,3.1,0.1,4.3,0.6c6.5,2.8,12.5,7.1,19.6,8.2 - c23.2,3.5,44.9,12.4,67.4,18.2c0,1.4,0.9,2.1,2.1,2.5c6.1,2.1,12,4.8,18.5,5.5c10.9,1.2,21.2,5.8,32.3,6.3c0.4,0,0.7,1,1.1,1.5 - c-0.8,0.2-1.4,0.6-2,1.3c-5.1,6.5-7.1,6.6-13.9,1.7c-1.3-0.9-2.7-3.3-4.5-1.6c-1.5,1.5-0.1,3.4,0.6,5c2.6,5.6,7.2,9.8,10.9,14.6 - c-2,1.9-4.6,1.4-6.6,0.9c-7.5-2.1-15.3-2.7-22.8-4.3c-20.6-4.4-41.7-6.2-62.2-11.4c-1.5-0.4-3.3-0.7-4.6,1c-8-3-16-6-24-9 - c2.5,3,5.9,4.3,9.2,5.7c33.4,14.2,67.9,25.1,103.4,32.6c1.7,0.4,5-0.4,5,2c0,2.7-3.3,2.8-5.4,3.4c-1.1,0.4-2.3,0.2-3.5,0.2 - c-10.6,0.7-20.8-1.3-31.1-3.7c-15.9-3.8-31.1-9.5-46.6-14.6c-1.4-0.9-2.7-2-4.7-1.4c1.3,1.3,2.8,1.6,4.2,2 - c24.1,13.9,50.8,19.9,77.6,25.5c11.8,2.4,23.8,4.1,35.7,6.1c0.3,2.3,2.4,2.3,3.9,3.1c4.1,2.1,9,2.8,12,6.8c-0.7,0-1.3,0-2,0 - c-0.9-1-2-0.8-3.1-0.7c-6.1-0.4-12.2-0.8-18.3-1.2c0,0.3-0.1,0.6-0.1,0.9c11.8,2.7,23.7,5.5,35.5,8.2c-1.7,1.7-3.7,1-5.5,0.7 - c-5.5-1.1-10.6-0.1-15.5,2.4c-1.6-0.2-3.3-0.2-4.9-0.5c-14.2-2.2-28.4-4.5-42.6-6.6c-15.5-2.3-31.2-3.5-46.8-4.7 - c-1.4-0.1-3-0.6-4.1,1.2c2.7,1.3,5.4,2.6,8.4,2.7c0.4,0.3,0.7,0.5,1.1,0.8c0.6,0.1,1.2,0.1,1.9,0.2c0,1.7,0.7,2.4,2.5,3 - c4.2,1.4,8.3,3.2,11.7,6.3c2.9,2.7,2.7,4.4-1,6c-10.2,4.4-20.9,7.2-31.4,10.5c-4.1,1.3-8,4-12.8,3.1c-0.1-2,0.3-4-0.5-5.9 - c-1-2.3-2.4-3.6-5-2.7c-9.7,3.3-19.3,6.9-29.1,10.2c-13.5,4.5-27.1,7.5-41.6,6.3c0.5-0.4,0.7-0.7,1-0.7c15.6-0.6,29.3-7.1,43.2-13.1 - c2.9-1.3,4.7-2.9,2.7-6.8c-7.5-15.1-14.8-30.3-25.6-43.3c-7-8.4-13.3-17.3-20.9-25.2c-2.6-2.7-4.7-5.8-7-8.7c0.3-0.3,0.6-0.5,1-0.8 - c6.6,5.2,13.3,10.3,19.9,15.5c1.4,1.1,2.8,3.1,4.7,1.6c2-1.6,3.6-0.3,5,0.4c4.9,2.5,9.5,5.3,14.4,7.9c3.7,1.9,7.5,3.6,11.2,5.3 - c-7.7-7.8-17.8-11.9-25.5-19.5c20.4,11.5,40.7,22.9,63.5,28.9c-5.4-3.1-11-5.6-16.6-8.4c-12.5-6.2-25.1-12.1-37.1-19.4 - c-17.1-10.3-34-20.7-48.8-34.1c-7.8-7.1-15.7-14.4-17.6-25.7c-0.4-2.5-2.1-4.1-4-4.6c-3.9-0.9-7.2-3.2-10.9-4.4 - c-1.8-0.6-3.3-0.5-4.6,0.7c-1.5,1.4-0.1,2.8,0.4,4.1c3.9,8.8,7.2,17.8,11.9,26.2c6.6,12,13,24.2,23,33.8c5.3,5.1,9.8,10.7,13.8,16.8 - c8,12.2,14,25.5,21.6,37.9c0.4,0.7,0.8,1.6,0,2.3c-0.8,0.7-1.6,0-2.1-0.6c-8.7-9.2-19-17-24.6-29c-4.4-9.4-9.1-18.7-15.1-27.2 - c-2.1-3-3-6.6-5.8-9.2c-1.5-1.3-2.5-1.5-3.5,0.3c-0.6,1.1,0.1,3.1-1.9,3c-1.8-0.1-1.8-2.1-2.5-3.4c-5.3-10.1-10.3-20.4-17.6-29.3 - c-0.9-1.1-1.4-2.6-2.9-2c-8.4,3-19.3,2.1-22.5,13.7c-0.3,1.2-1,2.3-2.4,1.8c-1.3-0.5-2.4-1.5-2.3-3c0.1-0.9,0.8-1.8,1.2-2.6 - c0.9-1.7,0.7-3.2-0.6-4.6c-1.4-1.5-2.7-1.2-4.5-0.6c-5.3,2-8.5,6.7-13.1,9.6c-1.3,0.8-2.8,2.2-1.8,4.2c1,1.8,2.8,1.7,4.4,1.3 - c3.7-0.8,7.4-1.8,11.1-2.6c3.4-0.8,5.6,0.1,5.1,4.2c-1.4,1.4-2.7,2.9-4.1,4.3c-3.1,3.2-6.4,6.3-6.1,11.4c-4.4-1.3-8.8-2.8-12.1-6.2 - c0.4-1.6,0.7-3.2,1.1-4.8c0.5-1.9-0.3-3.3-1.8-4.3c-1.9-1.2-2.7,0.7-3.5,1.7c-5.2,5.9-7.9,12.9-8.8,20.7c-3.1,0.7-2,4-3.5,5.7 - c-3.3,3.8-2.3,7.7-0.4,12c3.7,8.3,8.9,15.6,14.4,22.5c4.5,5.7,9.7,11,16.1,15.3c5.3,3.5,11,6.6,15.4,11.5c1.7,1.9,2.4,3.3,0.4,5.3 - c1.9,4.4,5.9,6,9.9,7.6l0.1,0.1c3.6,4.3,8.4,7,13,9.8c1.8,5,3,11,8.7,12.5c7.4,2,14.2,5.4,21.8,6.7c8,1.4,16.1,2,24,3.6 - c2.7,0.6,5.9,1.9,10.3,0.2c-11.6-2.9-21-7.8-30.8-11.9l0,0c4.7-0.6,8.9,1.3,13.1,2.6c17.2,5.3,34.7,6.4,52.6,4.4 - c14.3-1.6,28.4-4.1,42.8-5.3c3.3-0.3,7-0.1,10.3-1.4c1.6-0.6,3.4-1.1,3.8-2.8c0.5-2-1.4-2.8-2.8-3.6c-3.9-2-7.9-4-11.8-5.9 - c0.9-0.9,2.1-0.8,3.3-0.9c9.3-1.3,18.6-2.8,28-3.7c11.7-1.1,23.1-4,34.9-4.2c7.4,3.5,13.1,9,16.9,16.1c2.8,5.2,0.4,8.3-5.4,9 - c-6.1,0.7-12.2,0.6-18.3,1.1c-13,1.1-25.9,2.7-38.9,3.7c-13.6,1.1-27,2.2-39.7,7.7c-4.7,2-9.6,3.4-14.5,4.8 - c-7,2.1-14.1,3.9-21.2,5.9c-1.6-0.4-3-1.1-4.7-1.4c-10.5-1.5-20.9-3.4-31.4-4.9c-7.8-1.1-15-3.9-22.5-6.2c-1.1-0.3-3.3-2.4-3.2,1.1 - c-7.8-0.7-15.1-2.5-21.1-7.9c1.6-0.7,2.2-1.9,1.9-3.6c-0.1-0.8-0.6-1.2-1.4-1c-5.4,1.8-7.8-2.1-10.5-5.4c1.3,0,2.7,0,4,0 - c0.4,0.4,0.8,0.9,1.2,1.3c0.1-0.2,0.3-0.4,0.4-0.6c-0.5-0.2-1.1-0.5-1.6-0.7c-1-1.1-1.8-2.4-2.9-3.4c-10.9-9.4-22.2-18.4-33.1-27.9 - c-14.4-12.5-29.3-24.4-44-36.5c-4.4-3.6-6.7-7.6-6.1-13.6c0.6-5.8,1.6-11.4,4.1-16.7c2.4-5.2,6.3-9.6,9.8-13.9 - c8.6-10.4,17.2-21,27.5-29.8c7-5.9,13.2-12.4,19.2-19.2c1.5-1.7,2.8-3.9,5.4-4.1c0.3-0.3,0.7-0.6,1-1l0,0c0.8,0,1.6-0.1,2-1l0,0 - c0.3-0.3,0.6-0.7,1-1l0,0c0.3-0.4,0.6-0.8,1-1.2c2.7-4.6,7.4-6.4,11.8-8.6c7.4-3.7,14.9-7.2,22.4-10.7c5.8-2.8,10.4-8.1,14.7-13.2 - c5.5-6.4,10.5-13.4,18.2-17.3c4.7-2.3,9.6-4,14.5-5.8c9.8-3.5,19-8.1,27.4-14.5c2.1-1.6,4.9-2.9,7.8-2.9c1.1,0,2.6,0.5,3.3,0 - C256.7,71.2,261.3,72.5,261.9,67.9z"/> -<path style="fill:#E794A1;" d="M419,270c-11.8-2.7-23.7-5.5-35.5-8.2c0-0.3,0.1-0.6,0.1-0.9c6.1,0.4,12.2,0.8,18.3,1.2 - c0.9,0.9,1.9,0.9,3.1,0.7c0.7,0,1.3,0,2,0.1c10.9,0.2,21.9,1.6,32.7,0.1c10.9-1.5,19.3-7.7,25.7-16.2c2.4-3.2,1.6-7.6-1.6-9.9 - c-3.2-2.2-5.5,1.6-8,3.2c-0.9,0.6-1.4,1.8-2,2.8c-5.2,8.4-12.9,11.9-22.5,12.3c-13.5,0.6-26.8-1.5-40.2-2.1 - c-11.9-2-23.9-3.7-35.7-6.1c-26.8-5.5-53.5-11.6-77.6-25.5c0.2-0.2,0.4-0.4,0.5-0.7c15.4,5.1,30.7,10.8,46.6,14.6 - c10.2,2.4,20.5,4.4,31.1,3.7c1.2-0.1,2.4,0.1,3.5-0.2c2.1-0.7,5.4-0.8,5.4-3.4c0-2.4-3.3-1.7-5-2c-35.5-7.5-70-18.4-103.4-32.6 - c-3.3-1.4-6.7-2.7-9.2-5.7c8,3,16,6,24,9c13.7,6.2,28,10.2,42.4,14.1c16.6,4.6,33.4,8.5,50.5,11c1.3,0.2,2.6,1.1,3.2-1 - c1.1-3.5,2.8-6.9,0-10.3c-3.7-4.9-8.3-9-10.9-14.6c-0.7-1.6-2.2-3.6-0.6-5c1.8-1.8,3.2,0.6,4.5,1.6c6.8,4.9,8.8,4.8,13.9-1.7 - c0.6-0.7,1.2-1.1,2-1.3c1.8,0.3,3.7,0.3,5.3,1c13.3,4.9,26.7,9.8,39.9,15c13,5,28.3-0.8,34.9-13.5c1.2-0.2,2-0.9,2-2.2v0.1 - c2.6-0.8,2.8-3.1,2.9-5.2c0.1-2.3-0.3-4.7,0-6.9c0.3-2.9,1.4,0.2,2.1-0.1l0.1,0.2c0.1,1.7-0.7,3.5,0.8,5c0,0.4,0.1,0.7,0.1,1.1 - c0,1.4-0.5,2.9,0.8,4.1c0.3,0,0.7,0,1,0c0,0.6,0.1,1.3,0.1,1.9c-0.9,3.5-2.1,7-2.8,10.6c-0.5,2.9-1.2,6,1.2,8.5 - c3.5,3.6,8.3,6.5,6.7,12.8c0.6,1.6,1.5,2.8,3.2,3c2.1,3.1,4.5,6.1,4.7,10.2c0.1,2.7,2.7,3.5,5,4.1c4.5,1.3,8.9,2.6,13.4,3.9 - c3.2,0.9,4.4,2.6,2.8,5.9c-1.2,2.6-2.5,5-4.1,7.4c-2,3-3.3,6.2-1.3,9.7c-3.6,2-7.1,3.9-10.7,5.9c-0.4,0.3-0.9,0.7-1.3,1 - c-4,3.1-4.9,7.4-5.1,12.1c-2.1-0.8-4.1-1.6-6.2-2.4c1.4,2.3,3.4,4,4.4,6.4c-5,4.1-10.5,7.7-16.1,11c-0.7,0.3-1.3,0.7-2,1h0.1 - c-1.7-0.3-3.4-0.6-5.2-0.9c-0.2,1.9,1.9,1.7,2.3,3c-6.5,4.3-13.3,8.3-19.5,13c-3.5,2.7-7.3,3.9-11.4,5.2c-3.3,1-6.6-1.3-9.7,0.6 - l-0.2-0.2l-0.3,0.1c-3.1-0.1-6,1.3-7.1,3.6c-3.1,6.2-8.4,5.5-13.8,5.5c-2.7,0-5.5,0.8-8.2,1.2c-2.3,0.4-4.5,1.1-6.2,2.8 - c-4,3.3-8.4,4.9-13.7,4.2c-1.1-0.1-2.3,1.1-3.4,1.6c-4.6-4.8-7.4-0.4-10.5,2.1c-1.2-1.2-2.4,0.8-3.6,0.2c-4.1,0.4-8.4-0.6-12.5,0.6 - c-6.3-1.6-13.1,0.3-19.3-2.6c7.9-2.3,16.2-0.5,24.2-1.9c10.2-1.8,20.7-1.7,30.7-5.8c10.4-4.3,21-8.2,32-10.8 - c6.3-1.5,12.6-2.9,18.8-4.7c2.8-0.8,5.6-2.2,5.5-6.1c-0.1-3.6-2.6-4.9-5.4-5.7c-5.3-1.5-10.6-2.7-15.9-4.1c-5-1.3-10.1-2.7-15.1-4.1 - c9.8-1.9,19.6-2.5,29.2-4c10.3-1.6,20.7-2.5,30.7-5.8c1.2-0.4,2.9-0.6,2.9-2.2c0-1.5-1.3-2.3-2.5-2.8c-1.5-0.7-3.1-1.3-4.7-1.7 - c-9.6-2.1-19.5-1.9-29.3-2c-9.7-0.1-19.5,1.5-29,3.7c-9.6,2.2-19.3,4.1-29,6.1c-11.8,0.2-23.2,3.1-34.9,4.2 - c-9.4,0.9-18.7,2.5-28,3.7c-1.1,0.2-2.3,0-3.3,0.9c-1.3,0.1-2.6,0.2-3.9,0.3c-0.3,0-0.7,0-1,0c-9.2,1-18.5,1.9-27.7,3 - c-25,3-50,4.3-75.2,3.7c-11.7-0.2-23.2-1.5-34.1-6.1c-4.6-2.9-9.4-5.5-13-9.8c5.5,2.3,11,4.6,16.8,6c29.3,7.4,59.1,8.2,89,5.6 - c10.1,0,20.1-1.7,30.2-2.6c16.3-1.5,32.6-3.9,48.7-6.9c18.6-3.5,37-7.4,55.5-11.3c6.7-1.4,13.3-3.3,21-5.2 - c-15.5-2.6-29.7-4.9-43.9-7.4c-14.8-2.6-29.6-5.4-44.5-8.1c-0.6-0.1-1.2-0.1-1.9-0.2c-0.4-0.3-0.7-0.5-1.1-0.8 - c-3.1-0.1-5.7-1.4-8.4-2.7c1-1.8,2.6-1.3,4.1-1.2c15.7,1.2,31.3,2.4,46.8,4.7c14.2,2.1,28.4,4.4,42.6,6.6c1.6,0.3,3.3,0.3,4.9,0.5 - c0.4,0.3,0.8,0.7,1.2,0.8c12.6,2.1,25.3,3.6,37.7,6.3c14.5,3.1,27.9,0.9,41.1-5c4.3-1.9,5.9-5.5,7.4-9.4c0.7-1.7-0.2-2.6-1.9-2.5 - c-1.5,0-3,0.1-4.4,0.4C459.3,267.6,439.4,271.3,419,270z"/> -<path style="fill:#7A7A7A;" d="M378.8,342c1.7-1.7,3.9-2.4,6.2-2.8c4.1,3,9.1,4.3,12.9,7.9c2.3,2.2,4.3,6.8,7.5,5.4 - c3.1-1.3,2.1-6.1,2.6-9.5c0.8-5.2,0.2-11.1,6.1-14.2l0.3-0.1l0.2,0.2c5.9-0.1,10.6,3.3,15.8,5.4c3,1.2,6.7,3.5,9.1,0.2 - c2.3-3-0.9-5.8-2.6-8.3c-0.2-0.2-0.1-0.6-0.2-1c7.6,1.4,14.9,3.4,22.5,4.1c5,0.5,7.2-1.1,7.9-5.8c0.8-5.6-0.3-9.8-6.3-11.6 - c-1-0.3-1.8-1.3-2.7-2c0.1-0.6,0.1-1.2,0.2-1.9h-0.1c0.5,0,1-0.1,1.6-0.1c7.6-0.3,15.3,2,22.9-0.6c0.3,0.3,0.5,0.5,0.8,0.8 - c-2.4,4.4-5.1,8.6-7.2,13.1c-17.7,39-36.4,77.6-51.8,117.6c-3.2,8.2-8.1,13.9-16.4,17.6c-7.9,3.4-15,8.5-22.4,13 - c-8.9,5.5-16.7,12.4-26.7,16.4c-22.8,9.2-45.3,19.1-70.3,21c-8.1,0.6-16.1,3.1-24.2,1.1c-6-1.4-11.9-3-17.9-3.9 - c-1.3-0.2-2.3-0.5-2.5-2c-0.5-4-3-6.9-5.1-10c2.2-0.1,2.2-1.2,1.7-3c-0.6-2.3-1.4-4.8,0.5-7c2.3,3.1,4.5,6.4,7,9.4 - c2.1,2.5,4.6,3.1,6.7-0.2c1.6-1.1,2-0.3,2.7,1.2c0.7,1.6,2.1,3.3,4.2,2.1c1.7-1,3.7-2.3,3.1-5c-0.2-0.9-0.3-1.9-0.5-2.8 - c3.7,0.7,4.7,4.4,7,6.6c5.3,5.1,8.2,4.8,12-1.4c0.8,0,1.5,0,2.3-0.1c5.6,0,10.9-0.9,14.4-6c1.8,1.7,2,4,2.2,6.3 - c0.1,1.2,0.8,1.7,1.9,2c0.9,0.2,1.3-0.6,1.3-1.1c0.4-4.3,3.2-4.7,6.6-4.1c7.7,5.6,8.4,5.5,12.9-1c0.6-0.3,1.3-0.9,1.8-0.7 - c5.7,1.7,7.8-1.8,9.2-6.3c3.5-11.4,3.6-23.5,6.5-35c1.2,0.5,0.2,3.1,2.3,2.9c0.4,0.9,0.9,1.8,1.2,2.7c2.3,6.3,3.2,6.5,8,2.3 - c0.3,6.3-3.2,11.9-3.9,19.3c0.9-1.6,1.2-2,1.4-2.4c8.2-22.7,15.6-45.7,22.7-68.8c3.1-9.8,4.6-19.6,3.1-29.8 - c-0.7-2.9,1.1-5.6,0.7-8.5c1-2.3,0.2-4.6,0.1-6.8c1.5-2.3,1.3-4.6-0.1-6.9C377.7,347.3,377.5,344.5,378.8,342z M392,454 - c0.4-0.9,0.8-1.8,1.3-2.7c15.3-35.7,30.5-71.4,45.7-107.1c0.5-1.1,1.8-2.7,0.3-3.6c-1.9-1.1-2.5,1.1-3.2,2.3 - c-4.8,8.5-8.8,17.5-12.7,26.5c-11.4,26.7-23.8,53-30.9,81.3C392.4,451.8,392.2,452.9,392,454c0,0.1-0.1,0.2-0.2,0.3 - C391.9,454.2,391.9,454.1,392,454z M450,348c-1.5,0.8-1.8,2.3-2.1,3.9c-0.7,1.3-1.5,2.6-2.2,3.9c-13.8,25.5-23,52.9-33.5,79.8 - c-0.7,1.9-2.4,3.7-1.7,7.1c1.1-2.4,1.9-3.8,2.5-5.3c6.2-14.7,12.5-29.3,18.7-44c5.7-13.6,11.1-27.3,16.7-41 - C449.3,351,450.1,349.7,450,348c0.3-0.3,0.5-0.7,0.8-1c-0.2-0.1-0.4-0.2-0.5-0.4C450.2,347.1,450.1,347.5,450,348z M403.3,362.9 - c-8.2,13.7-30.6,81.4-27.7,96.7C385.5,427.2,396.7,395.7,403.3,362.9z M406.6,450.6c-0.1,0-0.3,0-0.3,0.1c-0.1,0.1-0.1,0.3-0.1,0.4 - c0.2,0,0.4-0.1,0.6-0.1C406.7,450.9,406.7,450.7,406.6,450.6z M451.6,343.8c-0.1,0-0.2,0-0.2,0.1c-0.1,0.1-0.1,0.3-0.1,0.4 - c0.2,0.4,0.3,0.3,0.4-0.1C451.7,344.1,451.7,344,451.6,343.8z M409.8,444c-0.1-0.3-0.2-0.6-0.3-0.8c-0.1,0.1-0.3,0.2-0.3,0.4 - c0,0.3,0.1,0.6,0.1,0.9C409.5,444.3,409.7,444.2,409.8,444z M407.9,448.3c-0.1-0.3-0.2-0.5-0.3-0.8c-0.1,0.1-0.4,0.2-0.4,0.3 - c0.1,0.3,0.2,0.6,0.3,0.8C407.6,448.5,407.8,448.4,407.9,448.3z"/> -<path style="fill:#272424;" d="M238.8,492c2.1,3.1,4.6,6.1,5.1,10c0.2,1.5,1.2,1.8,2.5,2c6.1,0.9,12,2.5,17.9,3.9 - c8.1,1.9,16.2-0.5,24.2-1.1c25-1.9,47.5-11.8,70.3-21c9.9-4,17.8-10.9,26.7-16.4c7.4-4.5,14.5-9.6,22.4-13 - c8.3-3.6,13.2-9.4,16.4-17.6c15.5-40,34.1-78.6,51.8-117.6c2.1-4.5,4.8-8.7,7.2-13.1c0.4-0.3,0.8-0.5,1.2-0.8 - c0.3,0.3,0.6,0.5,0.8,0.8c-2.3,6.4-6.9,11.9-8.3,18.7c-17.8,33.3-30.8,68.8-45.5,103.9c10.6-2.9,17.4,3,24.3,8.6 - c3.3,2.7,6.8,5.3,10.3,7.8c2.6,1.9,5.1,3.6,8.7,4c5.9,0.7,8.4,5.6,9.2,10.9c0.9,6.8,3.2,12,9.5,15.8c5.9,3.5,4.8,10.9-1.5,13.6 - c-12.3,5.2-24.4,10.9-37,15.1c-9.5,3.1-19.8,4.6-29.9,4.2c-19.1-0.6-37.6,3.3-56.3,5.9c-17.6,2.4-35.2,3.1-53.1,0.6 - c-18.5-2.5-36.7-7.3-55.7-6.6c-7.6,0.3-14.7-4.3-22.2-6.2c-1.9-0.5-3.8-1.2-5.7-1.8c0.4-3.7,3.4-6.9,1.9-10.9 - c-0.1-1.5,1-2.6,1.7-3.7C237.5,488.8,237.2,491.2,238.8,492z"/> -<path style="fill:#F5CFD6;" d="M295,110c-0.4-3-3.3-2.1-5-2.7c-1.8-0.7-3.4-0.9-3.1-3.3c0.7,0,1.3,0,2,0c5.6,1,11.2,2.3,16.9,2.9 - c15.1,1.8,30.3,2.9,44.8,8.1c1.3-3.3-1.5-5.1-2.4-7.3c-4.5-10.6-11.1-19.4-23-22.5c-6.3-1.6-11.4-5.9-18.2-7.5 - c4.3,0.1,5.8-1.2,4-5.1c-0.5-1.1-0.4-2.7,0.9-3.6c0.2,1.8,1.1,3.4,2.8,3.8c11.1,2.2,19.3,9.9,28.9,14.9c5.5,2.9,11.4,4.4,16.9,7.1 - c2.1,1,4.3,1.9,5.4,4.2c-6.9-1.6-13-5.8-20.4-6.3c16.6,11.8,32.6,24.2,47.7,37.8c-3.4-9-8.9-16.4-16.2-22.5 - c-2.8-2.3-5.4-4.8-8.1-7.1c7.5,1.2,14.2,3.2,18.5,10.6c6.1,10.5,15.1,18.7,23.7,27.2c1.4,1.4,2.7,2.9,4.1,4.3 - c-5.2-0.8-9.7-3.6-13.6-6.8c-6.3-4.9-13.8-2.3-20.5-4.1c-0.6-0.2-1.4,0-1.6,0.8c-0.2,0.8,0.2,1.3,0.8,1.6c5.4,2.7,10.6,6.2,16.9,6.4 - c9.4,0.3,15,6.1,19.8,13c-9.1-1-17.8-4.1-27.1-3.9c11.2,3.9,22.6,7.5,33.9,10.9c2.4,0.7,4.6,1.6,2.1,4.2c-1.3,1.4-3.5,2.5-5.9,1.3 - c-4-2.1-8-4-12-6c-9.5-4.7-19.2-8.9-30.1-9.5c-0.5-6.4-2.1-8.4-8.1-9.8c-17.5-4-35.2-7.2-52.5-12.1c-7.3-2.1-14.6-4.3-22.5-6.7 - c2.8-2.3,4.7-0.3,6.7-0.2c1.8,0.1,3.4,0.6,3.5-1.9c1.5-0.6,0.7-2.6,1.9-3.3c1,5.6,4.7,8.8,8.5,6.7c4.2-2.3,8.4-1.2,12.6-1.3 - c1,0,2.4,1.3,2.8-0.6c0.3-1.3-0.8-1.9-1.9-2.5c-5.6-3.4-11.5-5.6-18-6.2C305.6,111.9,300.3,111,295,110z M343.1,91.8 - c0.1-0.1,0.2-0.2,0.3-0.2c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1,0.1-0.3,0.3-0.4,0.4C342.8,91.7,343,91.7,343.1,91.8z"/> -<path style="fill:#BDBCBC;" d="M154.9,325c6,5.5,13.3,7.2,21.1,7.9l0,0c1.4,1.9,3.3,2.2,5.5,2l0,0c0.8,0.9,1.8,1.1,3,1 - c1.5,0,2.6,0.4,3,2c1.6,1.3,3.4,2.3,5.5,2l0,0c0.3,1,1.1,1.2,2,1l0,0c-1.4,3.7-0.7,7.7-1.2,11.5c-0.3,2.5-0.1,5.7-3.6,6.3 - c-3.3,0.6-4.6-1.9-5.9-4.3c-1.6-3-2.5-6.2-3.1-9.4c-0.6-3.3-2.1-3.7-4.9-2.3c-4.8,2.3-9.3,5.2-14.5,6.7c-1.1,0.3-2.2,0.8-3.3,1.1 - c-8.7,2.1-12-0.9-10.1-9.7c0.3-1.6,1-3.2,0.4-5.2c-3.2,0.4-5.5,2.7-8.1,4.2c-7.2,3.9-11.2,2.7-14.6-4.7c-1.1-2.4-2.3-4-5.2-1.8 - c-2.2,1.6-4.9,2.9-7.2,0.4c-2.2-2.4-3.2-5.4-1.5-8.7c0.6-1.1,2.4-2.2,1.4-3.4c-1.1-1.5-3.1-0.7-4.6-0.2c-4.7,1.5-9.5,1.5-14.3,1.6 - c-3.1,0-4.7-1.3-4.5-4.5c0.1-0.8-0.1-1.7,0-2.5c1.1-5.8-1.8-8.8-6.6-11.6c-6.2-3.7-9.6-9.8-10.4-17.1c-0.2-1.5-0.1-3.1-0.6-4.4 - c-1.5-4.1-1.9-8,0.5-11.8c2.8,0.5,4,3.9,7,4.1c1,1.8,2.1,3.7,3.1,5.5c0.3,0.1,0.6,0.2,0.9,0.4L84,281c0.4,0.6,0.9,1.1,1.3,1.7 - c1.5,1.9,2.5,4.2,4.8,5.4L90,288c0.7,1.1,1.5,2.3,2.2,3.4c0.6,2.4,1.8,4.4,4.7,4.4c0.1,0.1,0.2,0.3,0.3,0.4c-0.2,1.5,0.7,1.8,2,1.8 - c3,2,6.2,3.4,9.7,4c2.3,2,4.9,3.8,7.8,3.9c5.8,0.3,10.5,3.3,14.7,6.3C138.7,317.6,146.8,321.3,154.9,325z"/> -<path style="fill:#110D0E;" d="M315.8,348.1c6.2,2.9,12.9,1,19.3,2.6c4.2,0.4,8.4,1.3,12.5-0.6c1.2,0.6,2.3-1.3,3.6-0.1 - c-2.1,3.3-3,6.8-3.1,10.7c0,5.6-2.6,7.9-8,7c-6.7-1.1-13.1-3.1-17.9-8.5c-2-2.2-4.3-4.2-6.7-5.9c-5.9-4.3-9.6-3.1-12.6,3.8 - c-2.3,3.9-4,8.3-7.9,11c-6.4,1.8-9.1,0.2-13.3-7.9c-1,0.7-1.3,1.8-1.6,2.8c-4.2,5-8.8,9.6-15.2,11.8c-8.5,0.2-12.9-5.5-16.7-11.8 - c-1.7-2.8-3.1-4.1-6-1.8c-4.7,2.2-9.4,4.4-14.1,6.6c-11.9,2-13.4,0.7-14-11.6c-0.1-1.8-0.2-3.6-0.2-5.5c-0.2-4.3,3-4,5.5-3.4 - c4.1,1.1,8.7,2.1,12,4.5c7.7,5.7,15.9,4.1,24,2.6c7.9-1.5,15.4-5,23.8-4.5c2.1,0.1,4.2-0.8,6.1-1.9 - C295.3,347,305.6,346.4,315.8,348.1z"/> -<path style="fill:#F7E3E5;" d="M312,69c-1.3,1-1.4,2.5-0.9,3.6c1.8,3.9,0.3,5.3-4,5.1c6.7,1.7,11.9,5.9,18.2,7.5 - c11.9,3.1,18.4,11.9,23,22.5c1,2.3,3.7,4.1,2.4,7.3c-14.5-5.2-29.7-6.3-44.8-8.1c-5.7-0.7-11.3-1.9-16.9-2.9c1.3-1.5,3.1-1,4.7-1 - c7-0.1,14-0.2,21,0c3.6,0.1,4.5-1.3,4.4-4.6c-0.3-10-5.5-15.3-15.3-15.4c-1.5,0-3,0.1-4.5,0c-6.2-0.7-11,0.6-12.9,7.6 - c-0.5,1.9-2.5,4.3-5.1,4.1c-2.6-0.2-3-2.9-3.7-4.8c-2.3-6-0.2-10.2,5.9-11.5c5.1-1.1,10.4-1.7,15.6-2.3c1.8-0.2,3.1-0.5,3.8-2.5 - c2.7-7.3,4.3-14.7,4.2-22.7c-0.1-5.4,0.3-10.9,3.3-15.8c0.6-1,1.1-2.1,2.5-2.1c-2.1,5.9-3,12-3,18.3c0,1.8-0.2,3.7,1.9,4.7 - C310.3,60.3,310.8,64.6,312,69z"/> -<path style="fill:#F5CFD6;" d="M67,217c-2.6,5.3-3.6,10.8-4.1,16.7c-0.6,6,1.7,10.1,6.1,13.6c14.7,12.1,29.7,23.9,44,36.5 - c10.9,9.5,22.2,18.5,33.1,27.9c1.1,1,2,2.2,2.9,3.4l0,0c-1.3,0-2.7,0-4,0c-0.3,0-0.6,0-1-0.1c-0.3-0.3-0.7-0.6-1-0.9 - c-10.4-4.7-20.7-9.4-31.1-14.1c-3.1-3-7.4-3.8-10.9-6c0.3-2.5-1.3-2.8-3.2-3.2c-2-0.5-3.9-1.5-0.4-3.8c-2.1,0.5-4.1-0.7-5.4,1.2 - c-0.6-0.1-1.2-1.2-1.9-0.2l0.1,0.1c1-0.7-0.1-1.3-0.1-2c1.6-2,0-1.8-1.2-1.8l0.1,0.1c0.2-1.7,0.7-3.6-1.5-4.4 - c-1.2-0.5-1.2,0.6-1.3,1.3c-0.7,0-1.3-1.2-2-0.2l0.1,0.1c0.9-0.7-0.1-1.2-0.1-1.9c0.9-3.5-1.9-4.6-4-6.2l0,0 - c0.1-1.4-0.5-2.3-1.8-2.8c-0.9-3-1.9-6-5.2-7.3c-1.7-2.6-3.4-5.2-5-7.8c-0.3-0.4-0.7-0.8-1-1.1l0,0c0-0.8-0.1-1.6-1-2l0,0 - c0-0.9-0.1-1.6-1-2l0,0c0-0.9-0.2-1.6-1-2l0,0c-0.4-0.3-0.9-0.7-1.3-1c-2.5-2.7-3.6-5.6-2.8-9.4c0.8-3.5-0.7-6.9-2.7-9.8 - c-1.3-1.8-1.4-3.5,0.4-4.7C60.6,220.9,63,217.6,67,217z"/> -<path style="fill:#E794A1;" d="M378,151c10.8,0.6,20.5,4.8,30.1,9.5c4,2,8,3.9,12,6c2.4,1.2,4.6,0.1,5.9-1.3 - c2.5-2.6,0.3-3.4-2.1-4.2c-11.4-3.4-22.7-7-33.9-10.9c9.3-0.3,18.1,2.8,27.1,3.9c11.7,2.3,23.5,4.6,32.4,13.6c0.7,0.7,1.7,1,2.6,1.5 - c2.1,2.9,6.5,3.7,7,8c-3.3-2.1-5.8-5.4-10-6c-7.8-4.3-16.4-1.4-24.6-2.2c-8.3-0.8-17-0.2-25.5-1.4c-9.9-1.4-19.9-3-29.8-4.5h-0.1 - c-0.5-0.8-1.2-0.9-2.1-0.8c-11.2-2.1-22.2-4.9-33.1-8.2c-1.3-0.4-3-0.8-2.9-2.8c0.3,0,0.6-0.1,0.9-0.2 - C347.3,148.8,362.6,150.6,378,151z"/> -<path style="fill:#5F5F5F;" d="M238.8,492c-1.6-0.8-1.3-3.2-3.1-3.8c0.4-2.2-1-3.8-1.8-5.5c-3.5-7.6-6.3-15.3-7.3-23.7 - c-1.3-11.2-6.8-21.5-8-32.8c-1.1-10.6-3.5-20.9-6.1-31.2c-1.4-5.6,0.7-10.8,1.7-16.2c0.2-1,0.8-2,1.9-2c1.3,0.1,1,1.5,1.4,2.3 - c7.2,15.8,10.4,32.8,14.4,49.6c3.6,15.4,4.6,31.2,6.9,46.8c0.4,2.4,1.7,4.3,2.2,6.5c-1.9,2.2-1.1,4.7-0.5,7 - C241,490.8,241,491.9,238.8,492z"/> -<path style="fill:#5F5F5F;" d="M264.2,486.7c0.2,0.9,0.3,1.9,0.5,2.8c0.6,2.7-1.4,3.9-3.1,5c-2.1,1.2-3.5-0.5-4.2-2.1 - c-0.6-1.5-1.1-2.3-2.7-1.2c1.6-5.6-1.5-10.7-2-16.1c-1-10-2.6-20-3.9-30c0.2-1.4,0.5-2.8-0.5-4.1c-1.5-11.9-3-23.9-4.5-35.8 - c-0.3-6.1-1.5-12.1-0.8-18.2c2.9,0.9,3.8,3.6,4.9,5.9c5.2,10.6,8.6,21.7,9.7,33.6C259.4,446.6,262,466.6,264.2,486.7z"/> -<path style="fill:#BDBCBC;" d="M205.3,466.4c-1.4-9.9-4.8-19.3-7.3-28.9c-4.6-18.1-9.5-36.2-12.3-54.7c-0.3-2.2,0-3.9,1.9-5.8 - c3.8,6.3,5.6,13.1,7.7,19.8c7.8,24.8,13.8,50.1,20.2,75.4c0.4,1.6,0.6,3.3,0.4,4.9c-4.3,5.1-4.4,5-6.9-1.1 - C207.8,472.8,206.6,469.6,205.3,466.4z"/> -<path style="fill:#BDBCBC;" d="M243,387c-0.7,6.1,0.5,12.1,0.8,18.2c-1.3,1.4-0.9,3.2-0.7,4.8c0.7,6.1,1.9,12.1,2.4,18.1 - c0.3,3.4,2.4,6.9,0.4,10.4c-4-9.5-6.2-19.5-9.3-29.3c-3.7-11.8-7.1-23.7-10-35.8c-0.6-2.4-0.6-4.1,1.3-5.7c4.7-2.2,9.4-4.4,14.1-6.6 - c1,1.4,1,3.1,1,4.7C243,372.9,243,379.9,243,387z"/> -<path style="fill:#BDBCBC;" d="M158.3,363.3c19.1,35.9,25.8,75.2,37.7,113.3C188.9,471.4,157.7,377.2,158.3,363.3z"/> -<path style="fill:#E794A1;" d="M285.1,348c-1.9,1.1-4,2-6.1,1.9c-8.3-0.5-15.8,3-23.8,4.5c-8.2,1.5-16.3,3.1-24-2.6 - c-3.3-2.5-7.8-3.4-12-4.5c-2.4-0.6-5.6-0.9-5.5,3.4c-0.2-3.6-2.4-5.2-5.8-5.6c-4.5-0.6-8.3-3.8-13-4.1l0,0c-0.3-1.1-1.2-1.1-2-1l0,0 - c-1.5-1.7-3.3-2.3-5.5-2c-0.4-1.5-1.5-2-3-2c-0.8-0.9-1.8-1.2-3-1l0,0c-1.4-1.9-3.2-2.6-5.5-2l0,0c-0.1-3.6,2.1-1.5,3.2-1.1 - c7.4,2.3,14.7,5,22.5,6.2c10.5,1.5,20.9,3.4,31.4,4.9c1.7,0.3,3.2,1,4.7,1.4c2,6,6.4,8.3,13,7.3C262.2,349.9,273.5,347.1,285.1,348z - "/> -<path style="fill:#5F5F5F;" d="M205.3,466.4c1.3,3.2,2.5,6.4,3.8,9.6c2.4,6.1,2.6,6.1,6.9,1.1c1.5,4.8,3,9.7,5.8,14 - c4.5,6.7,7.1,6.9,12.2,0.9c1.4,4-1.5,7.2-1.9,10.9c-7.3-2-14.3-4.8-21.8-6.1c-6.6-1.1-12.6-9.5-13.4-17.4c0.9,1,1.6,2.1,2.6,3 - c1.4,1.3,2.6,3.7,4.8,2.6c1.9-0.9,1.6-3.3,1.8-5.3C206.7,475.1,204.3,470.9,205.3,466.4z"/> -<path style="fill:#F7E3E5;" d="M452,169.1c-0.9-0.5-1.9-0.8-2.6-1.5c-8.9-9-20.6-11.3-32.4-13.6c-4.9-7-10.4-12.7-19.8-13 - c-6.2-0.2-11.4-3.7-16.9-6.4c-0.6-0.3-1-0.8-0.8-1.6c0.2-0.8,1-1,1.6-0.8c6.7,1.9,14.2-0.8,20.5,4.1c4,3.1,8.4,5.9,13.6,6.8 - c7.7,5.7,17.5,7.3,25.5,12.4C445.8,158.7,451.4,161.8,452,169.1z"/> -<path style="fill:#7A7A7A;" d="M484.4,307.4c-0.4,0.3-0.8,0.5-1.2,0.8c-0.3-0.3-0.5-0.5-0.8-0.8c1.2-5.3-3.1-8-5.4-11.6 - c0.4-1,0.8-1.9,1.2-2.9c2.7,0.5,5.5,1.3,8.2,1.5c4.6,0.2,6.1-2.4,3.6-6.3c-1.9-3-4.1-6-7.1-8.1c0.4-0.3,0.9-0.7,1.3-1 - c5.6,1.4,11.3,2.8,16.9,4.2c0.9,1.3,0.8,2.3-0.8,2.9c-2,0.6-2.9,2.5-3.9,4.1c-0.6,1-3.4,1.8-0.7,3.6c0.2,3.3-2.2,5.4-3.6,7.8 - c-4.8,8.6-9.2,17.5-15.1,25.4c1.4-6.8,6-12.3,8.3-18.7c0.7-1.3,1.4-2.6,2.1-3.9c0.2-0.4,0.5-0.9,0.7-1.3c0.9-0.3,1.1-1,1.2-1.9 - c0.5-0.2,0.8-0.5,0.3-0.9c-0.2,0.2-0.3,0.5-0.5,0.7c-0.9,0.4-1.2,1.1-1,2c-0.8-0.1-0.9,0.4-1.1,0.9C485.5,304.6,485,306,484.4,307.4 - z"/> -<path style="fill:#F7E3E5;" d="M369,100.9c2.7,2.4,5.3,4.9,8.1,7.1c7.4,6,12.8,13.5,16.2,22.5c-15.1-13.6-31.1-26.1-47.7-37.8 - C353,93.2,359,97.4,366,99C367,99.6,368,100.3,369,100.9z"/> -<path style="fill:#BDBCBC;" d="M160,416.7c5.9,17.5,15.2,33.8,18.7,52.1c0.3,1.7,1.2,4.1-0.9,4.9c-2,0.7-2.4-1.9-3-3.2 - c-3.6-7.3-6.4-14.7-7.3-23C166.3,436.9,162.4,427,160,416.7z"/> -<path style="fill:#F7E3E5;" d="M449,171c4.2,0.6,6.8,3.9,10,6l0,0c0.4,0.9,0.7,0.8,1.1,0c3.4,1.7,2.8,4.9,3,7.9 - c-0.7,0.3-1.8-2.8-2.1,0.1c-0.2,2.3,0.1,4.6,0,6.9c-0.1,2.1-0.3,4.4-2.9,5.2c-0.3-3.2,1-6.2,1.5-9.3c0.5-3.5-2.4-9.6-5.3-9.6 - C448.6,178.3,448.8,174.9,449,171z"/> -<path style="fill:#110D0E;" d="M501.1,283.1c-5.6-1.4-11.3-2.8-16.9-4.2c3.6-2,7.1-3.9,10.7-5.9c2.1,2.4,4.1,4.9,6.2,7.3 - C501.9,281.3,502.6,282.2,501.1,283.1z"/> -<path style="fill:#BDBCBC;" d="M154.9,440.7c4.5,7.8,6.4,16.6,10.8,24.5c-2.5-1-4.6-3.4-9.3-10.6C153.6,450.2,156,445.2,154.9,440.7 - z"/> -<path style="fill:#F5CFD6;" d="M311.9,55.9c-2.1-0.9-1.9-2.8-1.9-4.7c-0.1-6.3,0.8-12.4,3-18.3l0,0c0.3-0.3,0.6-0.7,0.9-1 - c0.3-2.6,2.3-4.4,3.5-6.5c0.4-0.7,1.2-1.4,2-0.9s0.6,1.4,0.2,2.2c-0.3,0.6-0.5,1.3-0.9,1.8C312.4,36.7,312.4,46.3,311.9,55.9z"/> -<path style="fill:#F7E3E5;" d="M245.9,438.5c2-3.5-0.1-7-0.4-10.4c-0.5-6.1-1.7-12.1-2.4-18.1c-0.2-1.6-0.6-3.3,0.7-4.8 - c1.5,11.9,3,23.9,4.5,35.8c-0.4-0.1-0.9-0.3-1.3-0.4l0,0C246.7,439.8,246.3,439.2,245.9,438.5L245.9,438.5z"/> -<path style="fill:#F7E3E5;" d="M73,263c3.3,1.3,4.2,4.3,5.2,7.3c0.2,1.2,0.3,2.4,1.8,2.8l0,0c0,0.7,0.1,1.5,0.1,2.2 - c-3-0.2-4.2-3.6-7-4.1C73,268.4,73,265.7,73,263z"/> -<path style="fill:#F5CFD6;" d="M261.9,67.9c-0.6,4.6-5.2,3.3-7.7,5c-0.8,0.5-2.2,0.1-3.3,0C254,70.1,257.8,68.6,261.9,67.9z"/> -<path style="fill:#110D0E;" d="M495.6,293.7c-2.7-1.7,0.1-2.6,0.7-3.6c1-1.6,1.9-3.4,3.9-4.1C498.7,288.6,497.2,291.1,495.6,293.7z" - /> -<path style="fill:#BDBCBC;" d="M247,440.5c0.4,0.1,0.9,0.3,1.3,0.4c1.1,1.3,0.8,2.7,0.5,4.1C246.2,444.4,247.2,442.2,247,440.5z"/> -<path style="fill:#F7E3E5;" d="M466.1,197c0-0.6-0.1-1.3-0.1-1.9c0.1-1.1,0.2-2.2,0.3-4.5C468.5,193.7,467,195.3,466.1,197z"/> -<path style="fill:#7A7A7A;" d="M474.4,231.9c-1.8-0.3-2.7-1.5-3.2-3C473,229.1,473.8,230.4,474.4,231.9z"/> -<path style="fill:#F7E3E5;" d="M464,189.9c-1.5-1.4-0.7-3.3-0.8-5C464.6,186.4,463.8,188.3,464,189.9z"/> -<path style="fill:#F7E3E5;" d="M464.9,195.1c-1.3-1.2-0.8-2.7-0.8-4.1C465.4,192.2,464.9,193.7,464.9,195.1z"/> -<path style="fill:#F7E3E5;" d="M156,405c0.7,0.5,1.1,1.1,0.8,2c0,0.1-0.2,0.2-0.4,0.3C156.3,406.5,156.1,405.8,156,405L156,405z"/> -<path style="fill:#F7E3E5;" d="M153.4,398.4c-0.1-0.3-0.1-0.4-0.2-0.6c0.1,0,0.2-0.1,0.4-0.1C153.6,397.9,153.5,398.1,153.4,398.4z" - /> -<path style="fill:#BDBCBC;" d="M66,252c0.9,0.4,1,1.2,1,2C66.2,253.6,65.9,252.9,66,252z"/> -<path style="fill:#BDBCBC;" d="M65,250c0.9,0.4,1,1.2,1,2C65,251.7,64.9,250.9,65,250z"/> -<path style="fill:#BDBCBC;" d="M64,248c0.8,0.4,1,1.2,1,2C64,249.7,64,248.9,64,248z"/> -<path style="fill:#F7E3E5;" d="M154.4,401.3c0-0.1-0.1-0.3-0.1-0.4c0.1,0,0.3-0.1,0.4-0.1C154.9,401.1,154.8,401.3,154.4,401.3z"/> -<path style="fill:#F7E3E5;" d="M156,405c-0.2-0.4-0.5-0.7-0.7-1.1c0,0,0.2-0.2,0.4-0.3C155.8,404.1,155.9,404.5,156,405L156,405z"/> -<path style="fill:#F7E3E5;" d="M157.8,409.9c0,0.1-0.1,0.3-0.1,0.4c-0.1-0.1-0.3-0.3-0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3 - C157.6,409.7,157.7,409.8,157.8,409.9z"/> -<path style="fill:#F5CFD6;" d="M132,148c-0.4,0.8-1.1,1-2,1C130.4,148.2,131.1,147.9,132,148z"/> -<path style="fill:#BDBCBC;" d="M67,254c0.3,0.4,0.7,0.8,1,1.1C67.6,254.8,67.3,254.4,67,254z"/> -<path style="fill:#F5CFD6;" d="M130,149c-0.3,0.3-0.7,0.6-1,1C129.3,149.6,129.6,149.3,130,149z"/> -<path style="fill:#E794A1;" d="M460.1,177c-0.4,0.8-0.7,0.9-1.1,0C459.3,177,459.7,177,460.1,177z"/> -<path style="fill:#BDBCBC;" d="M62.7,247c0.4,0.3,0.9,0.7,1.3,1C63.6,247.7,63.1,247.3,62.7,247z"/> -<path style="fill:#F5CFD6;" d="M133,147c-0.3,0.3-0.6,0.7-1,1C132.3,147.6,132.6,147.3,133,147z"/> -<path style="fill:#BDBCBC;" d="M246,438.5c0.3,0.7,0.7,1.3,1,2C246.7,439.8,246.3,439.2,246,438.5z"/> -<path style="fill:#F5CFD6;" d="M133.9,145.8c-0.3,0.4-0.6,0.8-1,1.2C133.3,146.6,133.6,146.2,133.9,145.8z"/> -<path style="fill:#F7E3E5;" d="M313.9,31.9c-0.3,0.3-0.6,0.7-0.9,1C313.3,32.6,313.6,32.3,313.9,31.9z"/> -<path style="fill:#FFFFFF;" d="M243.9,307.7c-30,2.5-59.7,1.7-89-5.6c-5.8-1.5-11.3-3.8-16.8-6L138,296c-2.5-3.6-5.8-6.1-9.9-7.6 - c2-1.9,1.3-3.3-0.4-5.3c-4.4-4.9-10.1-8-15.4-11.5c-6.4-4.2-11.6-9.6-16.1-15.3c-5.5-6.9-10.7-14.2-14.4-22.5c-1.9-4.3-3-8.2,0.4-12 - c1.5-1.8,0.4-5,3.5-5.7c0,6.7,0.8,13.2,3.1,19.5c3.1,8.3,9.2,14.2,15.3,19.9c7.8,7.3,15.8,14.4,24.4,22.2c-0.3-2.7-1.6-3.3-2.5-4.2 - c-8.6-8.8-16.8-17.9-24.6-27.4c-11.2-13.6-12.3-17.7-8.4-34.4c1.5,7.6,4.2,13.6,7.8,19.1c0.1,1.5,0,3,2,3.2c0.1,0.9-0.2,2,0.9,2.4 - c0.2,0.1,0.8-0.4,0.9-0.7c0.2-1.3-0.7-1.6-1.7-1.8c0.1-1.9-0.5-3.6-1.9-5c-2.9-8.5-4.4-17.1-2.5-26.1c3.4,3.4,7.7,4.9,12.1,6.2 - c1.5,2.2,3.1,2.7,5,0.5c0,8.8,5.5,13.4,12.7,17c-0.9-3.6-2.3-6.9-3.7-10.3c-1.4-3.5-1.9-7.5-0.3-10.6c1.7-3.3,6.9-3.3,8.8-7.1 - c0.1-0.3,1.8,0.3,2.7,0.5c1.6,0.3,3.2,0.7,4.8,1.1c0.1,0.7,0.1,1.6,1.2,1.5c0.1,0,0.3-0.2,0.3-0.3c0.1-1.1-0.8-1.1-1.5-1.2 - c-2.8-3.3-5.5-6.6-8.3-9.8c-1.6-1.7-3.3-3.6-5.7-1c-0.3,0.3-0.6,0.5-0.9,0.8l0,0c-2.5-0.1-3.1,2.6-5,3.4c0.5-4.1-1.7-4.9-5.1-4.2 - c-3.7,0.8-7.4,1.8-11.1,2.6c-1.6,0.4-3.5,0.5-4.4-1.3c-1-2,0.5-3.3,1.8-4.2c4.6-2.9,7.8-7.6,13.1-9.6c1.8-0.7,3.1-0.9,4.5,0.6 - c1.3,1.4,1.5,2.9,0.6,4.6c-0.5,0.9-1.2,1.7-1.2,2.6c-0.1,1.5,1,2.5,2.3,3c1.5,0.5,2.1-0.6,2.4-1.8c3.2-11.6,14-10.7,22.5-13.7 - c1.5-0.5,2,1,2.9,2c7.3,8.9,12.3,19.2,17.6,29.3c0.7,1.3,0.7,3.2,2.5,3.4c2,0.1,1.3-1.9,1.9-3c1-1.9,2-1.7,3.5-0.3 - c2.8,2.5,3.7,6.2,5.8,9.2c6,8.5,10.7,17.8,15.1,27.2c5.6,12,15.9,19.8,24.6,29c0.6,0.6,1.3,1.3,2.1,0.6c0.8-0.6,0.5-1.5,0-2.3 - c-7.6-12.4-13.7-25.7-21.6-37.9c-4-6.1-8.5-11.7-13.8-16.8c-10-9.6-16.4-21.9-23-33.8c-4.7-8.4-8-17.4-11.9-26.2 - c-0.6-1.3-1.9-2.7-0.4-4.1c1.3-1.2,2.8-1.4,4.6-0.7c3.7,1.3,7,3.5,10.9,4.4c2,0.5,3.6,2.1,4,4.6c1.9,11.3,9.8,18.5,17.6,25.7 - c14.8,13.4,31.7,23.8,48.8,34.1c12,7.3,24.6,13.2,37.1,19.4c5.5,2.7,11.2,5.3,16.6,8.4c-22.8-6-43.2-17.4-63.5-28.9 - c7.7,7.6,17.8,11.7,25.5,19.5c-3.8-1.8-7.6-3.4-11.2-5.3c-4.8-2.5-9.5-5.4-14.4-7.9c-1.4-0.7-3-2-5-0.4c-1.9,1.4-3.3-0.5-4.7-1.6 - c-6.7-5.1-13.3-10.3-19.9-15.5c-0.3,0.3-0.6,0.5-1,0.8c2.3,2.9,4.4,6,7,8.7c7.6,7.9,13.9,16.8,20.9,25.2 - c10.8,13.1,18.1,28.3,25.6,43.3c2,4,0.2,5.6-2.7,6.8c-13.9,6-27.6,12.6-43.2,13.1c-0.2,0-0.5,0.3-1,0.7c14.5,1.2,28.1-1.8,41.6-6.3 - c9.7-3.3,19.4-6.9,29.1-10.2c2.6-0.9,4.1,0.4,5,2.7c0.8,1.9,0.4,3.9,0.5,5.9C269.5,299,259,302,248.5,305 - C247,305.6,244.7,305.4,243.9,307.7z"/> -<path style="fill:#F5CFD6;" d="M285.1,348c-11.6-0.9-22.9,1.9-34.2,3.6c-6.6,1-11.1-1.2-13-7.3c7.1-1.9,14.2-3.8,21.2-5.9 - c4.9-1.4,9.8-2.8,14.5-4.8c12.7-5.4,26.2-6.6,39.7-7.7c13-1,26-2.6,38.9-3.7c6.1-0.5,12.2-0.4,18.3-1.1c5.8-0.7,8.2-3.8,5.4-9 - c-3.9-7.1-9.6-12.5-16.9-16.1c9.7-2,19.4-3.9,29-6.1c9.6-2.2,19.3-3.7,29-3.7c9.7,0.1,19.6-0.1,29.3,2c1.6,0.4,3.2,1,4.7,1.7 - c1.2,0.5,2.6,1.3,2.5,2.8c0,1.6-1.7,1.8-2.9,2.2c-10,3.2-20.4,4.2-30.7,5.8c-9.6,1.5-19.4,2.1-29.2,4c5,1.4,10.1,2.8,15.1,4.1 - c5.3,1.4,10.6,2.6,15.9,4.1c2.8,0.8,5.3,2,5.4,5.7c0.1,3.9-2.7,5.3-5.5,6.1c-6.2,1.8-12.5,3.2-18.8,4.7c-11,2.6-21.6,6.5-32,10.8 - c-9.9,4.1-20.4,3.9-30.7,5.8c-8.1,1.4-16.3-0.4-24.2,1.9C305.6,346.4,295.3,347,285.1,348z"/> -<path style="fill:#F5CFD6;" d="M449,171c-0.2,3.9-0.4,7.3,5.3,7.2c2.9,0,5.8,6.1,5.3,9.6c-0.5,3.1-1.8,6-1.5,9.3V197 - c-1.5,0-2.1,0.8-2,2.2c-6.5,12.7-21.8,18.5-34.9,13.5c-13.3-5.1-26.6-10-39.9-15c-1.7-0.6-3.6-0.7-5.3-1c-0.4-0.5-0.7-1.5-1.1-1.5 - c-11.1-0.5-21.4-5.1-32.3-6.3c-6.5-0.7-12.4-3.4-18.5-5.5c-1.1-0.4-2.1-1.1-2.1-2.5c1.7,0,3.3,0,5,0c1,0.5,2,1.2,3.1,1.4 - c9,1.9,18,4.4,27.2,5.3c6.2,0.6,12.3,2.4,18.7,2.4c7.7,0,15.4,1.4,23.1,2.4c7.1,0.9,14.1,1.8,21.3,1.4c1-0.1,2.1,0,2.4-1.2 - s-0.7-1.9-1.6-2.1c-2.6-0.6-4.8-2.1-7.3-2.9c-3.3-1.1-7.3-0.6-9.8-3.8c1.5-1.5,5.3-1.3,4.4-4.3c-0.8-2.7-4-1.5-6.2-1.5 - c-11.7-0.1-23.5-0.1-35.2-0.1c-2.8-2.8-8.6-0.6-10-5.8c5,0.5,10.1,0.9,15.1,1.4c0-0.2,0.1-0.4,0.1-0.7c-6.4-1.6-12.8-3.2-19.3-4.8 - c0.4-0.8,0.3-1-0.9-1.5c5.4-2.6,11.5-1.9,17.1-3.7c9.9,1.5,19.8,3.1,29.8,4.5c8.5,1.2,17.1,0.7,25.5,1.4 - C432.6,169.6,441.2,166.7,449,171z"/> -<path style="fill:#FFFFFF;" d="M327,181c-1.7,0-3.3,0-5,0c-22.5-5.8-44.2-14.6-67.4-18.2c-7.1-1.1-13-5.4-19.6-8.2 - c-1.1-0.5-2.1-1.8-4.3-0.6c4.9,5.4,9.7,10.7,16.5,13c9.4,3.1,19.4,4.7,28.5,8.4c8.7,3.5,16.5,9.1,24.9,13.4 - c9.5,4.9,17.7,11.3,25.8,18.3c-6.5-0.4-12-3.7-17.8-5.8c-9.8-3.6-18.4-9.7-27.9-14c-2.5-1.1-5-1.8-7.7-0.9 - c-4.4,1.4-9.1-0.1-13.6,0.9c0.1,2.4,2.9,2,3,4.3c-6.9-1-12.6-4.4-18.1-7.8c-10.2-6.4-20-13.5-30.2-19.9c-3.1-2-4.9-5.3-8.2-6.9 - c-0.3-0.3-0.7-0.7-1-1l0,0c-0.1-1.9-0.9-3.1-3-3l0,0c0.6-1.9-1-3-1.7-4.4c-4.4-8.1-8.3-16.3-4.7-25.8c4-1.8,6.8-5.8,11.2-7 - c2.7-0.8,5.3-3.2,8.3-0.6c0,1.8-0.2,3.7-0.1,5.5c0.4,5.1,1,10.2,6,13.4c8.6,9.9,20.3,15,31.7,20.3c18.7,8.6,38.1,15.2,58.1,20.1 - c5.1,1.3,10.3,2.1,15.6,2.6c2.9,0.3,1.1,1.3,0.8,2.3c1,1.2,2.5,0.6,3.7,1C329.8,181.5,328.3,180.8,327,181z"/> -<path style="fill:#FFFFFF;" d="M289,305.2c1.3-0.1,2.6-0.2,3.9-0.3c3.9,2,7.9,3.9,11.8,5.9c1.5,0.8,3.3,1.6,2.8,3.6 - c-0.4,1.7-2.2,2.2-3.8,2.8c-3.3,1.4-6.9,1.2-10.3,1.4c-14.3,1.2-28.5,3.7-42.8,5.3c-17.9,2-35.4,0.9-52.6-4.4 - c-4.2-1.3-8.4-3.3-13.1-2.6c-1-3.2-3.4-3.1-6-2.2c2,0.7,4,1.5,6,2.2c9.8,4,19.2,9,30.8,11.9c-4.4,1.7-7.6,0.4-10.3-0.2 - c-8-1.7-16-2.2-24-3.6c-7.6-1.3-14.4-4.8-21.8-6.7c-5.7-1.5-6.9-7.5-8.7-12.5c10.9,4.6,22.4,5.9,34.1,6.1 - c25.1,0.5,50.2-0.7,75.2-3.7c9.2-1.1,18.5-2,27.7-3C288.3,305.7,288.7,305.6,289,305.2z"/> -<path style="fill:#F5CFD6;" d="M243.9,307.7c0.9-2.3,3.1-2.2,5-2.7c10.5-3,21-6,31.1-10.1c4.7,1,8.6-1.8,12.8-3.1 - c10.5-3.3,21.3-6,31.4-10.5c3.7-1.6,3.9-3.3,1-6c-3.4-3.1-7.4-5-11.7-6.3c-1.8-0.6-2.5-1.3-2.5-3c14.8,2.7,29.6,5.5,44.5,8.1 - c14.2,2.5,28.4,4.8,43.9,7.4c-7.8,1.9-14.4,3.8-21,5.2c-18.5,3.9-36.9,7.8-55.5,11.3c-16.1,3-32.3,5.4-48.7,6.9 - C264,306,254,307.7,243.9,307.7z"/> -<path style="fill:#FFFFFF;" d="M223,107.4c-0.1-1.9,1-3,2.4-4.1c4.9-3.7,9.6-4,14.9-0.7c7.9,5,16.8,8,25.5,10.9 - c4.7,1.5,8.2,4.4,10.5,7.8c6.7,10,16.6,14.5,27.1,18.9c8.3,3.4,17,5.7,25.9,9.5c-3.6,2.5-6.5,0.6-9.1,0.1 - c-15.3-3.3-30.6-7.1-45.9-10.4c-8.6-1.9-15.8-6.3-23.2-10.7c-6.5-3.9-13-7.8-19.5-11.8c-1.4-0.8-2.8-0.9-4.3-0.9c0-2,0-4,0-6 - c0.9-1.1,1-2.1-0.3-3C225.6,105.6,224.4,107.1,223,107.4z"/> -<path style="fill:#F5CFD6;" d="M419,270c20.4,1.3,40.3-2.4,60.2-6.5c1.4-0.3,3-0.4,4.4-0.4c1.7,0,2.5,0.8,1.9,2.5 - c-1.5,3.9-3.1,7.5-7.4,9.4c-13.2,5.9-26.7,8.1-41.1,5c-12.4-2.7-25.1-4.2-37.7-6.3c-0.4-0.1-0.8-0.5-1.2-0.8 - c4.9-2.5,10-3.5,15.5-2.4C415.4,271,417.3,271.7,419,270z"/> -<path style="fill:#F5CFD6;" d="M367.1,217.9c2.8,3.4,1,6.9,0,10.3c-0.6,2-1.9,1.2-3.2,1c-17.1-2.5-33.9-6.4-50.5-11 - c-14.4-4-28.8-8-42.4-14.1c1.2-1.7,3.1-1.3,4.6-1c20.5,5.1,41.5,7,62.2,11.4c7.5,1.6,15.3,2.2,22.8,4.3 - C362.5,219.4,365.1,219.9,367.1,217.9z"/> -<path style="fill:#F5CFD6;" d="M391,253c13.4,0.6,26.7,2.7,40.2,2.1c9.7-0.4,17.3-3.9,22.5-12.3c0.6-1,1.1-2.2,2-2.8 - c2.5-1.6,4.8-5.5,8-3.2c3.2,2.2,4,6.6,1.6,9.9c-6.4,8.6-14.8,14.7-25.7,16.2s-21.8,0.1-32.7-0.1c-3-3.9-7.9-4.7-12-6.8 - C393.4,255.3,391.3,255.3,391,253z"/> -<path style="fill:#E794A1;" d="M98.7,202.8c-1.9,9-0.4,17.6,2.5,26.1c-0.1,0.6-0.2,1.3-0.3,1.9c-3.7-5.5-6.4-11.5-7.8-19.1 - c-3.9,16.7-2.8,20.8,8.4,34.4c7.8,9.5,16,18.6,24.6,27.4c0.9,0.9,2.1,1.5,2.5,4.2c-8.6-7.8-16.6-14.9-24.4-22.2 - c-6.2-5.8-12.2-11.6-15.3-19.9c-2.4-6.4-3.1-12.9-3.1-19.5c0.9-7.8,3.6-14.8,8.8-20.7c0.9-1,1.7-2.9,3.5-1.7c1.4,1,2.2,2.4,1.8,4.3 - C99.4,199.6,99.1,201.2,98.7,202.8z"/> -<path style="fill:#E794A1;" d="M330.9,180.2c-1.2-0.4-2.7,0.2-3.7-1c13.3-0.4,26.6-0.8,39.8-1.2c11.7,0,23.5,0,35.2,0.1 - c2.2,0,5.3-1.2,6.2,1.5c0.9,3-3,2.8-4.4,4.3c-1.3,0.1-2.6,0.2-4,0.2c-0.3,0-0.7,0-1,0c-5.3,0.7-10.6,0.9-15.8,0.6 - C365.7,183.9,348.2,182.6,330.9,180.2z"/> -<path style="fill:#E794A1;" d="M195.7,122.8c-3.7,9.5,0.3,17.7,4.7,25.8c0.8,1.4,2.3,2.5,1.7,4.4c-6.1-4.2-7.8-10.7-9.2-18.1 - c-4.7,4.9-5.9,10.3-5.3,16.1c0.4,3.7,1.6,7.4,2.5,11.1c-2.2-0.9-3.1-2.7-3.1-5c-2.7-7.8-1.1-16.1-2.8-24c-0.5-2.5,0.5-4.9,1.8-7.1 - c3.7-6.2,7.4-12.5,12.4-17.9c1.2,5.1,1.2,6-1.2,10.1C196.3,119.6,196,121.2,195.7,122.8z"/> -<path style="fill:#E794A1;" d="M352.9,168.1c6.4,1.6,12.8,3.2,19.3,4.8c0,0.2-0.1,0.4-0.1,0.7c-5-0.5-10.1-0.9-15.1-1.4 - c-16.3-2.7-32.8-4.1-48.9-8.3c-2.8-0.7-7.9-1.4-7.3-3.6c0.8-2.8,5.3-0.9,8.3-0.4c13.1,2,26,5,38.9,7.7 - C349.6,167.9,351.3,167.9,352.9,168.1z"/> -<path style="fill:#FFFFFF;" d="M186.9,157.1c0,2.3,0.9,4,3.1,5l-0.1-0.1c-0.2,1.4,0.4,2.6,1.2,3.7c0.6,2.1,1.3,4.2,4.1,4.3 - c1.9,0.1,2.9,1.6,4.1,2.6c7.2,6.2,14.8,11.8,23.5,15.8c0.7,0.3,1.6,0.5,1.8,1.9c-2,0.4-3.8-0.4-5.3-1.3c-11.6-6.9-24-12.7-33.7-22.4 - c-1-1-1.8-2.3-2.8-3.5c-2-2.3-2.8-4.1,1.5-4.2C185.5,159,185.9,157.6,186.9,157.1z"/> -<path style="fill:#FFFFFF;" d="M111.9,299.9c10.4,4.7,20.7,9.4,31.1,14.1c0.3,0.3,0.7,0.6,1,0.9c0.3,0,0.6,0,1,0.1 - c2.7,3.4,5.1,7.2,10.5,5.4c0.8-0.3,1.2,0.2,1.4,1c0.3,1.7-0.3,2.9-1.9,3.6c-8.1-3.8-16.2-7.4-23.6-12.8c-4.2-3.1-8.9-6-14.7-6.3 - c-2.9-0.2-5.5-1.9-7.8-3.9C110.5,302.3,111,300.8,111.9,299.9z"/> -<path style="fill:#E794A1;" d="M227.3,110c0,2,0,4,0,6c-0.1,3.2-0.9,4.8-4.8,3.5c-4.5-1.5-6.6,0.7-5.2,5.4c0.9,3.1,2.4,6.1,3.6,9.1 - c-4.9-3.2-5.5-8.3-6-13.4c-0.2-1.8,0-3.6,0.1-5.5c1.9-3.4,5.6-4.9,8-7.8c1.3-0.2,2.5-1.7,4-0.4C227.1,108,227.2,109,227.3,110z"/> -<path style="fill:#E794A1;" d="M115.9,209.5c-1.9,2.2-3.5,1.7-5-0.5c-0.4-5.1,2.9-8.2,6.1-11.4c1.4-1.4,2.7-2.8,4.1-4.3 - c1.9-0.8,2.5-3.5,5-3.4c0.3,1.7-0.8,2.8-1.4,4.1C121.9,199.4,117.9,203.9,115.9,209.5z"/> -<path style="fill:#E794A1;" d="M295,110c5.3,1,10.5,1.9,15.8,2.9c-1.4,1.3-3.5,1.8-3.9,4c-1.3,0.7-0.5,2.7-1.9,3.3 - c-2.3-1.6-4.6-3.2-6.8-4.9C296.5,114,294.5,112.7,295,110z"/> -<path style="fill:#E794A1;" d="M128.1,288.3c4.1,1.5,7.4,4.1,9.9,7.6C134,294.3,130,292.7,128.1,288.3z"/> -<path style="fill:#E794A1;" d="M202,153c2.1-0.1,2.9,1.2,3,3C203.3,155.7,202.2,154.8,202,153z"/> -<path style="fill:#E794A1;" d="M277.6,221.4c-1.4-0.4-2.8-0.7-4.2-2c2-0.6,3.4,0.5,4.7,1.4C278,221,277.8,221.2,277.6,221.4z"/> -<path style="fill:#E794A1;" d="M191.1,165.7c-0.8-1.1-1.4-2.3-1.2-3.7C190.8,163.1,192.3,164,191.1,165.7z"/> -<path style="fill:#F5CFD6;" d="M149,315c0.5,0.2,1.1,0.5,1.6,0.7c-0.1,0.2-0.3,0.4-0.4,0.6C149.8,315.9,149.4,315.4,149,315L149,315 - z"/> -<path style="fill:#F5CFD6;" d="M405,262.8c-1.1,0.2-2.2,0.2-3.1-0.7C403,262,404.1,261.8,405,262.8z"/> -<path style="fill:#F5CFD6;" d="M367,162.1c0.8-0.1,1.6,0,2.1,0.8C368.2,163,367.5,162.9,367,162.1z"/> -<path style="fill:#FFFFFF;" d="M331.9,150.8c-0.3,0.1-0.6,0.2-0.9,0.2C331.2,150.5,331.5,150.3,331.9,150.8z"/> -<path style="fill:#F5CFD6;" d="M308,265.2c0.4,0.3,0.7,0.5,1.1,0.8C308.7,265.7,308.4,265.4,308,265.2z"/> -<path style="fill:#E794A1;" d="M205,156c0.3,0.3,0.7,0.7,1,1C205.7,156.7,205.3,156.3,205,156z"/> -<path style="fill:#FFFFFF;" d="M302.9,357c3-6.9,6.7-8,12.6-3.8c2.4,1.7,4.7,3.7,6.7,5.9c4.8,5.4,11.2,7.4,17.9,8.5 - c5.4,0.9,8-1.5,8-7c0-3.9,1-7.4,3.1-10.7c3.2-2.5,5.9-6.9,10.5-2.1c3.4,4.3,6.6,8.7,10.1,12.9c1.5,1.8,3,4.2,6.2,3.1 - c0.3,2.9-1.4,5.6-0.7,8.5c-0.4,1.1-0.9,2.2-1.2,3.3c-6.7,25.6-13.6,51.1-21.2,76.4c-0.6,0.3-0.8,0.7-0.6,1.3 - c-0.1,0.2-0.3,0.5-0.3,0.8c-4.8,4.2-5.7,4-8-2.3c-0.3-0.9-0.8-1.8-1.2-2.7c-0.6-3.9-2.1-7.8-1.6-11.8c1.7-14,3.4-27.9,5.3-41.9 - c0.5-3.7,0-6.9-1.5-10.1c-0.5-1.1-0.3-3-2.1-3c-2.1,0.1-1.8,2-2.1,3.4c-3,11.9-4.5,24.1-6.7,36.2c-4,22-5.8,44.4-11.1,66.3 - c-4.5,6.5-5.3,6.6-12.9,1c-0.7-2.4-5.2-0.7-4.4-5.9c2.9-17.4,4.6-34.9,6.6-52.4c1.6-13.9,1.6-27.9,2.2-41.9c0.2-4.9,0.3-9.6-2.3-14 - c-1.4-2.3-1.9-6.3-5.2-5.8c-2.8,0.5-2.4,4.2-3.1,6.7c-1.5-1.9-0.7-4.1-0.8-6.1C304.7,365.4,304.6,361.1,302.9,357z"/> -<path style="fill:#110D0E;" d="M457.9,309.9c0.9,0.7,1.7,1.7,2.7,2c6,1.8,7.2,6.1,6.3,11.6c-0.7,4.8-2.9,6.3-7.9,5.8 - c-7.6-0.7-15-2.7-22.5-4.1c0.1,0.4,0.1,0.8,0.2,1c1.7,2.6,4.9,5.3,2.6,8.3c-2.4,3.3-6.2,1-9.1-0.2c-5.2-2.1-9.8-5.5-15.8-5.4 - c3.1-2,6.4,0.3,9.7-0.6c4.1-1.2,7.9-2.4,11.4-5.2c6.2-4.7,13-8.7,19.5-13C456.1,310.1,457,310,457.9,309.9z"/> -<path style="fill:#110D0E;" d="M414.1,328.9c-5.9,3.1-5.3,9-6.1,14.2c-0.5,3.3,0.6,8.1-2.6,9.5c-3.2,1.4-5.2-3.3-7.5-5.4 - c-3.8-3.6-8.8-4.9-12.9-7.9c2.7-0.4,5.5-1.2,8.2-1.2c5.4,0,10.6,0.7,13.8-5.5C408.2,330.2,411.1,328.8,414.1,328.9z"/> -<path style="fill:#110D0E;" d="M378,363.7c-3.1,1.2-4.7-1.3-6.2-3.1c-3.5-4.2-6.8-8.6-10.1-12.9c1.1-0.6,2.4-1.8,3.4-1.6 - c5.3,0.7,9.7-0.9,13.7-4.2c-1.4,2.6-1.1,5.3-0.8,8.1c0,2.3,0.1,4.6,0.1,6.9C378.2,359.2,379,361.5,378,363.7z"/> -<path style="fill:#110D0E;" d="M477,295.8c2.4,3.6,6.7,6.3,5.4,11.6c-7.6,2.5-15.2,0.3-22.9,0.6c0.1-0.3,0.3-0.6,0.4-0.9 - c5.6-3.3,11.1-6.8,16.1-11C476.4,296,476.7,295.9,477,295.8z"/> -<path style="fill:#110D0E;" d="M482.9,280c3,2.1,5.1,5.1,7.1,8.1c2.5,3.9,0.9,6.5-3.6,6.3c-2.8-0.1-5.5-1-8.2-1.5 - c-0.1-0.3-0.2-0.5-0.3-0.8C478,287.4,479,283.1,482.9,280z"/> -<path style="fill:#F5CFD6;" d="M477.8,292.1c0.1,0.3,0.2,0.5,0.3,0.8c-0.4,1-0.8,1.9-1.2,2.9c-0.3,0.1-0.6,0.2-0.9,0.3 - c-1-2.4-3.1-4-4.4-6.4C473.7,290.5,475.8,291.3,477.8,292.1z"/> -<path style="fill:#F5CFD6;" d="M347.6,350.1c-4.1,1.9-8.3,1.1-12.5,0.6C339.2,349.4,343.5,350.5,347.6,350.1z"/> -<path style="fill:#F5CFD6;" d="M457.9,309.9c-0.9,0.1-1.9,0.2-2.8,0.3c-0.3-1.3-2.4-1.1-2.3-3c1.8,0.3,3.5,0.6,5.2,0.9 - C458,308.7,458,309.3,457.9,309.9z"/> -<path style="fill:#F7E3E5;" d="M456,199.2c0-1.4,0.6-2.2,2-2.2C458,198.4,457.3,199,456,199.2z"/> -<path style="fill:#F5CFD6;" d="M460,307c-0.1,0.3-0.3,0.6-0.4,0.9c-0.5,0-1,0.1-1.6,0.1C458.6,307.7,459.3,307.4,460,307z"/> -<path style="fill:#F7E3E5;" d="M289,305.2c-0.3,0.4-0.7,0.5-1,0C288.3,305.2,288.7,305.2,289,305.2z"/> -<path style="fill:#FFFFFF;" d="M243,387c0-7,0-14.1,0-21.1c0-1.6,0-3.3-1-4.7c2.9-2.3,4.3-0.9,6,1.8c3.8,6.3,8.2,12.1,16.7,11.8 - c1.9,1.8,1.1,4.1,1.1,6.1c0.1,4.5-0.9,9.5,7.2,9.5c-6.7-0.7-6.4,2.3-5.5,6.4c0.9,4,0.7,8.2,1.2,12.3c2.5,20.8,5,41.7,8.2,62.4 - c0.2,1.3,0.5,2.3,2,2.4c1.3,6,0.8,12.4,4.2,18c-3.8,6.2-6.7,6.4-12,1.4c-2.3-2.2-3.3-5.9-7-6.6c-2.2-20.1-4.8-40.2-6.6-60.3 - c-1.1-11.9-4.5-23-9.7-33.6C246.8,390.6,245.9,387.8,243,387z"/> -<path style="fill:#FFFFFF;" d="M280,363c0.3-1.1,0.6-2.2,1.6-2.8c4.3,8.1,6.9,9.6,13.3,7.9c0.2,26.1,1.2,52.1,4,79 - c2.9-3.7,1.6-7,2.2-10.1c0.3,0,0.5,0,0.8,0c0.1,13.9-1.8,27.8-1.1,41.7c0.1,2.5-0.3,4.9-1,7.3c-3.5,5.1-8.8,6-14.4,6 - c0.6-31.6,2-63.2,1.5-94.8c-0.1-6.1-1.9-12.1-6-17C280.4,374.4,282.2,368.6,280,363z"/> -<path style="fill:#5F5F5F;" d="M299.9,486c0.8-2.4,1.2-4.8,1-7.3c-0.8-13.9,1.1-27.8,1.1-41.7c1.8-13.9,1.8-27.9,2.6-41.8 - c0.4-6.4,0.9-12.9,1.3-19.3c0.6-2.5,0.3-6.3,3.1-6.7c3.3-0.5,3.8,3.4,5.2,5.8c2.6,4.3,2.5,9,2.3,14c-0.7,14-0.6,28-2.2,41.9 - c-2,17.5-3.7,35-6.6,52.4c-0.9,5.1,3.7,3.5,4.4,5.9c-3.4-0.6-6.2-0.2-6.6,4.1c-0.1,0.6-0.5,1.3-1.3,1.1c-1-0.2-1.8-0.8-1.9-2 - C301.9,490,301.7,487.7,299.9,486z"/> -<path style="fill:#5F5F5F;" d="M324.9,488.1c5.2-21.8,7-44.2,11.1-66.3c2.2-12.1,3.7-24.3,6.7-36.2c0.3-1.4,0-3.3,2.1-3.4 - c1.8,0,1.6,1.9,2.1,3c1.5,3.2,2.1,6.4,1.5,10.1c-2,13.9-3.6,27.9-5.3,41.9c-0.5,4,1,7.9,1.6,11.8c-2.1,0.1-1.1-2.5-2.3-2.9 - c-2.9,11.6-3.1,23.6-6.5,35c-1.4,4.5-3.4,8-9.2,6.3C326.2,487.2,325.5,487.8,324.9,488.1z"/> -<path style="fill:#5F5F5F;" d="M280.9,380.1c4.1,4.9,5.9,10.9,6,17c0.5,31.6-0.8,63.2-1.5,94.8c-0.8,0-1.5,0-2.3,0.1 - c-3.4-5.5-2.9-11.9-4.2-18c0-17.9,1.2-35.9-0.8-53.7c-1-8.9-1.8-17.9-1-26.8C277.6,388.9,276.6,383.7,280.9,380.1z"/> -<path style="fill:#110D0E;" d="M392.6,450.6c7.1-28.3,19.5-54.7,30.9-81.3c3.9-9,7.8-18,12.7-26.5c0.7-1.2,1.3-3.3,3.2-2.3 - c1.5,0.8,0.2,2.5-0.3,3.6c-15.2,35.7-30.5,71.4-45.7,107.1C393,451,392.8,450.8,392.6,450.6z"/> -<path style="fill:#110D0E;" d="M403.3,362.9c-6.5,32.8-17.8,64.3-27.7,96.7C372.7,444.3,395.1,376.5,403.3,362.9z"/> -<path style="fill:#110D0E;" d="M354.8,451.9c7.6-25.3,14.6-50.8,21.2-76.4c0.3-1.1,0.8-2.2,1.2-3.3c1.5,10.2,0,20-3.1,29.8 - c-7.2,23.1-14.5,46-22.7,68.8c-0.2,0.5-0.5,0.9-1.4,2.4c0.8-7.4,4.3-13,3.9-19.3c0.1-0.3,0.2-0.5,0.3-0.8 - C354.9,452.9,355,452.5,354.8,451.9z"/> -<path style="fill:#110D0E;" d="M448.3,352.3c-5.5,13.7-11,27.4-16.7,41c-6.1,14.7-12.4,29.3-18.7,44c-0.6,1.5-1.4,3-2.5,5.3 - c-0.7-3.4,1-5.2,1.7-7.1c10.5-26.9,19.7-54.3,33.5-79.8c0.7-1.3,1.5-2.6,2.2-3.9C448,352,448.1,352.1,448.3,352.3z"/> -<path style="fill:#BDBCBC;" d="M378.1,356.9c0-2.3-0.1-4.6-0.1-6.9C379.4,352.3,379.6,354.6,378.1,356.9z"/> -<path style="fill:#110D0E;" d="M450,348c0.1,1.7-0.7,3-1.7,4.3c-0.1-0.1-0.3-0.3-0.4-0.4C448.2,350.4,448.5,348.8,450,348L450,348z" - /> -<path style="fill:#110D0E;" d="M393.3,451.2c-0.4,0.9-0.8,1.8-1.3,2.7v0.1c0.2-1.1,0.3-2.3,0.5-3.4C392.8,450.8,393,451,393.3,451.2 - z"/> -<path style="fill:#5F5F5F;" d="M406.6,450.6c0,0.1,0.1,0.3,0.1,0.4c-0.2,0-0.4,0.1-0.6,0.1c0-0.1,0-0.3,0.1-0.4 - C406.3,450.6,406.5,450.6,406.6,450.6z"/> -<path style="fill:#110D0E;" d="M451.6,343.8c0,0.1,0.1,0.3,0.1,0.4c-0.1,0.5-0.2,0.5-0.4,0.1c0-0.1,0-0.3,0.1-0.4 - C451.4,343.9,451.5,343.9,451.6,343.8z"/> -<path style="fill:#110D0E;" d="M450,348c0.1-0.5,0.2-0.9,0.2-1.4c0.2,0.1,0.4,0.2,0.5,0.4C450.5,347.3,450.3,347.7,450,348L450,348z - "/> -<path style="fill:#110D0E;" d="M409.8,444c-0.2,0.2-0.4,0.3-0.6,0.4c0-0.3-0.1-0.6-0.1-0.9c0-0.1,0.2-0.3,0.3-0.4 - C409.6,443.5,409.7,443.8,409.8,444z"/> -<path style="fill:#5F5F5F;" d="M407.9,448.3c-0.1,0.1-0.3,0.2-0.4,0.3c-0.1-0.3-0.2-0.5-0.3-0.8c0-0.1,0.2-0.2,0.4-0.3 - C407.7,447.7,407.8,448,407.9,448.3z"/> -<path style="fill:#110D0E;" d="M392,454c-0.1,0.1-0.1,0.2-0.2,0.3C391.9,454.2,392,454.1,392,454C392.1,454,392,454,392,454z"/> -<path style="fill:#F7E3E5;" d="M306.9,116.8c0.5-2.2,2.6-2.7,3.9-4c6.5,0.6,12.5,2.7,18,6.2c1.1,0.6,2.2,1.2,1.9,2.5 - c-0.4,1.9-1.8,0.6-2.8,0.6c-4.2,0.1-8.4-1-12.6,1.3C311.6,125.6,307.9,122.4,306.9,116.8z"/> -<path style="fill:#F7E3E5;" d="M343.1,91.8c-0.1,0-0.2-0.1-0.3-0.1c0.1-0.1,0.3-0.3,0.4-0.4c0.1,0.1,0.2,0.2,0.3,0.3 - C343.3,91.6,343.2,91.7,343.1,91.8z"/> -<path style="fill:#E794A1;" d="M111.9,299.9c-0.9,0.8-1.4,2.3-3.1,2c-3.5-0.7-6.7-2.1-9.7-4c-0.7-0.6-1.3-1.2-2-1.8 - c-0.1-0.2-0.2-0.3-0.3-0.4c0.5-2.7,2.6-1.4,4.1-1.7C104.5,296.1,108.8,297,111.9,299.9z"/> -<path style="fill:#F7E3E5;" d="M101,294c-1.5,0.4-3.6-1-4.1,1.7c-2.9,0-4-1.9-4.7-4.4c0.4,0.2,0.8,0.5,1.2,0.7 - c0.1-0.4,0.5-0.9,0.3-1.2c-0.5-1-1.2-1.9-1.9-2.8c1.3-1.9,3.3-0.7,5.4-1.2c-3.4,2.3-1.6,3.3,0.4,3.8C99.7,291.2,101.3,291.5,101,294 - z"/> -<path style="fill:#E794A1;" d="M80.1,275.2c0-0.7-0.1-1.5-0.1-2.2c2.1,1.6,4.9,2.7,4,6.2c-1.1,0-0.7,0.9-0.8,1.5 - C82.1,278.8,81.1,277,80.1,275.2z"/> -<path style="fill:#110D0E;" d="M90,286c0,0.7,1.1,1.3,0.1,2c-2.3-1.2-3.3-3.5-4.8-5.4c0.3-0.2,0.5-0.5,0.8-0.7 - c0.9,0.8,1.8,1.5,2.7,2.3l-0.1-0.1C89.2,284.8,89.6,285.4,90,286z"/> -<path style="fill:#110D0E;" d="M91.9,288.1c0.6,0.9,1.3,1.8,1.9,2.8c0.1,0.2-0.2,0.8-0.3,1.2c-0.4-0.2-0.8-0.5-1.2-0.7 - c-0.7-1.1-1.5-2.3-2.2-3.4C90.8,287,91.3,288.1,91.9,288.1z"/> -<path style="fill:#F7E3E5;" d="M176,333c2.3-0.6,4.1,0.1,5.5,2C179.4,335.2,177.4,334.9,176,333z"/> -<path style="fill:#FFFFFF;" d="M187.5,338c2.2-0.3,4.1,0.3,5.5,2C190.8,340.2,189.1,339.3,187.5,338z"/> -<path style="fill:#F7E3E5;" d="M97.2,296.1c0.7,0.6,1.3,1.2,2,1.8C98,298,97,297.7,97.2,296.1z"/> -<path style="fill:#FFFFFF;" d="M193,340c0.9,0,1.7,0,2,1C194.1,341.1,193.3,341,193,340z"/> -<path style="fill:#F7E3E5;" d="M181.5,335c1.2-0.2,2.2,0.1,3,1C183.4,336.1,182.3,335.9,181.5,335z"/> -<path style="fill:#110D0E;" d="M83.9,280.9c0.8-1,1.3,0.2,2,0.2c0,0.3,0.1,0.5,0.1,0.8c-0.3,0.2-0.5,0.5-0.8,0.7 - C84.8,282.1,84.4,281.5,83.9,280.9z"/> -<path style="fill:#110D0E;" d="M83.2,280.7c0.1-0.6-0.4-1.4,0.8-1.5c0,0.6,1.1,1.2,0.1,1.9C83.8,280.9,83.5,280.8,83.2,280.7z"/> -<path style="fill:#BDBCBC;" d="M280.9,380.1c-4.3,3.6-3.4,8.8-3.8,13.4c-0.8,8.9,0,17.9,1,26.8c2.1,17.9,0.9,35.8,0.8,53.7 - c-1.5-0.1-1.8-1.1-2-2.4c-3.2-20.8-5.7-41.6-8.2-62.4c-0.5-4.1-0.3-8.3-1.2-12.3c-0.9-4.1-1.3-7.1,5.5-6.4c-8.1,0-7.1-5-7.2-9.5 - c0-2.1,0.7-4.4-1.1-6.1c6.4-2.2,11-6.8,15.2-11.8C282.2,368.6,280.4,374.4,280.9,380.1z"/> -<path style="fill:#BDBCBC;" d="M305.8,375.9c-0.4,6.4-0.9,12.9-1.3,19.3c-0.9,0.3-1.4,0.8-1.4,1.7c-0.6,13.4-1.3,26.7-1.9,40.1 - c-0.6,3,0.7,6.3-2.2,10.1c-2.8-26.9-3.7-52.9-4-79c3.9-2.8,5.6-7.1,7.9-11c1.7,4.1,1.7,8.5,2.1,12.8 - C305.2,371.8,304.3,374,305.8,375.9z"/> -<path style="fill:#F7E3E5;" d="M86.1,281.9c0-0.3-0.1-0.5-0.1-0.8c0.2-0.7,0.1-1.8,1.3-1.3c2.2,0.8,1.7,2.7,1.5,4.4 - C87.9,283.5,87,282.7,86.1,281.9z"/> -<path style="fill:#F7E3E5;" d="M90,286c-0.4-0.6-0.8-1.2-1.2-1.8C90,284.2,91.6,284.1,90,286z"/> -<path style="fill:#E794A1;" d="M80,273c-1.5-0.3-1.6-1.6-1.8-2.8C79.4,270.7,80,271.7,80,273z"/> -<path style="fill:#F7E3E5;" d="M144,315c-0.3-0.3-0.7-0.6-1-0.9C143.3,314.3,143.7,314.7,144,315z"/> -<path style="fill:#110D0E;" d="M484.4,307.4c0.6-1.4,1.1-2.8,2.5-3.5c0.1,0.1,0.3,0.3,0.4,0.4c-0.7,1.3-1.4,2.6-2.1,3.9 - C485,307.9,484.7,307.7,484.4,307.4z"/> -<path style="fill:#110D0E;" d="M487.9,302.9c-0.2-1,0.1-1.6,1-2l0.2,0.2C489.1,302,488.9,302.7,487.9,302.9L487.9,302.9z"/> -<path style="fill:#110D0E;" d="M488.9,300.9c0.2-0.2,0.3-0.5,0.5-0.7c0.5,0.5,0.3,0.8-0.3,0.9C489.2,301.2,488.9,300.9,488.9,300.9z - "/> -<path style="fill:#110D0E;" d="M486.9,303.9c0.2-0.5,0.3-1.1,1.1-0.9l0.1,0.1c-0.2,0.4-0.5,0.9-0.7,1.3 - C487.2,304.2,487,304,486.9,303.9z"/> -<path style="fill:#F7E3E5;" d="M115.9,209.5c2-5.7,6.1-10.2,8.7-15.5c0.7-1.3,1.8-2.4,1.4-4.1l0,0c0.3-0.3,0.6-0.5,0.9-0.8 - c2.4-2.6,4.2-0.8,5.7,1c2.9,3.2,5.6,6.5,8.3,9.8l0,0c-1.6-0.4-3.2-0.7-4.8-1.1c-0.9-0.2-2.6-0.7-2.7-0.5c-2,3.8-7.1,3.8-8.8,7.1 - c-1.6,3.1-1.1,7.1,0.3,10.6c1.3,3.4,2.8,6.7,3.7,10.3C121.4,222.9,115.8,218.3,115.9,209.5z"/> -<path style="fill:#F5CFD6;" d="M100.9,230.8c0.1-0.6,0.2-1.3,0.3-1.9c1.3,1.4,2,3.1,1.9,5L103,234 - C100.9,233.9,101,232.3,100.9,230.8z"/> -<path style="fill:#F5CFD6;" d="M103,234c1,0.2,1.9,0.5,1.7,1.8c-0.1,0.3-0.7,0.8-0.9,0.7C102.6,236.1,103,235,103,234L103,234z"/> -<path style="fill:#F7E3E5;" d="M141,200c0.7,0.1,1.6,0.1,1.5,1.2c0,0.1-0.2,0.3-0.3,0.3C141.1,201.6,141.1,200.7,141,200L141,200z" - /> -<path style="fill:#E794A1;" d="M126.9,189.2c-0.3,0.3-0.6,0.5-0.9,0.8C126.3,189.8,126.6,189.5,126.9,189.2z"/> -<path style="fill:#F7E3E5;" d="M400,184.2c1.3-0.1,2.6-0.2,4-0.2c2.5,3.2,6.5,2.7,9.8,3.8c2.5,0.8,4.7,2.3,7.3,2.9 - c0.9,0.2,1.9,0.9,1.6,2.1s-1.4,1.2-2.4,1.2c-7.1,0.4-14.2-0.5-21.3-1.4c-7.7-1-15.4-2.3-23.1-2.4c-6.4,0-12.4-1.8-18.7-2.4 - c-9.1-0.9-18.1-3.4-27.2-5.3c-1.1-0.2-2.1-0.9-3.1-1.4c1.3-0.2,2.8,0.4,3.9-0.9c17.3,2.5,34.8,3.8,52.3,4.7 - c5.3,0.3,10.6,0.1,15.8-0.6C399.3,184.7,399.7,184.6,400,184.2z"/> -<path style="fill:#F7E3E5;" d="M185,317c-2-0.7-4-1.5-6-2.2C181.6,314,184,313.8,185,317L185,317z"/> -<path style="fill:#F7E3E5;" d="M227.3,110c-0.1-1-0.2-2-0.3-3C228.3,107.9,228.2,108.9,227.3,110z"/> -<path style="fill:#F5CFD6;" d="M400,184.2c-0.3,0.4-0.7,0.5-1,0C399.3,184.2,399.7,184.2,400,184.2z"/> -<path style="fill:#7A7A7A;" d="M354.8,451.9c0.2,0.6,0,1.1-0.6,1.3C354,452.5,354.3,452.1,354.8,451.9z"/> -<path style="fill:#F7E3E5;" d="M301.2,437c0.6-13.4,1.3-26.7,1.9-40.1c0-1,0.6-1.5,1.4-1.7c-0.8,13.9-0.8,27.9-2.6,41.8 - C301.7,437,301.4,437,301.2,437z"/> -</svg> +<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="612px" height="537px" viewBox="0 0 612 537" style="enable-background:new 0 0 612 537;" xml:space="preserve">
+<path style="fill:#FFFFFF;" d="M71.3,277.7c-1.9,3.4-2.2,7.6-1.4,12.6c9.1,23.9,33.6,61.6,48.5,100.3c14.8,38.2,18.8,57.5,32.1,75.8
+ s59.7,30.3,59.7,30.3l59.2,11.9V309C269.5,309,77.4,266.9,71.3,277.7z"/>
+<polygon style="fill:#FFFFFF;" points="310.5,35.1 305.1,40.5 299.3,44.3 242.7,84 278.2,108.5 328.5,109.7 310,72.4 310,54 "/>
+<path style="fill:#FFFFFF;" d="M133,147L133,147c-0.4,0.4-0.7,0.7-1,1l0,0c-0.8,0-1.5,0.2-2,1l0,0c-0.3,0.3-0.7,0.6-1,1
+ c-2.6,0.3-3.9,2.4-5.4,4.1c-6,6.8-12.2,13.3-19.2,19.2c-10.4,8.8-19,19.4-27.5,29.8c-3.6,4.3-7.4,8.7-9.8,13.9c-4,0.6-6.4,3.9-9.5,6
+ c-1.8,1.3-1.6,2.9-0.4,4.7c2,2.9,3.4,6.3,2.7,9.8c-0.8,3.8,0.3,6.7,2.8,9.4c0.4,0.3,0.9,0.7,1.3,1l0,0c0,0.9,0,1.7,1,2l0,0
+ c0,0.9,0.1,1.7,1,2l0,0c0,0.9,0.2,1.6,1,2l0,0c0.3,0.4,0.7,0.8,1,1.1c1.7,2.6,3.4,5.2,5,7.8c0,2.7,0,5.4,0,8.1
+ c-2.4,3.8-2,7.8-0.5,11.8c0.5,1.4,0.4,2.9,0.6,4.4c0.8,7.4,4.2,13.4,10.4,17.1c4.8,2.9,7.8,5.8,6.6,11.6c-0.2,0.8,0,1.7,0,2.5
+ c-0.2,3.2,1.3,4.5,4.5,4.5c4.8,0,9.6,0,14.3-1.6c1.5-0.5,3.5-1.3,4.6,0.2c0.9,1.2-0.9,2.3-1.4,3.4c-1.8,3.3-0.7,6.3,1.5,8.7
+ c2.3,2.5,5.1,1.2,7.2-0.4c2.9-2.2,4.1-0.6,5.2,1.8c3.5,7.4,7.5,8.6,14.6,4.7c2.6-1.4,4.9-3.7,8.1-4.2c0.6,2,0,3.5-0.4,5.2
+ c-1.9,8.8,1.3,11.9,10.1,9.7c1.1-0.3,2.2-0.7,3.3-1.1c5.1-1.6,9.7-4.4,14.5-6.7c2.8-1.4,4.3-0.9,4.9,2.3c0.6,3.3,1.5,6.5,3.1,9.4
+ c1.3,2.4,2.6,4.9,5.9,4.3c3.5-0.7,3.3-3.9,3.6-6.3c0.4-3.8-0.3-7.8,1.2-11.5c4.7,0.2,8.4,3.5,13,4.1c3.4,0.4,5.6,2,5.8,5.6
+ c0.1,1.8,0.1,3.6,0.2,5.5c0.6,12.3,2.1,13.6,14,11.6c-1.9,1.6-1.9,3.3-1.3,5.7c2.8,12.1,6.3,24,10,35.8c3.1,9.8,5.3,19.8,9.3,29.3
+ l0,0c0.3,0.7,0.7,1.3,1,2l0,0c0.3,1.7-0.8,3.9,1.9,4.5c1.3,10,2.9,20,3.9,30c0.5,5.4,3.5,10.5,2,16.1c-2.2,3.3-4.6,2.7-6.7,0.2
+ c-2.5-3-4.7-6.2-7-9.4c-0.5-2.2-1.8-4.1-2.2-6.5c-2.3-15.6-3.3-31.4-6.9-46.8c-4-16.8-7.2-33.7-14.4-49.6c-0.4-0.8-0.1-2.2-1.4-2.3
+ c-1.1-0.1-1.7,1-1.9,2c-1,5.3-3.2,10.5-1.7,16.2c2.6,10.3,5.1,20.6,6.1,31.2c1.1,11.3,6.7,21.6,8,32.8c1,8.4,3.8,16.1,7.3,23.7
+ c0.8,1.8,2.2,3.4,1.8,5.5c-0.7,1.2-1.7,2.2-1.7,3.7c-5.1,6-7.8,5.8-12.2-0.9c-2.8-4.3-4.3-9.2-5.8-14c0.2-1.7,0-3.3-0.4-4.9
+ c-6.3-25.2-12.4-50.5-20.2-75.4c-2.1-6.7-3.9-13.5-7.7-19.8c-2,1.9-2.3,3.6-1.9,5.8c2.8,18.5,7.7,36.6,12.3,54.7
+ c2.4,9.6,5.8,19,7.3,28.9c-1,4.5,1.4,8.7,0.8,13.2c-0.3,2,0.1,4.4-1.8,5.3c-2.2,1-3.4-1.3-4.8-2.6c-0.9-0.9-1.7-1.9-2.6-3
+ c0.8,7.9,6.9,16.3,13.4,17.4c7.5,1.3,14.5,4.1,21.8,6.1c1.9,0.6,3.7,1.3,5.7,1.8c7.5,1.9,14.6,6.5,22.2,6.2
+ c19-0.7,37.2,4.1,55.7,6.6c17.9,2.4,35.5,1.8,53.1-0.6c18.7-2.5,37.2-6.5,56.3-5.9c10,0.3,20.3-1.1,29.9-4.2
+ c12.6-4.2,24.7-9.9,37-15.1c6.3-2.6,7.4-10,1.5-13.6c-6.2-3.8-8.5-9-9.5-15.8c-0.7-5.3-3.3-10.3-9.2-10.9c-3.7-0.4-6.1-2.1-8.7-4
+ c-3.5-2.5-6.9-5.1-10.3-7.8c-6.9-5.6-13.7-11.5-24.3-8.6c14.7-35.1,27.7-70.6,45.5-103.9c5.9-8,10.3-16.8,15.1-25.4
+ c1.4-2.5,3.8-4.6,3.6-7.8c1.6-2.5,3.1-5.1,4.7-7.6c1.6-0.6,1.8-1.6,0.8-2.9c1.5-0.9,0.8-1.8,0-2.7c-2.1-2.4-4.1-4.9-6.2-7.3
+ c-2-3.6-0.7-6.7,1.3-9.7c1.5-2.4,2.9-4.8,4.1-7.4c1.6-3.3,0.4-5-2.8-5.9c-4.5-1.3-8.9-2.6-13.4-3.9c-2.3-0.7-4.9-1.5-5-4.1
+ c-0.2-4.2-2.5-7.1-4.7-10.2c-0.6-1.5-1.5-2.8-3.2-3c1.6-6.3-3.2-9.2-6.7-12.8c-2.4-2.5-1.7-5.6-1.2-8.5c0.6-3.6,1.8-7,2.8-10.6
+ c1-1.7,2.4-3.3,0.2-6.4c-0.2,2.3-0.3,3.4-0.3,4.5c-0.3,0-0.7,0-1,0c0-1.4,0.5-2.9-0.8-4.1c0-0.4-0.1-0.7-0.1-1.1
+ c-0.2-1.7,0.6-3.5-0.8-5l-0.1-0.2c-0.2-2.9,0.4-6.2-3-7.9c-0.4,0-0.7,0-1.1,0l0,0c-0.5-4.2-5-5.1-7-8c-0.5-7.2-6.1-10.4-11.3-13.7
+ c-8-5.1-17.8-6.7-25.5-12.4c-1.3-1.4-2.6-2.9-4.1-4.3c-8.6-8.4-17.6-16.7-23.7-27.2c-4.3-7.4-11-9.3-18.5-10.6c-1-0.6-2-1.3-3-1.9
+ c-1.1-2.3-3.3-3.2-5.4-4.2c-5.5-2.7-11.4-4.3-16.9-7.1c-9.6-5-17.8-12.8-28.9-14.9c-1.7-0.3-2.6-1.9-2.8-3.8
+ c-1.3-4.3-1.7-8.7-0.1-13.1c0.5-9.6,0.5-19.2,6.8-27.3c0.4-0.5,0.6-1.2,0.9-1.8c0.4-0.8,0.6-1.7-0.2-2.2s-1.6,0.1-2,0.9
+ c-1.2,2.1-3.1,3.9-3.5,6.5c-0.3,0.3-0.6,0.7-0.9,1l0,0c-1.4,0-1.9,1.1-2.5,2.1c-3,4.9-3.4,10.4-3.3,15.8c0.2,7.9-1.5,15.3-4.2,22.7
+ c-0.7,2-2,2.3-3.8,2.5c-5.2,0.7-10.5,1.2-15.6,2.3c-6.2,1.3-8.3,5.6-5.9,11.5c0.7,1.9,1.1,4.7,3.7,4.8c2.6,0.2,4.6-2.2,5.1-4.1
+ c1.9-7,6.6-8.3,12.9-7.6c1.5,0.2,3,0,4.5,0c9.8,0.2,14.9,5.5,15.3,15.4c0.1,3.4-0.8,4.8-4.4,4.6c-7-0.3-14-0.1-21,0
+ c-1.6,0-3.4-0.5-4.7,1c-0.7,0-1.3,0-2,0c-11.4-0.9-19.9-9.3-30.7-12c-1.1-0.3-1.7-1.9-0.8-2.3c3.9-1.6,1.7-4.3,1.5-6.7
+ c-0.1-1.6-0.3-3,1.7-4.2c6.7-4.2,13.7-7.8,19.5-13.7c5.9-5.8,13.5-9.9,19.2-16.2c1.1-1.2,3.2-2.1,1.8-4.6
+ c-11.6,9.3-23.5,18-37.4,23.5c-4.1,0.7-7.9,2.2-11.1,5.1c-3,0-5.7,1.3-7.8,2.9c-8.4,6.4-17.6,10.9-27.4,14.5
+ c-4.9,1.8-9.9,3.5-14.5,5.8c-7.8,3.9-12.8,10.9-18.2,17.3c-4.3,5.1-8.9,10.4-14.7,13.2c-7.5,3.5-15,7-22.4,10.7
+ c-4.3,2.2-9.1,4-11.8,8.6C133.6,146.2,133.3,146.6,133,147z"/>
+<path style="fill:#FFFFFF;" d="M156,405c-0.1-0.4-0.3-0.9-0.4-1.3c-0.1,0.1-0.4,0.2-0.4,0.3C155.5,404.3,155.7,404.7,156,405
+ c0.1,0.8,0.2,1.5,0.4,2.2c0.1-0.1,0.3-0.1,0.4-0.3C157.1,406.1,156.7,405.4,156,405z"/>
+<path style="fill:#FFFFFF;" d="M158.3,363.3c-0.6,13.8,30.6,108,37.7,113.3C184.1,438.5,177.3,399.2,158.3,363.3z"/>
+<path style="fill:#FFFFFF;" d="M160,416.7c2.4,10.3,6.3,20.3,7.5,30.7c1,8.3,3.7,15.7,7.3,23c0.7,1.4,1,3.9,3,3.2
+ c2.1-0.7,1.2-3.2,0.9-4.9C175.2,450.5,166,434.2,160,416.7z"/>
+<path style="fill:#FFFFFF;" d="M154.9,440.7c1.1,4.6-1.3,9.5,1.6,13.9c4.7,7.2,6.8,9.6,9.3,10.6
+ C161.3,457.3,159.4,448.5,154.9,440.7z"/>
+<path style="fill:#FFFFFF;" d="M153.4,398.4c0.1-0.3,0.1-0.5,0.2-0.7c-0.1,0-0.2,0.1-0.4,0.1C153.3,398,153.3,398.1,153.4,398.4z"/>
+<path style="fill:#FFFFFF;" d="M154.4,401.3c0.4,0,0.5-0.2,0.2-0.5c0,0-0.2,0.1-0.4,0.1C154.3,401,154.3,401.1,154.4,401.3z"/>
+<path style="fill:#FFFFFF;" d="M157.8,409.9c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1,0.1-0.2,0.2-0.3,0.3c0.1,0.1,0.3,0.3,0.4,0.4
+ C157.7,410.2,157.7,410,157.8,409.9z"/>
+<path style="fill:#F7E3E5;" d="M261.9,67.9c13.9-5.5,25.8-14.2,37.4-23.5c1.4,2.5-0.7,3.4-1.8,4.6c-5.7,6.3-13.4,10.4-19.2,16.2
+ c-5.9,5.9-12.8,9.5-19.5,13.7c-2,1.2-1.8,2.6-1.7,4.2c0.2,2.4,2.4,5.1-1.5,6.7c-0.9,0.4-0.3,2,0.8,2.3c10.8,2.7,19.3,11.1,30.7,12
+ c-0.3,2.4,1.2,2.7,3.1,3.3c1.7,0.6,4.5-0.3,5,2.7c-0.5,2.7,1.4,3.9,3.1,5.2c2.2,1.7,4.5,3.3,6.8,4.9c-0.1,2.6-1.6,2.1-3.5,1.9
+ c-1.9-0.2-3.9-2.1-6.7,0.2c7.9,2.4,15.2,4.6,22.5,6.7c17.3,5,35,8.2,52.5,12.1c6,1.4,7.6,3.4,8.1,9.8c-15.4-0.4-30.7-2.2-46.1-0.1
+ c-0.4-0.5-0.7-0.3-0.9,0.2c-0.1,2,1.6,2.4,2.9,2.8c10.9,3.4,21.9,6.1,33.1,8.2c0.5,0.8,1.2,0.9,2.1,0.8h0.1
+ c-5.6,1.7-11.7,1.1-17.1,3.7c1.1,0.5,1.3,0.7,0.9,1.5c-1.6-0.2-3.3-0.2-4.9-0.5c-13-2.7-25.8-5.7-38.9-7.7c-3-0.5-7.4-2.4-8.3,0.4
+ c-0.7,2.2,4.5,2.9,7.3,3.6c16.1,4.2,32.6,5.5,48.9,8.3c1.4,5.3,7.2,3,10,5.8c-13.3,0.4-26.6,0.8-39.8,1.2c0.3-0.9,2.1-2-0.8-2.3
+ c-5.2-0.5-10.5-1.3-15.6-2.6c-20-4.9-39.4-11.4-58.1-20.1c-11.5-5.3-23.2-10.4-31.7-20.3c-1.2-3-2.7-6-3.6-9.1
+ c-1.4-4.7,0.7-6.9,5.2-5.4c3.9,1.3,4.7-0.3,4.8-3.5c1.5,0,3,0.1,4.3,0.9c6.5,4,13,7.9,19.5,11.8c7.4,4.3,14.6,8.8,23.2,10.7
+ c15.3,3.3,30.6,7.2,45.9,10.4c2.6,0.5,5.5,2.5,9.1-0.1c-8.9-3.7-17.6-6-25.9-9.5c-10.5-4.4-20.4-8.9-27.1-18.9
+ c-2.3-3.4-5.8-6.2-10.5-7.8c-8.8-2.9-17.6-5.9-25.5-10.9c-5.2-3.3-9.9-3-14.9,0.7c-1.4,1-2.5,2.2-2.4,4.1c-2.4,2.8-6.1,4.4-8,7.8
+ c-3-2.6-5.5-0.1-8.3,0.6c-4.4,1.3-7.1,5.2-11.2,7c0.3-1.6,0.6-3.2,1.5-4.7c2.4-4.1,2.4-4.9,1.2-10.1c-5,5.4-8.7,11.7-12.4,17.9
+ c-1.3,2.1-2.3,4.6-1.8,7.1c1.7,7.9,0.2,16.2,2.8,24c-1,0.6-1.4,1.9-2.8,1.9c-4.2,0.1-3.5,1.9-1.5,4.2c1,1.1,1.7,2.4,2.8,3.5
+ c9.7,9.7,22.1,15.4,33.7,22.4c1.6,0.9,3.3,1.8,5.3,1.3c-0.1-1.4-1.1-1.6-1.8-1.9c-8.7-4-16.3-9.5-23.5-15.8
+ c-1.2-1.1-2.2-2.6-4.1-2.6c-2.8-0.1-3.5-2.2-4.1-4.3c1.2-1.7-0.3-2.6-1.2-3.7l0.1,0.1c-0.9-3.7-2.1-7.3-2.5-11.1
+ c-0.6-5.8,0.6-11.2,5.3-16.1c1.4,7.4,3.1,13.9,9.2,18.1l0,0c0.1,1.9,1.3,2.8,3,3l0,0c0.3,0.3,0.7,0.7,1,1c3.3,1.6,5.1,4.9,8.2,6.9
+ c10.2,6.5,20,13.5,30.2,19.9c5.5,3.4,11.2,6.8,18.1,7.8c-0.1-2.3-3-1.9-3-4.3c4.4-1,9.2,0.5,13.6-0.9c2.7-0.8,5.1-0.2,7.7,0.9
+ c9.5,4.3,18,10.4,27.9,14c5.9,2.1,11.3,5.4,17.8,5.8c-8-7-16.3-13.5-25.8-18.3c-8.4-4.3-16.2-9.9-24.9-13.4
+ c-9.1-3.7-19.1-5.3-28.5-8.4c-6.9-2.3-11.7-7.5-16.5-13c2.2-1.1,3.1,0.1,4.3,0.6c6.5,2.8,12.5,7.1,19.6,8.2
+ c23.2,3.5,44.9,12.4,67.4,18.2c0,1.4,0.9,2.1,2.1,2.5c6.1,2.1,12,4.8,18.5,5.5c10.9,1.2,21.2,5.8,32.3,6.3c0.4,0,0.7,1,1.1,1.5
+ c-0.8,0.2-1.4,0.6-2,1.3c-5.1,6.5-7.1,6.6-13.9,1.7c-1.3-0.9-2.7-3.3-4.5-1.6c-1.5,1.5-0.1,3.4,0.6,5c2.6,5.6,7.2,9.8,10.9,14.6
+ c-2,1.9-4.6,1.4-6.6,0.9c-7.5-2.1-15.3-2.7-22.8-4.3c-20.6-4.4-41.7-6.2-62.2-11.4c-1.5-0.4-3.3-0.7-4.6,1c-8-3-16-6-24-9
+ c2.5,3,5.9,4.3,9.2,5.7c33.4,14.2,67.9,25.1,103.4,32.6c1.7,0.4,5-0.4,5,2c0,2.7-3.3,2.8-5.4,3.4c-1.1,0.4-2.3,0.2-3.5,0.2
+ c-10.6,0.7-20.8-1.3-31.1-3.7c-15.9-3.8-31.1-9.5-46.6-14.6c-1.4-0.9-2.7-2-4.7-1.4c1.3,1.3,2.8,1.6,4.2,2
+ c24.1,13.9,50.8,19.9,77.6,25.5c11.8,2.4,23.8,4.1,35.7,6.1c0.3,2.3,2.4,2.3,3.9,3.1c4.1,2.1,9,2.8,12,6.8c-0.7,0-1.3,0-2,0
+ c-0.9-1-2-0.8-3.1-0.7c-6.1-0.4-12.2-0.8-18.3-1.2c0,0.3-0.1,0.6-0.1,0.9c11.8,2.7,23.7,5.5,35.5,8.2c-1.7,1.7-3.7,1-5.5,0.7
+ c-5.5-1.1-10.6-0.1-15.5,2.4c-1.6-0.2-3.3-0.2-4.9-0.5c-14.2-2.2-28.4-4.5-42.6-6.6c-15.5-2.3-31.2-3.5-46.8-4.7
+ c-1.4-0.1-3-0.6-4.1,1.2c2.7,1.3,5.4,2.6,8.4,2.7c0.4,0.3,0.7,0.5,1.1,0.8c0.6,0.1,1.2,0.1,1.9,0.2c0,1.7,0.7,2.4,2.5,3
+ c4.2,1.4,8.3,3.2,11.7,6.3c2.9,2.7,2.7,4.4-1,6c-10.2,4.4-20.9,7.2-31.4,10.5c-4.1,1.3-8,4-12.8,3.1c-0.1-2,0.3-4-0.5-5.9
+ c-1-2.3-2.4-3.6-5-2.7c-9.7,3.3-19.3,6.9-29.1,10.2c-13.5,4.5-27.1,7.5-41.6,6.3c0.5-0.4,0.7-0.7,1-0.7c15.6-0.6,29.3-7.1,43.2-13.1
+ c2.9-1.3,4.7-2.9,2.7-6.8c-7.5-15.1-14.8-30.3-25.6-43.3c-7-8.4-13.3-17.3-20.9-25.2c-2.6-2.7-4.7-5.8-7-8.7c0.3-0.3,0.6-0.5,1-0.8
+ c6.6,5.2,13.3,10.3,19.9,15.5c1.4,1.1,2.8,3.1,4.7,1.6c2-1.6,3.6-0.3,5,0.4c4.9,2.5,9.5,5.3,14.4,7.9c3.7,1.9,7.5,3.6,11.2,5.3
+ c-7.7-7.8-17.8-11.9-25.5-19.5c20.4,11.5,40.7,22.9,63.5,28.9c-5.4-3.1-11-5.6-16.6-8.4c-12.5-6.2-25.1-12.1-37.1-19.4
+ c-17.1-10.3-34-20.7-48.8-34.1c-7.8-7.1-15.7-14.4-17.6-25.7c-0.4-2.5-2.1-4.1-4-4.6c-3.9-0.9-7.2-3.2-10.9-4.4
+ c-1.8-0.6-3.3-0.5-4.6,0.7c-1.5,1.4-0.1,2.8,0.4,4.1c3.9,8.8,7.2,17.8,11.9,26.2c6.6,12,13,24.2,23,33.8c5.3,5.1,9.8,10.7,13.8,16.8
+ c8,12.2,14,25.5,21.6,37.9c0.4,0.7,0.8,1.6,0,2.3c-0.8,0.7-1.6,0-2.1-0.6c-8.7-9.2-19-17-24.6-29c-4.4-9.4-9.1-18.7-15.1-27.2
+ c-2.1-3-3-6.6-5.8-9.2c-1.5-1.3-2.5-1.5-3.5,0.3c-0.6,1.1,0.1,3.1-1.9,3c-1.8-0.1-1.8-2.1-2.5-3.4c-5.3-10.1-10.3-20.4-17.6-29.3
+ c-0.9-1.1-1.4-2.6-2.9-2c-8.4,3-19.3,2.1-22.5,13.7c-0.3,1.2-1,2.3-2.4,1.8c-1.3-0.5-2.4-1.5-2.3-3c0.1-0.9,0.8-1.8,1.2-2.6
+ c0.9-1.7,0.7-3.2-0.6-4.6c-1.4-1.5-2.7-1.2-4.5-0.6c-5.3,2-8.5,6.7-13.1,9.6c-1.3,0.8-2.8,2.2-1.8,4.2c1,1.8,2.8,1.7,4.4,1.3
+ c3.7-0.8,7.4-1.8,11.1-2.6c3.4-0.8,5.6,0.1,5.1,4.2c-1.4,1.4-2.7,2.9-4.1,4.3c-3.1,3.2-6.4,6.3-6.1,11.4c-4.4-1.3-8.8-2.8-12.1-6.2
+ c0.4-1.6,0.7-3.2,1.1-4.8c0.5-1.9-0.3-3.3-1.8-4.3c-1.9-1.2-2.7,0.7-3.5,1.7c-5.2,5.9-7.9,12.9-8.8,20.7c-3.1,0.7-2,4-3.5,5.7
+ c-3.3,3.8-2.3,7.7-0.4,12c3.7,8.3,8.9,15.6,14.4,22.5c4.5,5.7,9.7,11,16.1,15.3c5.3,3.5,11,6.6,15.4,11.5c1.7,1.9,2.4,3.3,0.4,5.3
+ c1.9,4.4,5.9,6,9.9,7.6l0.1,0.1c3.6,4.3,8.4,7,13,9.8c1.8,5,3,11,8.7,12.5c7.4,2,14.2,5.4,21.8,6.7c8,1.4,16.1,2,24,3.6
+ c2.7,0.6,5.9,1.9,10.3,0.2c-11.6-2.9-21-7.8-30.8-11.9l0,0c4.7-0.6,8.9,1.3,13.1,2.6c17.2,5.3,34.7,6.4,52.6,4.4
+ c14.3-1.6,28.4-4.1,42.8-5.3c3.3-0.3,7-0.1,10.3-1.4c1.6-0.6,3.4-1.1,3.8-2.8c0.5-2-1.4-2.8-2.8-3.6c-3.9-2-7.9-4-11.8-5.9
+ c0.9-0.9,2.1-0.8,3.3-0.9c9.3-1.3,18.6-2.8,28-3.7c11.7-1.1,23.1-4,34.9-4.2c7.4,3.5,13.1,9,16.9,16.1c2.8,5.2,0.4,8.3-5.4,9
+ c-6.1,0.7-12.2,0.6-18.3,1.1c-13,1.1-25.9,2.7-38.9,3.7c-13.6,1.1-27,2.2-39.7,7.7c-4.7,2-9.6,3.4-14.5,4.8
+ c-7,2.1-14.1,3.9-21.2,5.9c-1.6-0.4-3-1.1-4.7-1.4c-10.5-1.5-20.9-3.4-31.4-4.9c-7.8-1.1-15-3.9-22.5-6.2c-1.1-0.3-3.3-2.4-3.2,1.1
+ c-7.8-0.7-15.1-2.5-21.1-7.9c1.6-0.7,2.2-1.9,1.9-3.6c-0.1-0.8-0.6-1.2-1.4-1c-5.4,1.8-7.8-2.1-10.5-5.4c1.3,0,2.7,0,4,0
+ c0.4,0.4,0.8,0.9,1.2,1.3c0.1-0.2,0.3-0.4,0.4-0.6c-0.5-0.2-1.1-0.5-1.6-0.7c-1-1.1-1.8-2.4-2.9-3.4c-10.9-9.4-22.2-18.4-33.1-27.9
+ c-14.4-12.5-29.3-24.4-44-36.5c-4.4-3.6-6.7-7.6-6.1-13.6c0.6-5.8,1.6-11.4,4.1-16.7c2.4-5.2,6.3-9.6,9.8-13.9
+ c8.6-10.4,17.2-21,27.5-29.8c7-5.9,13.2-12.4,19.2-19.2c1.5-1.7,2.8-3.9,5.4-4.1c0.3-0.3,0.7-0.6,1-1l0,0c0.8,0,1.6-0.1,2-1l0,0
+ c0.3-0.3,0.6-0.7,1-1l0,0c0.3-0.4,0.6-0.8,1-1.2c2.7-4.6,7.4-6.4,11.8-8.6c7.4-3.7,14.9-7.2,22.4-10.7c5.8-2.8,10.4-8.1,14.7-13.2
+ c5.5-6.4,10.5-13.4,18.2-17.3c4.7-2.3,9.6-4,14.5-5.8c9.8-3.5,19-8.1,27.4-14.5c2.1-1.6,4.9-2.9,7.8-2.9c1.1,0,2.6,0.5,3.3,0
+ C256.7,71.2,261.3,72.5,261.9,67.9z"/>
+<path style="fill:#E794A1;" d="M419,270c-11.8-2.7-23.7-5.5-35.5-8.2c0-0.3,0.1-0.6,0.1-0.9c6.1,0.4,12.2,0.8,18.3,1.2
+ c0.9,0.9,1.9,0.9,3.1,0.7c0.7,0,1.3,0,2,0.1c10.9,0.2,21.9,1.6,32.7,0.1c10.9-1.5,19.3-7.7,25.7-16.2c2.4-3.2,1.6-7.6-1.6-9.9
+ c-3.2-2.2-5.5,1.6-8,3.2c-0.9,0.6-1.4,1.8-2,2.8c-5.2,8.4-12.9,11.9-22.5,12.3c-13.5,0.6-26.8-1.5-40.2-2.1
+ c-11.9-2-23.9-3.7-35.7-6.1c-26.8-5.5-53.5-11.6-77.6-25.5c0.2-0.2,0.4-0.4,0.5-0.7c15.4,5.1,30.7,10.8,46.6,14.6
+ c10.2,2.4,20.5,4.4,31.1,3.7c1.2-0.1,2.4,0.1,3.5-0.2c2.1-0.7,5.4-0.8,5.4-3.4c0-2.4-3.3-1.7-5-2c-35.5-7.5-70-18.4-103.4-32.6
+ c-3.3-1.4-6.7-2.7-9.2-5.7c8,3,16,6,24,9c13.7,6.2,28,10.2,42.4,14.1c16.6,4.6,33.4,8.5,50.5,11c1.3,0.2,2.6,1.1,3.2-1
+ c1.1-3.5,2.8-6.9,0-10.3c-3.7-4.9-8.3-9-10.9-14.6c-0.7-1.6-2.2-3.6-0.6-5c1.8-1.8,3.2,0.6,4.5,1.6c6.8,4.9,8.8,4.8,13.9-1.7
+ c0.6-0.7,1.2-1.1,2-1.3c1.8,0.3,3.7,0.3,5.3,1c13.3,4.9,26.7,9.8,39.9,15c13,5,28.3-0.8,34.9-13.5c1.2-0.2,2-0.9,2-2.2v0.1
+ c2.6-0.8,2.8-3.1,2.9-5.2c0.1-2.3-0.3-4.7,0-6.9c0.3-2.9,1.4,0.2,2.1-0.1l0.1,0.2c0.1,1.7-0.7,3.5,0.8,5c0,0.4,0.1,0.7,0.1,1.1
+ c0,1.4-0.5,2.9,0.8,4.1c0.3,0,0.7,0,1,0c0,0.6,0.1,1.3,0.1,1.9c-0.9,3.5-2.1,7-2.8,10.6c-0.5,2.9-1.2,6,1.2,8.5
+ c3.5,3.6,8.3,6.5,6.7,12.8c0.6,1.6,1.5,2.8,3.2,3c2.1,3.1,4.5,6.1,4.7,10.2c0.1,2.7,2.7,3.5,5,4.1c4.5,1.3,8.9,2.6,13.4,3.9
+ c3.2,0.9,4.4,2.6,2.8,5.9c-1.2,2.6-2.5,5-4.1,7.4c-2,3-3.3,6.2-1.3,9.7c-3.6,2-7.1,3.9-10.7,5.9c-0.4,0.3-0.9,0.7-1.3,1
+ c-4,3.1-4.9,7.4-5.1,12.1c-2.1-0.8-4.1-1.6-6.2-2.4c1.4,2.3,3.4,4,4.4,6.4c-5,4.1-10.5,7.7-16.1,11c-0.7,0.3-1.3,0.7-2,1h0.1
+ c-1.7-0.3-3.4-0.6-5.2-0.9c-0.2,1.9,1.9,1.7,2.3,3c-6.5,4.3-13.3,8.3-19.5,13c-3.5,2.7-7.3,3.9-11.4,5.2c-3.3,1-6.6-1.3-9.7,0.6
+ l-0.2-0.2l-0.3,0.1c-3.1-0.1-6,1.3-7.1,3.6c-3.1,6.2-8.4,5.5-13.8,5.5c-2.7,0-5.5,0.8-8.2,1.2c-2.3,0.4-4.5,1.1-6.2,2.8
+ c-4,3.3-8.4,4.9-13.7,4.2c-1.1-0.1-2.3,1.1-3.4,1.6c-4.6-4.8-7.4-0.4-10.5,2.1c-1.2-1.2-2.4,0.8-3.6,0.2c-4.1,0.4-8.4-0.6-12.5,0.6
+ c-6.3-1.6-13.1,0.3-19.3-2.6c7.9-2.3,16.2-0.5,24.2-1.9c10.2-1.8,20.7-1.7,30.7-5.8c10.4-4.3,21-8.2,32-10.8
+ c6.3-1.5,12.6-2.9,18.8-4.7c2.8-0.8,5.6-2.2,5.5-6.1c-0.1-3.6-2.6-4.9-5.4-5.7c-5.3-1.5-10.6-2.7-15.9-4.1c-5-1.3-10.1-2.7-15.1-4.1
+ c9.8-1.9,19.6-2.5,29.2-4c10.3-1.6,20.7-2.5,30.7-5.8c1.2-0.4,2.9-0.6,2.9-2.2c0-1.5-1.3-2.3-2.5-2.8c-1.5-0.7-3.1-1.3-4.7-1.7
+ c-9.6-2.1-19.5-1.9-29.3-2c-9.7-0.1-19.5,1.5-29,3.7c-9.6,2.2-19.3,4.1-29,6.1c-11.8,0.2-23.2,3.1-34.9,4.2
+ c-9.4,0.9-18.7,2.5-28,3.7c-1.1,0.2-2.3,0-3.3,0.9c-1.3,0.1-2.6,0.2-3.9,0.3c-0.3,0-0.7,0-1,0c-9.2,1-18.5,1.9-27.7,3
+ c-25,3-50,4.3-75.2,3.7c-11.7-0.2-23.2-1.5-34.1-6.1c-4.6-2.9-9.4-5.5-13-9.8c5.5,2.3,11,4.6,16.8,6c29.3,7.4,59.1,8.2,89,5.6
+ c10.1,0,20.1-1.7,30.2-2.6c16.3-1.5,32.6-3.9,48.7-6.9c18.6-3.5,37-7.4,55.5-11.3c6.7-1.4,13.3-3.3,21-5.2
+ c-15.5-2.6-29.7-4.9-43.9-7.4c-14.8-2.6-29.6-5.4-44.5-8.1c-0.6-0.1-1.2-0.1-1.9-0.2c-0.4-0.3-0.7-0.5-1.1-0.8
+ c-3.1-0.1-5.7-1.4-8.4-2.7c1-1.8,2.6-1.3,4.1-1.2c15.7,1.2,31.3,2.4,46.8,4.7c14.2,2.1,28.4,4.4,42.6,6.6c1.6,0.3,3.3,0.3,4.9,0.5
+ c0.4,0.3,0.8,0.7,1.2,0.8c12.6,2.1,25.3,3.6,37.7,6.3c14.5,3.1,27.9,0.9,41.1-5c4.3-1.9,5.9-5.5,7.4-9.4c0.7-1.7-0.2-2.6-1.9-2.5
+ c-1.5,0-3,0.1-4.4,0.4C459.3,267.6,439.4,271.3,419,270z"/>
+<path style="fill:#7A7A7A;" d="M378.8,342c1.7-1.7,3.9-2.4,6.2-2.8c4.1,3,9.1,4.3,12.9,7.9c2.3,2.2,4.3,6.8,7.5,5.4
+ c3.1-1.3,2.1-6.1,2.6-9.5c0.8-5.2,0.2-11.1,6.1-14.2l0.3-0.1l0.2,0.2c5.9-0.1,10.6,3.3,15.8,5.4c3,1.2,6.7,3.5,9.1,0.2
+ c2.3-3-0.9-5.8-2.6-8.3c-0.2-0.2-0.1-0.6-0.2-1c7.6,1.4,14.9,3.4,22.5,4.1c5,0.5,7.2-1.1,7.9-5.8c0.8-5.6-0.3-9.8-6.3-11.6
+ c-1-0.3-1.8-1.3-2.7-2c0.1-0.6,0.1-1.2,0.2-1.9h-0.1c0.5,0,1-0.1,1.6-0.1c7.6-0.3,15.3,2,22.9-0.6c0.3,0.3,0.5,0.5,0.8,0.8
+ c-2.4,4.4-5.1,8.6-7.2,13.1c-17.7,39-36.4,77.6-51.8,117.6c-3.2,8.2-8.1,13.9-16.4,17.6c-7.9,3.4-15,8.5-22.4,13
+ c-8.9,5.5-16.7,12.4-26.7,16.4c-22.8,9.2-45.3,19.1-70.3,21c-8.1,0.6-16.1,3.1-24.2,1.1c-6-1.4-11.9-3-17.9-3.9
+ c-1.3-0.2-2.3-0.5-2.5-2c-0.5-4-3-6.9-5.1-10c2.2-0.1,2.2-1.2,1.7-3c-0.6-2.3-1.4-4.8,0.5-7c2.3,3.1,4.5,6.4,7,9.4
+ c2.1,2.5,4.6,3.1,6.7-0.2c1.6-1.1,2-0.3,2.7,1.2c0.7,1.6,2.1,3.3,4.2,2.1c1.7-1,3.7-2.3,3.1-5c-0.2-0.9-0.3-1.9-0.5-2.8
+ c3.7,0.7,4.7,4.4,7,6.6c5.3,5.1,8.2,4.8,12-1.4c0.8,0,1.5,0,2.3-0.1c5.6,0,10.9-0.9,14.4-6c1.8,1.7,2,4,2.2,6.3
+ c0.1,1.2,0.8,1.7,1.9,2c0.9,0.2,1.3-0.6,1.3-1.1c0.4-4.3,3.2-4.7,6.6-4.1c7.7,5.6,8.4,5.5,12.9-1c0.6-0.3,1.3-0.9,1.8-0.7
+ c5.7,1.7,7.8-1.8,9.2-6.3c3.5-11.4,3.6-23.5,6.5-35c1.2,0.5,0.2,3.1,2.3,2.9c0.4,0.9,0.9,1.8,1.2,2.7c2.3,6.3,3.2,6.5,8,2.3
+ c0.3,6.3-3.2,11.9-3.9,19.3c0.9-1.6,1.2-2,1.4-2.4c8.2-22.7,15.6-45.7,22.7-68.8c3.1-9.8,4.6-19.6,3.1-29.8
+ c-0.7-2.9,1.1-5.6,0.7-8.5c1-2.3,0.2-4.6,0.1-6.8c1.5-2.3,1.3-4.6-0.1-6.9C377.7,347.3,377.5,344.5,378.8,342z M392,454
+ c0.4-0.9,0.8-1.8,1.3-2.7c15.3-35.7,30.5-71.4,45.7-107.1c0.5-1.1,1.8-2.7,0.3-3.6c-1.9-1.1-2.5,1.1-3.2,2.3
+ c-4.8,8.5-8.8,17.5-12.7,26.5c-11.4,26.7-23.8,53-30.9,81.3C392.4,451.8,392.2,452.9,392,454c0,0.1-0.1,0.2-0.2,0.3
+ C391.9,454.2,391.9,454.1,392,454z M450,348c-1.5,0.8-1.8,2.3-2.1,3.9c-0.7,1.3-1.5,2.6-2.2,3.9c-13.8,25.5-23,52.9-33.5,79.8
+ c-0.7,1.9-2.4,3.7-1.7,7.1c1.1-2.4,1.9-3.8,2.5-5.3c6.2-14.7,12.5-29.3,18.7-44c5.7-13.6,11.1-27.3,16.7-41
+ C449.3,351,450.1,349.7,450,348c0.3-0.3,0.5-0.7,0.8-1c-0.2-0.1-0.4-0.2-0.5-0.4C450.2,347.1,450.1,347.5,450,348z M403.3,362.9
+ c-8.2,13.7-30.6,81.4-27.7,96.7C385.5,427.2,396.7,395.7,403.3,362.9z M406.6,450.6c-0.1,0-0.3,0-0.3,0.1c-0.1,0.1-0.1,0.3-0.1,0.4
+ c0.2,0,0.4-0.1,0.6-0.1C406.7,450.9,406.7,450.7,406.6,450.6z M451.6,343.8c-0.1,0-0.2,0-0.2,0.1c-0.1,0.1-0.1,0.3-0.1,0.4
+ c0.2,0.4,0.3,0.3,0.4-0.1C451.7,344.1,451.7,344,451.6,343.8z M409.8,444c-0.1-0.3-0.2-0.6-0.3-0.8c-0.1,0.1-0.3,0.2-0.3,0.4
+ c0,0.3,0.1,0.6,0.1,0.9C409.5,444.3,409.7,444.2,409.8,444z M407.9,448.3c-0.1-0.3-0.2-0.5-0.3-0.8c-0.1,0.1-0.4,0.2-0.4,0.3
+ c0.1,0.3,0.2,0.6,0.3,0.8C407.6,448.5,407.8,448.4,407.9,448.3z"/>
+<path style="fill:#272424;" d="M238.8,492c2.1,3.1,4.6,6.1,5.1,10c0.2,1.5,1.2,1.8,2.5,2c6.1,0.9,12,2.5,17.9,3.9
+ c8.1,1.9,16.2-0.5,24.2-1.1c25-1.9,47.5-11.8,70.3-21c9.9-4,17.8-10.9,26.7-16.4c7.4-4.5,14.5-9.6,22.4-13
+ c8.3-3.6,13.2-9.4,16.4-17.6c15.5-40,34.1-78.6,51.8-117.6c2.1-4.5,4.8-8.7,7.2-13.1c0.4-0.3,0.8-0.5,1.2-0.8
+ c0.3,0.3,0.6,0.5,0.8,0.8c-2.3,6.4-6.9,11.9-8.3,18.7c-17.8,33.3-30.8,68.8-45.5,103.9c10.6-2.9,17.4,3,24.3,8.6
+ c3.3,2.7,6.8,5.3,10.3,7.8c2.6,1.9,5.1,3.6,8.7,4c5.9,0.7,8.4,5.6,9.2,10.9c0.9,6.8,3.2,12,9.5,15.8c5.9,3.5,4.8,10.9-1.5,13.6
+ c-12.3,5.2-24.4,10.9-37,15.1c-9.5,3.1-19.8,4.6-29.9,4.2c-19.1-0.6-37.6,3.3-56.3,5.9c-17.6,2.4-35.2,3.1-53.1,0.6
+ c-18.5-2.5-36.7-7.3-55.7-6.6c-7.6,0.3-14.7-4.3-22.2-6.2c-1.9-0.5-3.8-1.2-5.7-1.8c0.4-3.7,3.4-6.9,1.9-10.9
+ c-0.1-1.5,1-2.6,1.7-3.7C237.5,488.8,237.2,491.2,238.8,492z"/>
+<path style="fill:#F5CFD6;" d="M295,110c-0.4-3-3.3-2.1-5-2.7c-1.8-0.7-3.4-0.9-3.1-3.3c0.7,0,1.3,0,2,0c5.6,1,11.2,2.3,16.9,2.9
+ c15.1,1.8,30.3,2.9,44.8,8.1c1.3-3.3-1.5-5.1-2.4-7.3c-4.5-10.6-11.1-19.4-23-22.5c-6.3-1.6-11.4-5.9-18.2-7.5
+ c4.3,0.1,5.8-1.2,4-5.1c-0.5-1.1-0.4-2.7,0.9-3.6c0.2,1.8,1.1,3.4,2.8,3.8c11.1,2.2,19.3,9.9,28.9,14.9c5.5,2.9,11.4,4.4,16.9,7.1
+ c2.1,1,4.3,1.9,5.4,4.2c-6.9-1.6-13-5.8-20.4-6.3c16.6,11.8,32.6,24.2,47.7,37.8c-3.4-9-8.9-16.4-16.2-22.5
+ c-2.8-2.3-5.4-4.8-8.1-7.1c7.5,1.2,14.2,3.2,18.5,10.6c6.1,10.5,15.1,18.7,23.7,27.2c1.4,1.4,2.7,2.9,4.1,4.3
+ c-5.2-0.8-9.7-3.6-13.6-6.8c-6.3-4.9-13.8-2.3-20.5-4.1c-0.6-0.2-1.4,0-1.6,0.8c-0.2,0.8,0.2,1.3,0.8,1.6c5.4,2.7,10.6,6.2,16.9,6.4
+ c9.4,0.3,15,6.1,19.8,13c-9.1-1-17.8-4.1-27.1-3.9c11.2,3.9,22.6,7.5,33.9,10.9c2.4,0.7,4.6,1.6,2.1,4.2c-1.3,1.4-3.5,2.5-5.9,1.3
+ c-4-2.1-8-4-12-6c-9.5-4.7-19.2-8.9-30.1-9.5c-0.5-6.4-2.1-8.4-8.1-9.8c-17.5-4-35.2-7.2-52.5-12.1c-7.3-2.1-14.6-4.3-22.5-6.7
+ c2.8-2.3,4.7-0.3,6.7-0.2c1.8,0.1,3.4,0.6,3.5-1.9c1.5-0.6,0.7-2.6,1.9-3.3c1,5.6,4.7,8.8,8.5,6.7c4.2-2.3,8.4-1.2,12.6-1.3
+ c1,0,2.4,1.3,2.8-0.6c0.3-1.3-0.8-1.9-1.9-2.5c-5.6-3.4-11.5-5.6-18-6.2C305.6,111.9,300.3,111,295,110z M343.1,91.8
+ c0.1-0.1,0.2-0.2,0.3-0.2c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1,0.1-0.3,0.3-0.4,0.4C342.8,91.7,343,91.7,343.1,91.8z"/>
+<path style="fill:#BDBCBC;" d="M154.9,325c6,5.5,13.3,7.2,21.1,7.9l0,0c1.4,1.9,3.3,2.2,5.5,2l0,0c0.8,0.9,1.8,1.1,3,1
+ c1.5,0,2.6,0.4,3,2c1.6,1.3,3.4,2.3,5.5,2l0,0c0.3,1,1.1,1.2,2,1l0,0c-1.4,3.7-0.7,7.7-1.2,11.5c-0.3,2.5-0.1,5.7-3.6,6.3
+ c-3.3,0.6-4.6-1.9-5.9-4.3c-1.6-3-2.5-6.2-3.1-9.4c-0.6-3.3-2.1-3.7-4.9-2.3c-4.8,2.3-9.3,5.2-14.5,6.7c-1.1,0.3-2.2,0.8-3.3,1.1
+ c-8.7,2.1-12-0.9-10.1-9.7c0.3-1.6,1-3.2,0.4-5.2c-3.2,0.4-5.5,2.7-8.1,4.2c-7.2,3.9-11.2,2.7-14.6-4.7c-1.1-2.4-2.3-4-5.2-1.8
+ c-2.2,1.6-4.9,2.9-7.2,0.4c-2.2-2.4-3.2-5.4-1.5-8.7c0.6-1.1,2.4-2.2,1.4-3.4c-1.1-1.5-3.1-0.7-4.6-0.2c-4.7,1.5-9.5,1.5-14.3,1.6
+ c-3.1,0-4.7-1.3-4.5-4.5c0.1-0.8-0.1-1.7,0-2.5c1.1-5.8-1.8-8.8-6.6-11.6c-6.2-3.7-9.6-9.8-10.4-17.1c-0.2-1.5-0.1-3.1-0.6-4.4
+ c-1.5-4.1-1.9-8,0.5-11.8c2.8,0.5,4,3.9,7,4.1c1,1.8,2.1,3.7,3.1,5.5c0.3,0.1,0.6,0.2,0.9,0.4L84,281c0.4,0.6,0.9,1.1,1.3,1.7
+ c1.5,1.9,2.5,4.2,4.8,5.4L90,288c0.7,1.1,1.5,2.3,2.2,3.4c0.6,2.4,1.8,4.4,4.7,4.4c0.1,0.1,0.2,0.3,0.3,0.4c-0.2,1.5,0.7,1.8,2,1.8
+ c3,2,6.2,3.4,9.7,4c2.3,2,4.9,3.8,7.8,3.9c5.8,0.3,10.5,3.3,14.7,6.3C138.7,317.6,146.8,321.3,154.9,325z"/>
+<path style="fill:#110D0E;" d="M315.8,348.1c6.2,2.9,12.9,1,19.3,2.6c4.2,0.4,8.4,1.3,12.5-0.6c1.2,0.6,2.3-1.3,3.6-0.1
+ c-2.1,3.3-3,6.8-3.1,10.7c0,5.6-2.6,7.9-8,7c-6.7-1.1-13.1-3.1-17.9-8.5c-2-2.2-4.3-4.2-6.7-5.9c-5.9-4.3-9.6-3.1-12.6,3.8
+ c-2.3,3.9-4,8.3-7.9,11c-6.4,1.8-9.1,0.2-13.3-7.9c-1,0.7-1.3,1.8-1.6,2.8c-4.2,5-8.8,9.6-15.2,11.8c-8.5,0.2-12.9-5.5-16.7-11.8
+ c-1.7-2.8-3.1-4.1-6-1.8c-4.7,2.2-9.4,4.4-14.1,6.6c-11.9,2-13.4,0.7-14-11.6c-0.1-1.8-0.2-3.6-0.2-5.5c-0.2-4.3,3-4,5.5-3.4
+ c4.1,1.1,8.7,2.1,12,4.5c7.7,5.7,15.9,4.1,24,2.6c7.9-1.5,15.4-5,23.8-4.5c2.1,0.1,4.2-0.8,6.1-1.9
+ C295.3,347,305.6,346.4,315.8,348.1z"/>
+<path style="fill:#F7E3E5;" d="M312,69c-1.3,1-1.4,2.5-0.9,3.6c1.8,3.9,0.3,5.3-4,5.1c6.7,1.7,11.9,5.9,18.2,7.5
+ c11.9,3.1,18.4,11.9,23,22.5c1,2.3,3.7,4.1,2.4,7.3c-14.5-5.2-29.7-6.3-44.8-8.1c-5.7-0.7-11.3-1.9-16.9-2.9c1.3-1.5,3.1-1,4.7-1
+ c7-0.1,14-0.2,21,0c3.6,0.1,4.5-1.3,4.4-4.6c-0.3-10-5.5-15.3-15.3-15.4c-1.5,0-3,0.1-4.5,0c-6.2-0.7-11,0.6-12.9,7.6
+ c-0.5,1.9-2.5,4.3-5.1,4.1c-2.6-0.2-3-2.9-3.7-4.8c-2.3-6-0.2-10.2,5.9-11.5c5.1-1.1,10.4-1.7,15.6-2.3c1.8-0.2,3.1-0.5,3.8-2.5
+ c2.7-7.3,4.3-14.7,4.2-22.7c-0.1-5.4,0.3-10.9,3.3-15.8c0.6-1,1.1-2.1,2.5-2.1c-2.1,5.9-3,12-3,18.3c0,1.8-0.2,3.7,1.9,4.7
+ C310.3,60.3,310.8,64.6,312,69z"/>
+<path style="fill:#F5CFD6;" d="M67,217c-2.6,5.3-3.6,10.8-4.1,16.7c-0.6,6,1.7,10.1,6.1,13.6c14.7,12.1,29.7,23.9,44,36.5
+ c10.9,9.5,22.2,18.5,33.1,27.9c1.1,1,2,2.2,2.9,3.4l0,0c-1.3,0-2.7,0-4,0c-0.3,0-0.6,0-1-0.1c-0.3-0.3-0.7-0.6-1-0.9
+ c-10.4-4.7-20.7-9.4-31.1-14.1c-3.1-3-7.4-3.8-10.9-6c0.3-2.5-1.3-2.8-3.2-3.2c-2-0.5-3.9-1.5-0.4-3.8c-2.1,0.5-4.1-0.7-5.4,1.2
+ c-0.6-0.1-1.2-1.2-1.9-0.2l0.1,0.1c1-0.7-0.1-1.3-0.1-2c1.6-2,0-1.8-1.2-1.8l0.1,0.1c0.2-1.7,0.7-3.6-1.5-4.4
+ c-1.2-0.5-1.2,0.6-1.3,1.3c-0.7,0-1.3-1.2-2-0.2l0.1,0.1c0.9-0.7-0.1-1.2-0.1-1.9c0.9-3.5-1.9-4.6-4-6.2l0,0
+ c0.1-1.4-0.5-2.3-1.8-2.8c-0.9-3-1.9-6-5.2-7.3c-1.7-2.6-3.4-5.2-5-7.8c-0.3-0.4-0.7-0.8-1-1.1l0,0c0-0.8-0.1-1.6-1-2l0,0
+ c0-0.9-0.1-1.6-1-2l0,0c0-0.9-0.2-1.6-1-2l0,0c-0.4-0.3-0.9-0.7-1.3-1c-2.5-2.7-3.6-5.6-2.8-9.4c0.8-3.5-0.7-6.9-2.7-9.8
+ c-1.3-1.8-1.4-3.5,0.4-4.7C60.6,220.9,63,217.6,67,217z"/>
+<path style="fill:#E794A1;" d="M378,151c10.8,0.6,20.5,4.8,30.1,9.5c4,2,8,3.9,12,6c2.4,1.2,4.6,0.1,5.9-1.3
+ c2.5-2.6,0.3-3.4-2.1-4.2c-11.4-3.4-22.7-7-33.9-10.9c9.3-0.3,18.1,2.8,27.1,3.9c11.7,2.3,23.5,4.6,32.4,13.6c0.7,0.7,1.7,1,2.6,1.5
+ c2.1,2.9,6.5,3.7,7,8c-3.3-2.1-5.8-5.4-10-6c-7.8-4.3-16.4-1.4-24.6-2.2c-8.3-0.8-17-0.2-25.5-1.4c-9.9-1.4-19.9-3-29.8-4.5h-0.1
+ c-0.5-0.8-1.2-0.9-2.1-0.8c-11.2-2.1-22.2-4.9-33.1-8.2c-1.3-0.4-3-0.8-2.9-2.8c0.3,0,0.6-0.1,0.9-0.2
+ C347.3,148.8,362.6,150.6,378,151z"/>
+<path style="fill:#5F5F5F;" d="M238.8,492c-1.6-0.8-1.3-3.2-3.1-3.8c0.4-2.2-1-3.8-1.8-5.5c-3.5-7.6-6.3-15.3-7.3-23.7
+ c-1.3-11.2-6.8-21.5-8-32.8c-1.1-10.6-3.5-20.9-6.1-31.2c-1.4-5.6,0.7-10.8,1.7-16.2c0.2-1,0.8-2,1.9-2c1.3,0.1,1,1.5,1.4,2.3
+ c7.2,15.8,10.4,32.8,14.4,49.6c3.6,15.4,4.6,31.2,6.9,46.8c0.4,2.4,1.7,4.3,2.2,6.5c-1.9,2.2-1.1,4.7-0.5,7
+ C241,490.8,241,491.9,238.8,492z"/>
+<path style="fill:#5F5F5F;" d="M264.2,486.7c0.2,0.9,0.3,1.9,0.5,2.8c0.6,2.7-1.4,3.9-3.1,5c-2.1,1.2-3.5-0.5-4.2-2.1
+ c-0.6-1.5-1.1-2.3-2.7-1.2c1.6-5.6-1.5-10.7-2-16.1c-1-10-2.6-20-3.9-30c0.2-1.4,0.5-2.8-0.5-4.1c-1.5-11.9-3-23.9-4.5-35.8
+ c-0.3-6.1-1.5-12.1-0.8-18.2c2.9,0.9,3.8,3.6,4.9,5.9c5.2,10.6,8.6,21.7,9.7,33.6C259.4,446.6,262,466.6,264.2,486.7z"/>
+<path style="fill:#BDBCBC;" d="M205.3,466.4c-1.4-9.9-4.8-19.3-7.3-28.9c-4.6-18.1-9.5-36.2-12.3-54.7c-0.3-2.2,0-3.9,1.9-5.8
+ c3.8,6.3,5.6,13.1,7.7,19.8c7.8,24.8,13.8,50.1,20.2,75.4c0.4,1.6,0.6,3.3,0.4,4.9c-4.3,5.1-4.4,5-6.9-1.1
+ C207.8,472.8,206.6,469.6,205.3,466.4z"/>
+<path style="fill:#BDBCBC;" d="M243,387c-0.7,6.1,0.5,12.1,0.8,18.2c-1.3,1.4-0.9,3.2-0.7,4.8c0.7,6.1,1.9,12.1,2.4,18.1
+ c0.3,3.4,2.4,6.9,0.4,10.4c-4-9.5-6.2-19.5-9.3-29.3c-3.7-11.8-7.1-23.7-10-35.8c-0.6-2.4-0.6-4.1,1.3-5.7c4.7-2.2,9.4-4.4,14.1-6.6
+ c1,1.4,1,3.1,1,4.7C243,372.9,243,379.9,243,387z"/>
+<path style="fill:#BDBCBC;" d="M158.3,363.3c19.1,35.9,25.8,75.2,37.7,113.3C188.9,471.4,157.7,377.2,158.3,363.3z"/>
+<path style="fill:#E794A1;" d="M285.1,348c-1.9,1.1-4,2-6.1,1.9c-8.3-0.5-15.8,3-23.8,4.5c-8.2,1.5-16.3,3.1-24-2.6
+ c-3.3-2.5-7.8-3.4-12-4.5c-2.4-0.6-5.6-0.9-5.5,3.4c-0.2-3.6-2.4-5.2-5.8-5.6c-4.5-0.6-8.3-3.8-13-4.1l0,0c-0.3-1.1-1.2-1.1-2-1l0,0
+ c-1.5-1.7-3.3-2.3-5.5-2c-0.4-1.5-1.5-2-3-2c-0.8-0.9-1.8-1.2-3-1l0,0c-1.4-1.9-3.2-2.6-5.5-2l0,0c-0.1-3.6,2.1-1.5,3.2-1.1
+ c7.4,2.3,14.7,5,22.5,6.2c10.5,1.5,20.9,3.4,31.4,4.9c1.7,0.3,3.2,1,4.7,1.4c2,6,6.4,8.3,13,7.3C262.2,349.9,273.5,347.1,285.1,348z
+ "/>
+<path style="fill:#5F5F5F;" d="M205.3,466.4c1.3,3.2,2.5,6.4,3.8,9.6c2.4,6.1,2.6,6.1,6.9,1.1c1.5,4.8,3,9.7,5.8,14
+ c4.5,6.7,7.1,6.9,12.2,0.9c1.4,4-1.5,7.2-1.9,10.9c-7.3-2-14.3-4.8-21.8-6.1c-6.6-1.1-12.6-9.5-13.4-17.4c0.9,1,1.6,2.1,2.6,3
+ c1.4,1.3,2.6,3.7,4.8,2.6c1.9-0.9,1.6-3.3,1.8-5.3C206.7,475.1,204.3,470.9,205.3,466.4z"/>
+<path style="fill:#F7E3E5;" d="M452,169.1c-0.9-0.5-1.9-0.8-2.6-1.5c-8.9-9-20.6-11.3-32.4-13.6c-4.9-7-10.4-12.7-19.8-13
+ c-6.2-0.2-11.4-3.7-16.9-6.4c-0.6-0.3-1-0.8-0.8-1.6c0.2-0.8,1-1,1.6-0.8c6.7,1.9,14.2-0.8,20.5,4.1c4,3.1,8.4,5.9,13.6,6.8
+ c7.7,5.7,17.5,7.3,25.5,12.4C445.8,158.7,451.4,161.8,452,169.1z"/>
+<path style="fill:#7A7A7A;" d="M484.4,307.4c-0.4,0.3-0.8,0.5-1.2,0.8c-0.3-0.3-0.5-0.5-0.8-0.8c1.2-5.3-3.1-8-5.4-11.6
+ c0.4-1,0.8-1.9,1.2-2.9c2.7,0.5,5.5,1.3,8.2,1.5c4.6,0.2,6.1-2.4,3.6-6.3c-1.9-3-4.1-6-7.1-8.1c0.4-0.3,0.9-0.7,1.3-1
+ c5.6,1.4,11.3,2.8,16.9,4.2c0.9,1.3,0.8,2.3-0.8,2.9c-2,0.6-2.9,2.5-3.9,4.1c-0.6,1-3.4,1.8-0.7,3.6c0.2,3.3-2.2,5.4-3.6,7.8
+ c-4.8,8.6-9.2,17.5-15.1,25.4c1.4-6.8,6-12.3,8.3-18.7c0.7-1.3,1.4-2.6,2.1-3.9c0.2-0.4,0.5-0.9,0.7-1.3c0.9-0.3,1.1-1,1.2-1.9
+ c0.5-0.2,0.8-0.5,0.3-0.9c-0.2,0.2-0.3,0.5-0.5,0.7c-0.9,0.4-1.2,1.1-1,2c-0.8-0.1-0.9,0.4-1.1,0.9C485.5,304.6,485,306,484.4,307.4
+ z"/>
+<path style="fill:#F7E3E5;" d="M369,100.9c2.7,2.4,5.3,4.9,8.1,7.1c7.4,6,12.8,13.5,16.2,22.5c-15.1-13.6-31.1-26.1-47.7-37.8
+ C353,93.2,359,97.4,366,99C367,99.6,368,100.3,369,100.9z"/>
+<path style="fill:#BDBCBC;" d="M160,416.7c5.9,17.5,15.2,33.8,18.7,52.1c0.3,1.7,1.2,4.1-0.9,4.9c-2,0.7-2.4-1.9-3-3.2
+ c-3.6-7.3-6.4-14.7-7.3-23C166.3,436.9,162.4,427,160,416.7z"/>
+<path style="fill:#F7E3E5;" d="M449,171c4.2,0.6,6.8,3.9,10,6l0,0c0.4,0.9,0.7,0.8,1.1,0c3.4,1.7,2.8,4.9,3,7.9
+ c-0.7,0.3-1.8-2.8-2.1,0.1c-0.2,2.3,0.1,4.6,0,6.9c-0.1,2.1-0.3,4.4-2.9,5.2c-0.3-3.2,1-6.2,1.5-9.3c0.5-3.5-2.4-9.6-5.3-9.6
+ C448.6,178.3,448.8,174.9,449,171z"/>
+<path style="fill:#110D0E;" d="M501.1,283.1c-5.6-1.4-11.3-2.8-16.9-4.2c3.6-2,7.1-3.9,10.7-5.9c2.1,2.4,4.1,4.9,6.2,7.3
+ C501.9,281.3,502.6,282.2,501.1,283.1z"/>
+<path style="fill:#BDBCBC;" d="M154.9,440.7c4.5,7.8,6.4,16.6,10.8,24.5c-2.5-1-4.6-3.4-9.3-10.6C153.6,450.2,156,445.2,154.9,440.7
+ z"/>
+<path style="fill:#F5CFD6;" d="M311.9,55.9c-2.1-0.9-1.9-2.8-1.9-4.7c-0.1-6.3,0.8-12.4,3-18.3l0,0c0.3-0.3,0.6-0.7,0.9-1
+ c0.3-2.6,2.3-4.4,3.5-6.5c0.4-0.7,1.2-1.4,2-0.9s0.6,1.4,0.2,2.2c-0.3,0.6-0.5,1.3-0.9,1.8C312.4,36.7,312.4,46.3,311.9,55.9z"/>
+<path style="fill:#F7E3E5;" d="M245.9,438.5c2-3.5-0.1-7-0.4-10.4c-0.5-6.1-1.7-12.1-2.4-18.1c-0.2-1.6-0.6-3.3,0.7-4.8
+ c1.5,11.9,3,23.9,4.5,35.8c-0.4-0.1-0.9-0.3-1.3-0.4l0,0C246.7,439.8,246.3,439.2,245.9,438.5L245.9,438.5z"/>
+<path style="fill:#F7E3E5;" d="M73,263c3.3,1.3,4.2,4.3,5.2,7.3c0.2,1.2,0.3,2.4,1.8,2.8l0,0c0,0.7,0.1,1.5,0.1,2.2
+ c-3-0.2-4.2-3.6-7-4.1C73,268.4,73,265.7,73,263z"/>
+<path style="fill:#F5CFD6;" d="M261.9,67.9c-0.6,4.6-5.2,3.3-7.7,5c-0.8,0.5-2.2,0.1-3.3,0C254,70.1,257.8,68.6,261.9,67.9z"/>
+<path style="fill:#110D0E;" d="M495.6,293.7c-2.7-1.7,0.1-2.6,0.7-3.6c1-1.6,1.9-3.4,3.9-4.1C498.7,288.6,497.2,291.1,495.6,293.7z"
+ />
+<path style="fill:#BDBCBC;" d="M247,440.5c0.4,0.1,0.9,0.3,1.3,0.4c1.1,1.3,0.8,2.7,0.5,4.1C246.2,444.4,247.2,442.2,247,440.5z"/>
+<path style="fill:#F7E3E5;" d="M466.1,197c0-0.6-0.1-1.3-0.1-1.9c0.1-1.1,0.2-2.2,0.3-4.5C468.5,193.7,467,195.3,466.1,197z"/>
+<path style="fill:#7A7A7A;" d="M474.4,231.9c-1.8-0.3-2.7-1.5-3.2-3C473,229.1,473.8,230.4,474.4,231.9z"/>
+<path style="fill:#F7E3E5;" d="M464,189.9c-1.5-1.4-0.7-3.3-0.8-5C464.6,186.4,463.8,188.3,464,189.9z"/>
+<path style="fill:#F7E3E5;" d="M464.9,195.1c-1.3-1.2-0.8-2.7-0.8-4.1C465.4,192.2,464.9,193.7,464.9,195.1z"/>
+<path style="fill:#F7E3E5;" d="M156,405c0.7,0.5,1.1,1.1,0.8,2c0,0.1-0.2,0.2-0.4,0.3C156.3,406.5,156.1,405.8,156,405L156,405z"/>
+<path style="fill:#F7E3E5;" d="M153.4,398.4c-0.1-0.3-0.1-0.4-0.2-0.6c0.1,0,0.2-0.1,0.4-0.1C153.6,397.9,153.5,398.1,153.4,398.4z"
+ />
+<path style="fill:#BDBCBC;" d="M66,252c0.9,0.4,1,1.2,1,2C66.2,253.6,65.9,252.9,66,252z"/>
+<path style="fill:#BDBCBC;" d="M65,250c0.9,0.4,1,1.2,1,2C65,251.7,64.9,250.9,65,250z"/>
+<path style="fill:#BDBCBC;" d="M64,248c0.8,0.4,1,1.2,1,2C64,249.7,64,248.9,64,248z"/>
+<path style="fill:#F7E3E5;" d="M154.4,401.3c0-0.1-0.1-0.3-0.1-0.4c0.1,0,0.3-0.1,0.4-0.1C154.9,401.1,154.8,401.3,154.4,401.3z"/>
+<path style="fill:#F7E3E5;" d="M156,405c-0.2-0.4-0.5-0.7-0.7-1.1c0,0,0.2-0.2,0.4-0.3C155.8,404.1,155.9,404.5,156,405L156,405z"/>
+<path style="fill:#F7E3E5;" d="M157.8,409.9c0,0.1-0.1,0.3-0.1,0.4c-0.1-0.1-0.3-0.3-0.4-0.4c0.1-0.1,0.2-0.2,0.3-0.3
+ C157.6,409.7,157.7,409.8,157.8,409.9z"/>
+<path style="fill:#F5CFD6;" d="M132,148c-0.4,0.8-1.1,1-2,1C130.4,148.2,131.1,147.9,132,148z"/>
+<path style="fill:#BDBCBC;" d="M67,254c0.3,0.4,0.7,0.8,1,1.1C67.6,254.8,67.3,254.4,67,254z"/>
+<path style="fill:#F5CFD6;" d="M130,149c-0.3,0.3-0.7,0.6-1,1C129.3,149.6,129.6,149.3,130,149z"/>
+<path style="fill:#E794A1;" d="M460.1,177c-0.4,0.8-0.7,0.9-1.1,0C459.3,177,459.7,177,460.1,177z"/>
+<path style="fill:#BDBCBC;" d="M62.7,247c0.4,0.3,0.9,0.7,1.3,1C63.6,247.7,63.1,247.3,62.7,247z"/>
+<path style="fill:#F5CFD6;" d="M133,147c-0.3,0.3-0.6,0.7-1,1C132.3,147.6,132.6,147.3,133,147z"/>
+<path style="fill:#BDBCBC;" d="M246,438.5c0.3,0.7,0.7,1.3,1,2C246.7,439.8,246.3,439.2,246,438.5z"/>
+<path style="fill:#F5CFD6;" d="M133.9,145.8c-0.3,0.4-0.6,0.8-1,1.2C133.3,146.6,133.6,146.2,133.9,145.8z"/>
+<path style="fill:#F7E3E5;" d="M313.9,31.9c-0.3,0.3-0.6,0.7-0.9,1C313.3,32.6,313.6,32.3,313.9,31.9z"/>
+<path style="fill:#FFFFFF;" d="M243.9,307.7c-30,2.5-59.7,1.7-89-5.6c-5.8-1.5-11.3-3.8-16.8-6L138,296c-2.5-3.6-5.8-6.1-9.9-7.6
+ c2-1.9,1.3-3.3-0.4-5.3c-4.4-4.9-10.1-8-15.4-11.5c-6.4-4.2-11.6-9.6-16.1-15.3c-5.5-6.9-10.7-14.2-14.4-22.5c-1.9-4.3-3-8.2,0.4-12
+ c1.5-1.8,0.4-5,3.5-5.7c0,6.7,0.8,13.2,3.1,19.5c3.1,8.3,9.2,14.2,15.3,19.9c7.8,7.3,15.8,14.4,24.4,22.2c-0.3-2.7-1.6-3.3-2.5-4.2
+ c-8.6-8.8-16.8-17.9-24.6-27.4c-11.2-13.6-12.3-17.7-8.4-34.4c1.5,7.6,4.2,13.6,7.8,19.1c0.1,1.5,0,3,2,3.2c0.1,0.9-0.2,2,0.9,2.4
+ c0.2,0.1,0.8-0.4,0.9-0.7c0.2-1.3-0.7-1.6-1.7-1.8c0.1-1.9-0.5-3.6-1.9-5c-2.9-8.5-4.4-17.1-2.5-26.1c3.4,3.4,7.7,4.9,12.1,6.2
+ c1.5,2.2,3.1,2.7,5,0.5c0,8.8,5.5,13.4,12.7,17c-0.9-3.6-2.3-6.9-3.7-10.3c-1.4-3.5-1.9-7.5-0.3-10.6c1.7-3.3,6.9-3.3,8.8-7.1
+ c0.1-0.3,1.8,0.3,2.7,0.5c1.6,0.3,3.2,0.7,4.8,1.1c0.1,0.7,0.1,1.6,1.2,1.5c0.1,0,0.3-0.2,0.3-0.3c0.1-1.1-0.8-1.1-1.5-1.2
+ c-2.8-3.3-5.5-6.6-8.3-9.8c-1.6-1.7-3.3-3.6-5.7-1c-0.3,0.3-0.6,0.5-0.9,0.8l0,0c-2.5-0.1-3.1,2.6-5,3.4c0.5-4.1-1.7-4.9-5.1-4.2
+ c-3.7,0.8-7.4,1.8-11.1,2.6c-1.6,0.4-3.5,0.5-4.4-1.3c-1-2,0.5-3.3,1.8-4.2c4.6-2.9,7.8-7.6,13.1-9.6c1.8-0.7,3.1-0.9,4.5,0.6
+ c1.3,1.4,1.5,2.9,0.6,4.6c-0.5,0.9-1.2,1.7-1.2,2.6c-0.1,1.5,1,2.5,2.3,3c1.5,0.5,2.1-0.6,2.4-1.8c3.2-11.6,14-10.7,22.5-13.7
+ c1.5-0.5,2,1,2.9,2c7.3,8.9,12.3,19.2,17.6,29.3c0.7,1.3,0.7,3.2,2.5,3.4c2,0.1,1.3-1.9,1.9-3c1-1.9,2-1.7,3.5-0.3
+ c2.8,2.5,3.7,6.2,5.8,9.2c6,8.5,10.7,17.8,15.1,27.2c5.6,12,15.9,19.8,24.6,29c0.6,0.6,1.3,1.3,2.1,0.6c0.8-0.6,0.5-1.5,0-2.3
+ c-7.6-12.4-13.7-25.7-21.6-37.9c-4-6.1-8.5-11.7-13.8-16.8c-10-9.6-16.4-21.9-23-33.8c-4.7-8.4-8-17.4-11.9-26.2
+ c-0.6-1.3-1.9-2.7-0.4-4.1c1.3-1.2,2.8-1.4,4.6-0.7c3.7,1.3,7,3.5,10.9,4.4c2,0.5,3.6,2.1,4,4.6c1.9,11.3,9.8,18.5,17.6,25.7
+ c14.8,13.4,31.7,23.8,48.8,34.1c12,7.3,24.6,13.2,37.1,19.4c5.5,2.7,11.2,5.3,16.6,8.4c-22.8-6-43.2-17.4-63.5-28.9
+ c7.7,7.6,17.8,11.7,25.5,19.5c-3.8-1.8-7.6-3.4-11.2-5.3c-4.8-2.5-9.5-5.4-14.4-7.9c-1.4-0.7-3-2-5-0.4c-1.9,1.4-3.3-0.5-4.7-1.6
+ c-6.7-5.1-13.3-10.3-19.9-15.5c-0.3,0.3-0.6,0.5-1,0.8c2.3,2.9,4.4,6,7,8.7c7.6,7.9,13.9,16.8,20.9,25.2
+ c10.8,13.1,18.1,28.3,25.6,43.3c2,4,0.2,5.6-2.7,6.8c-13.9,6-27.6,12.6-43.2,13.1c-0.2,0-0.5,0.3-1,0.7c14.5,1.2,28.1-1.8,41.6-6.3
+ c9.7-3.3,19.4-6.9,29.1-10.2c2.6-0.9,4.1,0.4,5,2.7c0.8,1.9,0.4,3.9,0.5,5.9C269.5,299,259,302,248.5,305
+ C247,305.6,244.7,305.4,243.9,307.7z"/>
+<path style="fill:#F5CFD6;" d="M285.1,348c-11.6-0.9-22.9,1.9-34.2,3.6c-6.6,1-11.1-1.2-13-7.3c7.1-1.9,14.2-3.8,21.2-5.9
+ c4.9-1.4,9.8-2.8,14.5-4.8c12.7-5.4,26.2-6.6,39.7-7.7c13-1,26-2.6,38.9-3.7c6.1-0.5,12.2-0.4,18.3-1.1c5.8-0.7,8.2-3.8,5.4-9
+ c-3.9-7.1-9.6-12.5-16.9-16.1c9.7-2,19.4-3.9,29-6.1c9.6-2.2,19.3-3.7,29-3.7c9.7,0.1,19.6-0.1,29.3,2c1.6,0.4,3.2,1,4.7,1.7
+ c1.2,0.5,2.6,1.3,2.5,2.8c0,1.6-1.7,1.8-2.9,2.2c-10,3.2-20.4,4.2-30.7,5.8c-9.6,1.5-19.4,2.1-29.2,4c5,1.4,10.1,2.8,15.1,4.1
+ c5.3,1.4,10.6,2.6,15.9,4.1c2.8,0.8,5.3,2,5.4,5.7c0.1,3.9-2.7,5.3-5.5,6.1c-6.2,1.8-12.5,3.2-18.8,4.7c-11,2.6-21.6,6.5-32,10.8
+ c-9.9,4.1-20.4,3.9-30.7,5.8c-8.1,1.4-16.3-0.4-24.2,1.9C305.6,346.4,295.3,347,285.1,348z"/>
+<path style="fill:#F5CFD6;" d="M449,171c-0.2,3.9-0.4,7.3,5.3,7.2c2.9,0,5.8,6.1,5.3,9.6c-0.5,3.1-1.8,6-1.5,9.3V197
+ c-1.5,0-2.1,0.8-2,2.2c-6.5,12.7-21.8,18.5-34.9,13.5c-13.3-5.1-26.6-10-39.9-15c-1.7-0.6-3.6-0.7-5.3-1c-0.4-0.5-0.7-1.5-1.1-1.5
+ c-11.1-0.5-21.4-5.1-32.3-6.3c-6.5-0.7-12.4-3.4-18.5-5.5c-1.1-0.4-2.1-1.1-2.1-2.5c1.7,0,3.3,0,5,0c1,0.5,2,1.2,3.1,1.4
+ c9,1.9,18,4.4,27.2,5.3c6.2,0.6,12.3,2.4,18.7,2.4c7.7,0,15.4,1.4,23.1,2.4c7.1,0.9,14.1,1.8,21.3,1.4c1-0.1,2.1,0,2.4-1.2
+ s-0.7-1.9-1.6-2.1c-2.6-0.6-4.8-2.1-7.3-2.9c-3.3-1.1-7.3-0.6-9.8-3.8c1.5-1.5,5.3-1.3,4.4-4.3c-0.8-2.7-4-1.5-6.2-1.5
+ c-11.7-0.1-23.5-0.1-35.2-0.1c-2.8-2.8-8.6-0.6-10-5.8c5,0.5,10.1,0.9,15.1,1.4c0-0.2,0.1-0.4,0.1-0.7c-6.4-1.6-12.8-3.2-19.3-4.8
+ c0.4-0.8,0.3-1-0.9-1.5c5.4-2.6,11.5-1.9,17.1-3.7c9.9,1.5,19.8,3.1,29.8,4.5c8.5,1.2,17.1,0.7,25.5,1.4
+ C432.6,169.6,441.2,166.7,449,171z"/>
+<path style="fill:#FFFFFF;" d="M327,181c-1.7,0-3.3,0-5,0c-22.5-5.8-44.2-14.6-67.4-18.2c-7.1-1.1-13-5.4-19.6-8.2
+ c-1.1-0.5-2.1-1.8-4.3-0.6c4.9,5.4,9.7,10.7,16.5,13c9.4,3.1,19.4,4.7,28.5,8.4c8.7,3.5,16.5,9.1,24.9,13.4
+ c9.5,4.9,17.7,11.3,25.8,18.3c-6.5-0.4-12-3.7-17.8-5.8c-9.8-3.6-18.4-9.7-27.9-14c-2.5-1.1-5-1.8-7.7-0.9
+ c-4.4,1.4-9.1-0.1-13.6,0.9c0.1,2.4,2.9,2,3,4.3c-6.9-1-12.6-4.4-18.1-7.8c-10.2-6.4-20-13.5-30.2-19.9c-3.1-2-4.9-5.3-8.2-6.9
+ c-0.3-0.3-0.7-0.7-1-1l0,0c-0.1-1.9-0.9-3.1-3-3l0,0c0.6-1.9-1-3-1.7-4.4c-4.4-8.1-8.3-16.3-4.7-25.8c4-1.8,6.8-5.8,11.2-7
+ c2.7-0.8,5.3-3.2,8.3-0.6c0,1.8-0.2,3.7-0.1,5.5c0.4,5.1,1,10.2,6,13.4c8.6,9.9,20.3,15,31.7,20.3c18.7,8.6,38.1,15.2,58.1,20.1
+ c5.1,1.3,10.3,2.1,15.6,2.6c2.9,0.3,1.1,1.3,0.8,2.3c1,1.2,2.5,0.6,3.7,1C329.8,181.5,328.3,180.8,327,181z"/>
+<path style="fill:#FFFFFF;" d="M289,305.2c1.3-0.1,2.6-0.2,3.9-0.3c3.9,2,7.9,3.9,11.8,5.9c1.5,0.8,3.3,1.6,2.8,3.6
+ c-0.4,1.7-2.2,2.2-3.8,2.8c-3.3,1.4-6.9,1.2-10.3,1.4c-14.3,1.2-28.5,3.7-42.8,5.3c-17.9,2-35.4,0.9-52.6-4.4
+ c-4.2-1.3-8.4-3.3-13.1-2.6c-1-3.2-3.4-3.1-6-2.2c2,0.7,4,1.5,6,2.2c9.8,4,19.2,9,30.8,11.9c-4.4,1.7-7.6,0.4-10.3-0.2
+ c-8-1.7-16-2.2-24-3.6c-7.6-1.3-14.4-4.8-21.8-6.7c-5.7-1.5-6.9-7.5-8.7-12.5c10.9,4.6,22.4,5.9,34.1,6.1
+ c25.1,0.5,50.2-0.7,75.2-3.7c9.2-1.1,18.5-2,27.7-3C288.3,305.7,288.7,305.6,289,305.2z"/>
+<path style="fill:#F5CFD6;" d="M243.9,307.7c0.9-2.3,3.1-2.2,5-2.7c10.5-3,21-6,31.1-10.1c4.7,1,8.6-1.8,12.8-3.1
+ c10.5-3.3,21.3-6,31.4-10.5c3.7-1.6,3.9-3.3,1-6c-3.4-3.1-7.4-5-11.7-6.3c-1.8-0.6-2.5-1.3-2.5-3c14.8,2.7,29.6,5.5,44.5,8.1
+ c14.2,2.5,28.4,4.8,43.9,7.4c-7.8,1.9-14.4,3.8-21,5.2c-18.5,3.9-36.9,7.8-55.5,11.3c-16.1,3-32.3,5.4-48.7,6.9
+ C264,306,254,307.7,243.9,307.7z"/>
+<path style="fill:#FFFFFF;" d="M223,107.4c-0.1-1.9,1-3,2.4-4.1c4.9-3.7,9.6-4,14.9-0.7c7.9,5,16.8,8,25.5,10.9
+ c4.7,1.5,8.2,4.4,10.5,7.8c6.7,10,16.6,14.5,27.1,18.9c8.3,3.4,17,5.7,25.9,9.5c-3.6,2.5-6.5,0.6-9.1,0.1
+ c-15.3-3.3-30.6-7.1-45.9-10.4c-8.6-1.9-15.8-6.3-23.2-10.7c-6.5-3.9-13-7.8-19.5-11.8c-1.4-0.8-2.8-0.9-4.3-0.9c0-2,0-4,0-6
+ c0.9-1.1,1-2.1-0.3-3C225.6,105.6,224.4,107.1,223,107.4z"/>
+<path style="fill:#F5CFD6;" d="M419,270c20.4,1.3,40.3-2.4,60.2-6.5c1.4-0.3,3-0.4,4.4-0.4c1.7,0,2.5,0.8,1.9,2.5
+ c-1.5,3.9-3.1,7.5-7.4,9.4c-13.2,5.9-26.7,8.1-41.1,5c-12.4-2.7-25.1-4.2-37.7-6.3c-0.4-0.1-0.8-0.5-1.2-0.8
+ c4.9-2.5,10-3.5,15.5-2.4C415.4,271,417.3,271.7,419,270z"/>
+<path style="fill:#F5CFD6;" d="M367.1,217.9c2.8,3.4,1,6.9,0,10.3c-0.6,2-1.9,1.2-3.2,1c-17.1-2.5-33.9-6.4-50.5-11
+ c-14.4-4-28.8-8-42.4-14.1c1.2-1.7,3.1-1.3,4.6-1c20.5,5.1,41.5,7,62.2,11.4c7.5,1.6,15.3,2.2,22.8,4.3
+ C362.5,219.4,365.1,219.9,367.1,217.9z"/>
+<path style="fill:#F5CFD6;" d="M391,253c13.4,0.6,26.7,2.7,40.2,2.1c9.7-0.4,17.3-3.9,22.5-12.3c0.6-1,1.1-2.2,2-2.8
+ c2.5-1.6,4.8-5.5,8-3.2c3.2,2.2,4,6.6,1.6,9.9c-6.4,8.6-14.8,14.7-25.7,16.2s-21.8,0.1-32.7-0.1c-3-3.9-7.9-4.7-12-6.8
+ C393.4,255.3,391.3,255.3,391,253z"/>
+<path style="fill:#E794A1;" d="M98.7,202.8c-1.9,9-0.4,17.6,2.5,26.1c-0.1,0.6-0.2,1.3-0.3,1.9c-3.7-5.5-6.4-11.5-7.8-19.1
+ c-3.9,16.7-2.8,20.8,8.4,34.4c7.8,9.5,16,18.6,24.6,27.4c0.9,0.9,2.1,1.5,2.5,4.2c-8.6-7.8-16.6-14.9-24.4-22.2
+ c-6.2-5.8-12.2-11.6-15.3-19.9c-2.4-6.4-3.1-12.9-3.1-19.5c0.9-7.8,3.6-14.8,8.8-20.7c0.9-1,1.7-2.9,3.5-1.7c1.4,1,2.2,2.4,1.8,4.3
+ C99.4,199.6,99.1,201.2,98.7,202.8z"/>
+<path style="fill:#E794A1;" d="M330.9,180.2c-1.2-0.4-2.7,0.2-3.7-1c13.3-0.4,26.6-0.8,39.8-1.2c11.7,0,23.5,0,35.2,0.1
+ c2.2,0,5.3-1.2,6.2,1.5c0.9,3-3,2.8-4.4,4.3c-1.3,0.1-2.6,0.2-4,0.2c-0.3,0-0.7,0-1,0c-5.3,0.7-10.6,0.9-15.8,0.6
+ C365.7,183.9,348.2,182.6,330.9,180.2z"/>
+<path style="fill:#E794A1;" d="M195.7,122.8c-3.7,9.5,0.3,17.7,4.7,25.8c0.8,1.4,2.3,2.5,1.7,4.4c-6.1-4.2-7.8-10.7-9.2-18.1
+ c-4.7,4.9-5.9,10.3-5.3,16.1c0.4,3.7,1.6,7.4,2.5,11.1c-2.2-0.9-3.1-2.7-3.1-5c-2.7-7.8-1.1-16.1-2.8-24c-0.5-2.5,0.5-4.9,1.8-7.1
+ c3.7-6.2,7.4-12.5,12.4-17.9c1.2,5.1,1.2,6-1.2,10.1C196.3,119.6,196,121.2,195.7,122.8z"/>
+<path style="fill:#E794A1;" d="M352.9,168.1c6.4,1.6,12.8,3.2,19.3,4.8c0,0.2-0.1,0.4-0.1,0.7c-5-0.5-10.1-0.9-15.1-1.4
+ c-16.3-2.7-32.8-4.1-48.9-8.3c-2.8-0.7-7.9-1.4-7.3-3.6c0.8-2.8,5.3-0.9,8.3-0.4c13.1,2,26,5,38.9,7.7
+ C349.6,167.9,351.3,167.9,352.9,168.1z"/>
+<path style="fill:#FFFFFF;" d="M186.9,157.1c0,2.3,0.9,4,3.1,5l-0.1-0.1c-0.2,1.4,0.4,2.6,1.2,3.7c0.6,2.1,1.3,4.2,4.1,4.3
+ c1.9,0.1,2.9,1.6,4.1,2.6c7.2,6.2,14.8,11.8,23.5,15.8c0.7,0.3,1.6,0.5,1.8,1.9c-2,0.4-3.8-0.4-5.3-1.3c-11.6-6.9-24-12.7-33.7-22.4
+ c-1-1-1.8-2.3-2.8-3.5c-2-2.3-2.8-4.1,1.5-4.2C185.5,159,185.9,157.6,186.9,157.1z"/>
+<path style="fill:#FFFFFF;" d="M111.9,299.9c10.4,4.7,20.7,9.4,31.1,14.1c0.3,0.3,0.7,0.6,1,0.9c0.3,0,0.6,0,1,0.1
+ c2.7,3.4,5.1,7.2,10.5,5.4c0.8-0.3,1.2,0.2,1.4,1c0.3,1.7-0.3,2.9-1.9,3.6c-8.1-3.8-16.2-7.4-23.6-12.8c-4.2-3.1-8.9-6-14.7-6.3
+ c-2.9-0.2-5.5-1.9-7.8-3.9C110.5,302.3,111,300.8,111.9,299.9z"/>
+<path style="fill:#E794A1;" d="M227.3,110c0,2,0,4,0,6c-0.1,3.2-0.9,4.8-4.8,3.5c-4.5-1.5-6.6,0.7-5.2,5.4c0.9,3.1,2.4,6.1,3.6,9.1
+ c-4.9-3.2-5.5-8.3-6-13.4c-0.2-1.8,0-3.6,0.1-5.5c1.9-3.4,5.6-4.9,8-7.8c1.3-0.2,2.5-1.7,4-0.4C227.1,108,227.2,109,227.3,110z"/>
+<path style="fill:#E794A1;" d="M115.9,209.5c-1.9,2.2-3.5,1.7-5-0.5c-0.4-5.1,2.9-8.2,6.1-11.4c1.4-1.4,2.7-2.8,4.1-4.3
+ c1.9-0.8,2.5-3.5,5-3.4c0.3,1.7-0.8,2.8-1.4,4.1C121.9,199.4,117.9,203.9,115.9,209.5z"/>
+<path style="fill:#E794A1;" d="M295,110c5.3,1,10.5,1.9,15.8,2.9c-1.4,1.3-3.5,1.8-3.9,4c-1.3,0.7-0.5,2.7-1.9,3.3
+ c-2.3-1.6-4.6-3.2-6.8-4.9C296.5,114,294.5,112.7,295,110z"/>
+<path style="fill:#E794A1;" d="M128.1,288.3c4.1,1.5,7.4,4.1,9.9,7.6C134,294.3,130,292.7,128.1,288.3z"/>
+<path style="fill:#E794A1;" d="M202,153c2.1-0.1,2.9,1.2,3,3C203.3,155.7,202.2,154.8,202,153z"/>
+<path style="fill:#E794A1;" d="M277.6,221.4c-1.4-0.4-2.8-0.7-4.2-2c2-0.6,3.4,0.5,4.7,1.4C278,221,277.8,221.2,277.6,221.4z"/>
+<path style="fill:#E794A1;" d="M191.1,165.7c-0.8-1.1-1.4-2.3-1.2-3.7C190.8,163.1,192.3,164,191.1,165.7z"/>
+<path style="fill:#F5CFD6;" d="M149,315c0.5,0.2,1.1,0.5,1.6,0.7c-0.1,0.2-0.3,0.4-0.4,0.6C149.8,315.9,149.4,315.4,149,315L149,315
+ z"/>
+<path style="fill:#F5CFD6;" d="M405,262.8c-1.1,0.2-2.2,0.2-3.1-0.7C403,262,404.1,261.8,405,262.8z"/>
+<path style="fill:#F5CFD6;" d="M367,162.1c0.8-0.1,1.6,0,2.1,0.8C368.2,163,367.5,162.9,367,162.1z"/>
+<path style="fill:#FFFFFF;" d="M331.9,150.8c-0.3,0.1-0.6,0.2-0.9,0.2C331.2,150.5,331.5,150.3,331.9,150.8z"/>
+<path style="fill:#F5CFD6;" d="M308,265.2c0.4,0.3,0.7,0.5,1.1,0.8C308.7,265.7,308.4,265.4,308,265.2z"/>
+<path style="fill:#E794A1;" d="M205,156c0.3,0.3,0.7,0.7,1,1C205.7,156.7,205.3,156.3,205,156z"/>
+<path style="fill:#FFFFFF;" d="M302.9,357c3-6.9,6.7-8,12.6-3.8c2.4,1.7,4.7,3.7,6.7,5.9c4.8,5.4,11.2,7.4,17.9,8.5
+ c5.4,0.9,8-1.5,8-7c0-3.9,1-7.4,3.1-10.7c3.2-2.5,5.9-6.9,10.5-2.1c3.4,4.3,6.6,8.7,10.1,12.9c1.5,1.8,3,4.2,6.2,3.1
+ c0.3,2.9-1.4,5.6-0.7,8.5c-0.4,1.1-0.9,2.2-1.2,3.3c-6.7,25.6-13.6,51.1-21.2,76.4c-0.6,0.3-0.8,0.7-0.6,1.3
+ c-0.1,0.2-0.3,0.5-0.3,0.8c-4.8,4.2-5.7,4-8-2.3c-0.3-0.9-0.8-1.8-1.2-2.7c-0.6-3.9-2.1-7.8-1.6-11.8c1.7-14,3.4-27.9,5.3-41.9
+ c0.5-3.7,0-6.9-1.5-10.1c-0.5-1.1-0.3-3-2.1-3c-2.1,0.1-1.8,2-2.1,3.4c-3,11.9-4.5,24.1-6.7,36.2c-4,22-5.8,44.4-11.1,66.3
+ c-4.5,6.5-5.3,6.6-12.9,1c-0.7-2.4-5.2-0.7-4.4-5.9c2.9-17.4,4.6-34.9,6.6-52.4c1.6-13.9,1.6-27.9,2.2-41.9c0.2-4.9,0.3-9.6-2.3-14
+ c-1.4-2.3-1.9-6.3-5.2-5.8c-2.8,0.5-2.4,4.2-3.1,6.7c-1.5-1.9-0.7-4.1-0.8-6.1C304.7,365.4,304.6,361.1,302.9,357z"/>
+<path style="fill:#110D0E;" d="M457.9,309.9c0.9,0.7,1.7,1.7,2.7,2c6,1.8,7.2,6.1,6.3,11.6c-0.7,4.8-2.9,6.3-7.9,5.8
+ c-7.6-0.7-15-2.7-22.5-4.1c0.1,0.4,0.1,0.8,0.2,1c1.7,2.6,4.9,5.3,2.6,8.3c-2.4,3.3-6.2,1-9.1-0.2c-5.2-2.1-9.8-5.5-15.8-5.4
+ c3.1-2,6.4,0.3,9.7-0.6c4.1-1.2,7.9-2.4,11.4-5.2c6.2-4.7,13-8.7,19.5-13C456.1,310.1,457,310,457.9,309.9z"/>
+<path style="fill:#110D0E;" d="M414.1,328.9c-5.9,3.1-5.3,9-6.1,14.2c-0.5,3.3,0.6,8.1-2.6,9.5c-3.2,1.4-5.2-3.3-7.5-5.4
+ c-3.8-3.6-8.8-4.9-12.9-7.9c2.7-0.4,5.5-1.2,8.2-1.2c5.4,0,10.6,0.7,13.8-5.5C408.2,330.2,411.1,328.8,414.1,328.9z"/>
+<path style="fill:#110D0E;" d="M378,363.7c-3.1,1.2-4.7-1.3-6.2-3.1c-3.5-4.2-6.8-8.6-10.1-12.9c1.1-0.6,2.4-1.8,3.4-1.6
+ c5.3,0.7,9.7-0.9,13.7-4.2c-1.4,2.6-1.1,5.3-0.8,8.1c0,2.3,0.1,4.6,0.1,6.9C378.2,359.2,379,361.5,378,363.7z"/>
+<path style="fill:#110D0E;" d="M477,295.8c2.4,3.6,6.7,6.3,5.4,11.6c-7.6,2.5-15.2,0.3-22.9,0.6c0.1-0.3,0.3-0.6,0.4-0.9
+ c5.6-3.3,11.1-6.8,16.1-11C476.4,296,476.7,295.9,477,295.8z"/>
+<path style="fill:#110D0E;" d="M482.9,280c3,2.1,5.1,5.1,7.1,8.1c2.5,3.9,0.9,6.5-3.6,6.3c-2.8-0.1-5.5-1-8.2-1.5
+ c-0.1-0.3-0.2-0.5-0.3-0.8C478,287.4,479,283.1,482.9,280z"/>
+<path style="fill:#F5CFD6;" d="M477.8,292.1c0.1,0.3,0.2,0.5,0.3,0.8c-0.4,1-0.8,1.9-1.2,2.9c-0.3,0.1-0.6,0.2-0.9,0.3
+ c-1-2.4-3.1-4-4.4-6.4C473.7,290.5,475.8,291.3,477.8,292.1z"/>
+<path style="fill:#F5CFD6;" d="M347.6,350.1c-4.1,1.9-8.3,1.1-12.5,0.6C339.2,349.4,343.5,350.5,347.6,350.1z"/>
+<path style="fill:#F5CFD6;" d="M457.9,309.9c-0.9,0.1-1.9,0.2-2.8,0.3c-0.3-1.3-2.4-1.1-2.3-3c1.8,0.3,3.5,0.6,5.2,0.9
+ C458,308.7,458,309.3,457.9,309.9z"/>
+<path style="fill:#F7E3E5;" d="M456,199.2c0-1.4,0.6-2.2,2-2.2C458,198.4,457.3,199,456,199.2z"/>
+<path style="fill:#F5CFD6;" d="M460,307c-0.1,0.3-0.3,0.6-0.4,0.9c-0.5,0-1,0.1-1.6,0.1C458.6,307.7,459.3,307.4,460,307z"/>
+<path style="fill:#F7E3E5;" d="M289,305.2c-0.3,0.4-0.7,0.5-1,0C288.3,305.2,288.7,305.2,289,305.2z"/>
+<path style="fill:#FFFFFF;" d="M243,387c0-7,0-14.1,0-21.1c0-1.6,0-3.3-1-4.7c2.9-2.3,4.3-0.9,6,1.8c3.8,6.3,8.2,12.1,16.7,11.8
+ c1.9,1.8,1.1,4.1,1.1,6.1c0.1,4.5-0.9,9.5,7.2,9.5c-6.7-0.7-6.4,2.3-5.5,6.4c0.9,4,0.7,8.2,1.2,12.3c2.5,20.8,5,41.7,8.2,62.4
+ c0.2,1.3,0.5,2.3,2,2.4c1.3,6,0.8,12.4,4.2,18c-3.8,6.2-6.7,6.4-12,1.4c-2.3-2.2-3.3-5.9-7-6.6c-2.2-20.1-4.8-40.2-6.6-60.3
+ c-1.1-11.9-4.5-23-9.7-33.6C246.8,390.6,245.9,387.8,243,387z"/>
+<path style="fill:#FFFFFF;" d="M280,363c0.3-1.1,0.6-2.2,1.6-2.8c4.3,8.1,6.9,9.6,13.3,7.9c0.2,26.1,1.2,52.1,4,79
+ c2.9-3.7,1.6-7,2.2-10.1c0.3,0,0.5,0,0.8,0c0.1,13.9-1.8,27.8-1.1,41.7c0.1,2.5-0.3,4.9-1,7.3c-3.5,5.1-8.8,6-14.4,6
+ c0.6-31.6,2-63.2,1.5-94.8c-0.1-6.1-1.9-12.1-6-17C280.4,374.4,282.2,368.6,280,363z"/>
+<path style="fill:#5F5F5F;" d="M299.9,486c0.8-2.4,1.2-4.8,1-7.3c-0.8-13.9,1.1-27.8,1.1-41.7c1.8-13.9,1.8-27.9,2.6-41.8
+ c0.4-6.4,0.9-12.9,1.3-19.3c0.6-2.5,0.3-6.3,3.1-6.7c3.3-0.5,3.8,3.4,5.2,5.8c2.6,4.3,2.5,9,2.3,14c-0.7,14-0.6,28-2.2,41.9
+ c-2,17.5-3.7,35-6.6,52.4c-0.9,5.1,3.7,3.5,4.4,5.9c-3.4-0.6-6.2-0.2-6.6,4.1c-0.1,0.6-0.5,1.3-1.3,1.1c-1-0.2-1.8-0.8-1.9-2
+ C301.9,490,301.7,487.7,299.9,486z"/>
+<path style="fill:#5F5F5F;" d="M324.9,488.1c5.2-21.8,7-44.2,11.1-66.3c2.2-12.1,3.7-24.3,6.7-36.2c0.3-1.4,0-3.3,2.1-3.4
+ c1.8,0,1.6,1.9,2.1,3c1.5,3.2,2.1,6.4,1.5,10.1c-2,13.9-3.6,27.9-5.3,41.9c-0.5,4,1,7.9,1.6,11.8c-2.1,0.1-1.1-2.5-2.3-2.9
+ c-2.9,11.6-3.1,23.6-6.5,35c-1.4,4.5-3.4,8-9.2,6.3C326.2,487.2,325.5,487.8,324.9,488.1z"/>
+<path style="fill:#5F5F5F;" d="M280.9,380.1c4.1,4.9,5.9,10.9,6,17c0.5,31.6-0.8,63.2-1.5,94.8c-0.8,0-1.5,0-2.3,0.1
+ c-3.4-5.5-2.9-11.9-4.2-18c0-17.9,1.2-35.9-0.8-53.7c-1-8.9-1.8-17.9-1-26.8C277.6,388.9,276.6,383.7,280.9,380.1z"/>
+<path style="fill:#110D0E;" d="M392.6,450.6c7.1-28.3,19.5-54.7,30.9-81.3c3.9-9,7.8-18,12.7-26.5c0.7-1.2,1.3-3.3,3.2-2.3
+ c1.5,0.8,0.2,2.5-0.3,3.6c-15.2,35.7-30.5,71.4-45.7,107.1C393,451,392.8,450.8,392.6,450.6z"/>
+<path style="fill:#110D0E;" d="M403.3,362.9c-6.5,32.8-17.8,64.3-27.7,96.7C372.7,444.3,395.1,376.5,403.3,362.9z"/>
+<path style="fill:#110D0E;" d="M354.8,451.9c7.6-25.3,14.6-50.8,21.2-76.4c0.3-1.1,0.8-2.2,1.2-3.3c1.5,10.2,0,20-3.1,29.8
+ c-7.2,23.1-14.5,46-22.7,68.8c-0.2,0.5-0.5,0.9-1.4,2.4c0.8-7.4,4.3-13,3.9-19.3c0.1-0.3,0.2-0.5,0.3-0.8
+ C354.9,452.9,355,452.5,354.8,451.9z"/>
+<path style="fill:#110D0E;" d="M448.3,352.3c-5.5,13.7-11,27.4-16.7,41c-6.1,14.7-12.4,29.3-18.7,44c-0.6,1.5-1.4,3-2.5,5.3
+ c-0.7-3.4,1-5.2,1.7-7.1c10.5-26.9,19.7-54.3,33.5-79.8c0.7-1.3,1.5-2.6,2.2-3.9C448,352,448.1,352.1,448.3,352.3z"/>
+<path style="fill:#BDBCBC;" d="M378.1,356.9c0-2.3-0.1-4.6-0.1-6.9C379.4,352.3,379.6,354.6,378.1,356.9z"/>
+<path style="fill:#110D0E;" d="M450,348c0.1,1.7-0.7,3-1.7,4.3c-0.1-0.1-0.3-0.3-0.4-0.4C448.2,350.4,448.5,348.8,450,348L450,348z"
+ />
+<path style="fill:#110D0E;" d="M393.3,451.2c-0.4,0.9-0.8,1.8-1.3,2.7v0.1c0.2-1.1,0.3-2.3,0.5-3.4C392.8,450.8,393,451,393.3,451.2
+ z"/>
+<path style="fill:#5F5F5F;" d="M406.6,450.6c0,0.1,0.1,0.3,0.1,0.4c-0.2,0-0.4,0.1-0.6,0.1c0-0.1,0-0.3,0.1-0.4
+ C406.3,450.6,406.5,450.6,406.6,450.6z"/>
+<path style="fill:#110D0E;" d="M451.6,343.8c0,0.1,0.1,0.3,0.1,0.4c-0.1,0.5-0.2,0.5-0.4,0.1c0-0.1,0-0.3,0.1-0.4
+ C451.4,343.9,451.5,343.9,451.6,343.8z"/>
+<path style="fill:#110D0E;" d="M450,348c0.1-0.5,0.2-0.9,0.2-1.4c0.2,0.1,0.4,0.2,0.5,0.4C450.5,347.3,450.3,347.7,450,348L450,348z
+ "/>
+<path style="fill:#110D0E;" d="M409.8,444c-0.2,0.2-0.4,0.3-0.6,0.4c0-0.3-0.1-0.6-0.1-0.9c0-0.1,0.2-0.3,0.3-0.4
+ C409.6,443.5,409.7,443.8,409.8,444z"/>
+<path style="fill:#5F5F5F;" d="M407.9,448.3c-0.1,0.1-0.3,0.2-0.4,0.3c-0.1-0.3-0.2-0.5-0.3-0.8c0-0.1,0.2-0.2,0.4-0.3
+ C407.7,447.7,407.8,448,407.9,448.3z"/>
+<path style="fill:#110D0E;" d="M392,454c-0.1,0.1-0.1,0.2-0.2,0.3C391.9,454.2,392,454.1,392,454C392.1,454,392,454,392,454z"/>
+<path style="fill:#F7E3E5;" d="M306.9,116.8c0.5-2.2,2.6-2.7,3.9-4c6.5,0.6,12.5,2.7,18,6.2c1.1,0.6,2.2,1.2,1.9,2.5
+ c-0.4,1.9-1.8,0.6-2.8,0.6c-4.2,0.1-8.4-1-12.6,1.3C311.6,125.6,307.9,122.4,306.9,116.8z"/>
+<path style="fill:#F7E3E5;" d="M343.1,91.8c-0.1,0-0.2-0.1-0.3-0.1c0.1-0.1,0.3-0.3,0.4-0.4c0.1,0.1,0.2,0.2,0.3,0.3
+ C343.3,91.6,343.2,91.7,343.1,91.8z"/>
+<path style="fill:#E794A1;" d="M111.9,299.9c-0.9,0.8-1.4,2.3-3.1,2c-3.5-0.7-6.7-2.1-9.7-4c-0.7-0.6-1.3-1.2-2-1.8
+ c-0.1-0.2-0.2-0.3-0.3-0.4c0.5-2.7,2.6-1.4,4.1-1.7C104.5,296.1,108.8,297,111.9,299.9z"/>
+<path style="fill:#F7E3E5;" d="M101,294c-1.5,0.4-3.6-1-4.1,1.7c-2.9,0-4-1.9-4.7-4.4c0.4,0.2,0.8,0.5,1.2,0.7
+ c0.1-0.4,0.5-0.9,0.3-1.2c-0.5-1-1.2-1.9-1.9-2.8c1.3-1.9,3.3-0.7,5.4-1.2c-3.4,2.3-1.6,3.3,0.4,3.8C99.7,291.2,101.3,291.5,101,294
+ z"/>
+<path style="fill:#E794A1;" d="M80.1,275.2c0-0.7-0.1-1.5-0.1-2.2c2.1,1.6,4.9,2.7,4,6.2c-1.1,0-0.7,0.9-0.8,1.5
+ C82.1,278.8,81.1,277,80.1,275.2z"/>
+<path style="fill:#110D0E;" d="M90,286c0,0.7,1.1,1.3,0.1,2c-2.3-1.2-3.3-3.5-4.8-5.4c0.3-0.2,0.5-0.5,0.8-0.7
+ c0.9,0.8,1.8,1.5,2.7,2.3l-0.1-0.1C89.2,284.8,89.6,285.4,90,286z"/>
+<path style="fill:#110D0E;" d="M91.9,288.1c0.6,0.9,1.3,1.8,1.9,2.8c0.1,0.2-0.2,0.8-0.3,1.2c-0.4-0.2-0.8-0.5-1.2-0.7
+ c-0.7-1.1-1.5-2.3-2.2-3.4C90.8,287,91.3,288.1,91.9,288.1z"/>
+<path style="fill:#F7E3E5;" d="M176,333c2.3-0.6,4.1,0.1,5.5,2C179.4,335.2,177.4,334.9,176,333z"/>
+<path style="fill:#FFFFFF;" d="M187.5,338c2.2-0.3,4.1,0.3,5.5,2C190.8,340.2,189.1,339.3,187.5,338z"/>
+<path style="fill:#F7E3E5;" d="M97.2,296.1c0.7,0.6,1.3,1.2,2,1.8C98,298,97,297.7,97.2,296.1z"/>
+<path style="fill:#FFFFFF;" d="M193,340c0.9,0,1.7,0,2,1C194.1,341.1,193.3,341,193,340z"/>
+<path style="fill:#F7E3E5;" d="M181.5,335c1.2-0.2,2.2,0.1,3,1C183.4,336.1,182.3,335.9,181.5,335z"/>
+<path style="fill:#110D0E;" d="M83.9,280.9c0.8-1,1.3,0.2,2,0.2c0,0.3,0.1,0.5,0.1,0.8c-0.3,0.2-0.5,0.5-0.8,0.7
+ C84.8,282.1,84.4,281.5,83.9,280.9z"/>
+<path style="fill:#110D0E;" d="M83.2,280.7c0.1-0.6-0.4-1.4,0.8-1.5c0,0.6,1.1,1.2,0.1,1.9C83.8,280.9,83.5,280.8,83.2,280.7z"/>
+<path style="fill:#BDBCBC;" d="M280.9,380.1c-4.3,3.6-3.4,8.8-3.8,13.4c-0.8,8.9,0,17.9,1,26.8c2.1,17.9,0.9,35.8,0.8,53.7
+ c-1.5-0.1-1.8-1.1-2-2.4c-3.2-20.8-5.7-41.6-8.2-62.4c-0.5-4.1-0.3-8.3-1.2-12.3c-0.9-4.1-1.3-7.1,5.5-6.4c-8.1,0-7.1-5-7.2-9.5
+ c0-2.1,0.7-4.4-1.1-6.1c6.4-2.2,11-6.8,15.2-11.8C282.2,368.6,280.4,374.4,280.9,380.1z"/>
+<path style="fill:#BDBCBC;" d="M305.8,375.9c-0.4,6.4-0.9,12.9-1.3,19.3c-0.9,0.3-1.4,0.8-1.4,1.7c-0.6,13.4-1.3,26.7-1.9,40.1
+ c-0.6,3,0.7,6.3-2.2,10.1c-2.8-26.9-3.7-52.9-4-79c3.9-2.8,5.6-7.1,7.9-11c1.7,4.1,1.7,8.5,2.1,12.8
+ C305.2,371.8,304.3,374,305.8,375.9z"/>
+<path style="fill:#F7E3E5;" d="M86.1,281.9c0-0.3-0.1-0.5-0.1-0.8c0.2-0.7,0.1-1.8,1.3-1.3c2.2,0.8,1.7,2.7,1.5,4.4
+ C87.9,283.5,87,282.7,86.1,281.9z"/>
+<path style="fill:#F7E3E5;" d="M90,286c-0.4-0.6-0.8-1.2-1.2-1.8C90,284.2,91.6,284.1,90,286z"/>
+<path style="fill:#E794A1;" d="M80,273c-1.5-0.3-1.6-1.6-1.8-2.8C79.4,270.7,80,271.7,80,273z"/>
+<path style="fill:#F7E3E5;" d="M144,315c-0.3-0.3-0.7-0.6-1-0.9C143.3,314.3,143.7,314.7,144,315z"/>
+<path style="fill:#110D0E;" d="M484.4,307.4c0.6-1.4,1.1-2.8,2.5-3.5c0.1,0.1,0.3,0.3,0.4,0.4c-0.7,1.3-1.4,2.6-2.1,3.9
+ C485,307.9,484.7,307.7,484.4,307.4z"/>
+<path style="fill:#110D0E;" d="M487.9,302.9c-0.2-1,0.1-1.6,1-2l0.2,0.2C489.1,302,488.9,302.7,487.9,302.9L487.9,302.9z"/>
+<path style="fill:#110D0E;" d="M488.9,300.9c0.2-0.2,0.3-0.5,0.5-0.7c0.5,0.5,0.3,0.8-0.3,0.9C489.2,301.2,488.9,300.9,488.9,300.9z
+ "/>
+<path style="fill:#110D0E;" d="M486.9,303.9c0.2-0.5,0.3-1.1,1.1-0.9l0.1,0.1c-0.2,0.4-0.5,0.9-0.7,1.3
+ C487.2,304.2,487,304,486.9,303.9z"/>
+<path style="fill:#F7E3E5;" d="M115.9,209.5c2-5.7,6.1-10.2,8.7-15.5c0.7-1.3,1.8-2.4,1.4-4.1l0,0c0.3-0.3,0.6-0.5,0.9-0.8
+ c2.4-2.6,4.2-0.8,5.7,1c2.9,3.2,5.6,6.5,8.3,9.8l0,0c-1.6-0.4-3.2-0.7-4.8-1.1c-0.9-0.2-2.6-0.7-2.7-0.5c-2,3.8-7.1,3.8-8.8,7.1
+ c-1.6,3.1-1.1,7.1,0.3,10.6c1.3,3.4,2.8,6.7,3.7,10.3C121.4,222.9,115.8,218.3,115.9,209.5z"/>
+<path style="fill:#F5CFD6;" d="M100.9,230.8c0.1-0.6,0.2-1.3,0.3-1.9c1.3,1.4,2,3.1,1.9,5L103,234
+ C100.9,233.9,101,232.3,100.9,230.8z"/>
+<path style="fill:#F5CFD6;" d="M103,234c1,0.2,1.9,0.5,1.7,1.8c-0.1,0.3-0.7,0.8-0.9,0.7C102.6,236.1,103,235,103,234L103,234z"/>
+<path style="fill:#F7E3E5;" d="M141,200c0.7,0.1,1.6,0.1,1.5,1.2c0,0.1-0.2,0.3-0.3,0.3C141.1,201.6,141.1,200.7,141,200L141,200z"
+ />
+<path style="fill:#E794A1;" d="M126.9,189.2c-0.3,0.3-0.6,0.5-0.9,0.8C126.3,189.8,126.6,189.5,126.9,189.2z"/>
+<path style="fill:#F7E3E5;" d="M400,184.2c1.3-0.1,2.6-0.2,4-0.2c2.5,3.2,6.5,2.7,9.8,3.8c2.5,0.8,4.7,2.3,7.3,2.9
+ c0.9,0.2,1.9,0.9,1.6,2.1s-1.4,1.2-2.4,1.2c-7.1,0.4-14.2-0.5-21.3-1.4c-7.7-1-15.4-2.3-23.1-2.4c-6.4,0-12.4-1.8-18.7-2.4
+ c-9.1-0.9-18.1-3.4-27.2-5.3c-1.1-0.2-2.1-0.9-3.1-1.4c1.3-0.2,2.8,0.4,3.9-0.9c17.3,2.5,34.8,3.8,52.3,4.7
+ c5.3,0.3,10.6,0.1,15.8-0.6C399.3,184.7,399.7,184.6,400,184.2z"/>
+<path style="fill:#F7E3E5;" d="M185,317c-2-0.7-4-1.5-6-2.2C181.6,314,184,313.8,185,317L185,317z"/>
+<path style="fill:#F7E3E5;" d="M227.3,110c-0.1-1-0.2-2-0.3-3C228.3,107.9,228.2,108.9,227.3,110z"/>
+<path style="fill:#F5CFD6;" d="M400,184.2c-0.3,0.4-0.7,0.5-1,0C399.3,184.2,399.7,184.2,400,184.2z"/>
+<path style="fill:#7A7A7A;" d="M354.8,451.9c0.2,0.6,0,1.1-0.6,1.3C354,452.5,354.3,452.1,354.8,451.9z"/>
+<path style="fill:#F7E3E5;" d="M301.2,437c0.6-13.4,1.3-26.7,1.9-40.1c0-1,0.6-1.5,1.4-1.7c-0.8,13.9-0.8,27.9-2.6,41.8
+ C301.7,437,301.4,437,301.2,437z"/>
+</svg>
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE-custom.js b/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE-custom.js index 71f679b..b457884 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE-custom.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE-custom.js @@ -1,117 +1,117 @@ -/*! AdminLTE userfrosting.js - * ================ - * Userfrosting JS file for AdminLTE v2. This file - * should be included in all pages. It controls some layout - * options and implements functions related to Userfrosting. - * - * @Author Louis Charette - * @Support <https://github.com/userfrosting> - * @license MIT <http://opensource.org/licenses/MIT> - */ - -//Make sure jQuery has been loaded before app.js -if (typeof jQuery === "undefined") { - throw new Error("AdminLTE requires jQuery"); -} - -/* Tree_UF() -* ====== -* Overwrite the default behavior for UF menu compatibility -* -* @type Function -* @Usage: $.AdminLTE.tree_UF('.sidebar') -*/ -$.AdminLTE.tree_UF = function (menu) { - var _this = this; - var animationSpeed = $.AdminLTE.options.animationSpeed; - $(document).off('click', menu + ' li a').on('click', menu + ' li a', function (e) { - - //Get the clicked link and the next element - var $this = $(this); - var checkElement = $this.next(); - - //Check if the next element is a menu and is visible - if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible')) && (!$('body').hasClass('sidebar-collapse'))) { - //Close the menu - checkElement.slideUp(animationSpeed, function () { - checkElement.removeClass('menu-open'); - //Fix the layout in case the sidebar stretches over the height of the window - //_this.layout.fix(); - }); - checkElement.parent("li").removeClass("active"); - } - //If the menu is not visible - else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) { - //Get the parent menu - var parent = $this.parents('ul').first(); - //Close all open menus within the parent - var ul = parent.find('ul:visible').slideUp(animationSpeed); - //Remove the menu-open class from the parent - ul.removeClass('menu-open'); - //Get the parent li - var parent_li = $this.parent("li"); - - //Open the target menu and add the menu-open class - checkElement.slideDown(animationSpeed, function () { - - //Add the class active to the parent li - checkElement.addClass('menu-open'); - parent.find('li.treeview.active').removeClass('active'); //<<-- Overwrite here. Otherwise, the menu href based active will be removed - parent_li.addClass('active'); - - //Fix the layout in case the sidebar stretches over the height of the window - _this.layout.fix(); - }); - } - //if this isn't a link, prevent the page from being redirected - if (checkElement.is('.treeview-menu')) { - e.preventDefault(); - } - }); -}; - -/* initMenu() -* ====== -* Activate the menu based on the url and href attr. -* -* @type Function -* @Usage: $.AdminLTE.initMenu('.sidebar') -*/ -$.AdminLTE.initMenu = function (searchElement) { - var _this = this; - var element = $(searchElement).filter(function () { - // Strip out everything after the hash, if present - var url_head = window.location.href.split('#', 1)[0]; - return this.href == url_head; // || url.href.indexOf(this.href) == 0 // Include this if you want to color all parent URIs as well - }).parent(); - $(element).addClass('active'); - $(element).parents('.treeview').addClass('active'); - $(element).parents('.treeview-menu').addClass('menu-open'); -}; - -$(function () { - //Init menu and trees - $.AdminLTE.initMenu('ul.sidebar-menu a'); - $.AdminLTE.tree_UF('.sidebar'); - - // Apply select2 to all js-select2 elements - $('.js-select2').select2({minimumResultsForSearch: Infinity}); - - // Apply iCheck to all js-icheck elements - $('.js-icheck').iCheck({ - checkboxClass: 'icheckbox_square-blue', - radioClass: 'iradio_square-blue', - increaseArea: '20%' // optional - }); - - // Remember the sidebar collapse state - // See: https://github.com/almasaeed2010/AdminLTE/issues/896#issuecomment-264723101 - $('.sidebar-toggle').click(function (event) { - event.preventDefault(); - if (Boolean(sessionStorage.getItem('sidebar-toggle-collapsed'))) { - sessionStorage.setItem('sidebar-toggle-collapsed', ''); - } else { - sessionStorage.setItem('sidebar-toggle-collapsed', '1'); - } - }); +/*! AdminLTE userfrosting.js
+ * ================
+ * Userfrosting JS file for AdminLTE v2. This file
+ * should be included in all pages. It controls some layout
+ * options and implements functions related to Userfrosting.
+ *
+ * @Author Louis Charette
+ * @Support <https://github.com/userfrosting>
+ * @license MIT <http://opensource.org/licenses/MIT>
+ */
+
+//Make sure jQuery has been loaded before app.js
+if (typeof jQuery === "undefined") {
+ throw new Error("AdminLTE requires jQuery");
+}
+
+/* Tree_UF()
+* ======
+* Overwrite the default behavior for UF menu compatibility
+*
+* @type Function
+* @Usage: $.AdminLTE.tree_UF('.sidebar')
+*/
+$.AdminLTE.tree_UF = function (menu) {
+ var _this = this;
+ var animationSpeed = $.AdminLTE.options.animationSpeed;
+ $(document).off('click', menu + ' li a').on('click', menu + ' li a', function (e) {
+
+ //Get the clicked link and the next element
+ var $this = $(this);
+ var checkElement = $this.next();
+
+ //Check if the next element is a menu and is visible
+ if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible')) && (!$('body').hasClass('sidebar-collapse'))) {
+ //Close the menu
+ checkElement.slideUp(animationSpeed, function () {
+ checkElement.removeClass('menu-open');
+ //Fix the layout in case the sidebar stretches over the height of the window
+ //_this.layout.fix();
+ });
+ checkElement.parent("li").removeClass("active");
+ }
+ //If the menu is not visible
+ else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {
+ //Get the parent menu
+ var parent = $this.parents('ul').first();
+ //Close all open menus within the parent
+ var ul = parent.find('ul:visible').slideUp(animationSpeed);
+ //Remove the menu-open class from the parent
+ ul.removeClass('menu-open');
+ //Get the parent li
+ var parent_li = $this.parent("li");
+
+ //Open the target menu and add the menu-open class
+ checkElement.slideDown(animationSpeed, function () {
+
+ //Add the class active to the parent li
+ checkElement.addClass('menu-open');
+ parent.find('li.treeview.active').removeClass('active'); //<<-- Overwrite here. Otherwise, the menu href based active will be removed
+ parent_li.addClass('active');
+
+ //Fix the layout in case the sidebar stretches over the height of the window
+ _this.layout.fix();
+ });
+ }
+ //if this isn't a link, prevent the page from being redirected
+ if (checkElement.is('.treeview-menu')) {
+ e.preventDefault();
+ }
+ });
+};
+
+/* initMenu()
+* ======
+* Activate the menu based on the url and href attr.
+*
+* @type Function
+* @Usage: $.AdminLTE.initMenu('.sidebar')
+*/
+$.AdminLTE.initMenu = function (searchElement) {
+ var _this = this;
+ var element = $(searchElement).filter(function () {
+ // Strip out everything after the hash, if present
+ var url_head = window.location.href.split('#', 1)[0];
+ return this.href == url_head; // || url.href.indexOf(this.href) == 0 // Include this if you want to color all parent URIs as well
+ }).parent();
+ $(element).addClass('active');
+ $(element).parents('.treeview').addClass('active');
+ $(element).parents('.treeview-menu').addClass('menu-open');
+};
+
+$(function () {
+ //Init menu and trees
+ $.AdminLTE.initMenu('ul.sidebar-menu a');
+ $.AdminLTE.tree_UF('.sidebar');
+
+ // Apply select2 to all js-select2 elements
+ $('.js-select2').select2({minimumResultsForSearch: Infinity});
+
+ // Apply iCheck to all js-icheck elements
+ $('.js-icheck').iCheck({
+ checkboxClass: 'icheckbox_square-blue',
+ radioClass: 'iradio_square-blue',
+ increaseArea: '20%' // optional
+ });
+
+ // Remember the sidebar collapse state
+ // See: https://github.com/almasaeed2010/AdminLTE/issues/896#issuecomment-264723101
+ $('.sidebar-toggle').click(function (event) {
+ event.preventDefault();
+ if (Boolean(sessionStorage.getItem('sidebar-toggle-collapsed'))) {
+ sessionStorage.setItem('sidebar-toggle-collapsed', '');
+ } else {
+ sessionStorage.setItem('sidebar-toggle-collapsed', '1');
+ }
+ });
});
\ No newline at end of file diff --git a/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE.js b/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE.js index 0bdfc9d..012ac24 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/AdminLTE.js @@ -1,762 +1,762 @@ -/*! AdminLTE app.js - * ================ - * Main JS application file for AdminLTE v2. This file - * should be included in all pages. It controls some layout - * options and implements exclusive AdminLTE plugins. - * - * @Author Almsaeed Studio - * @Support <http://www.almsaeedstudio.com> - * @Email <abdullah@almsaeedstudio.com> - * @version 2.3.6 - * @license MIT <http://opensource.org/licenses/MIT> - */ - -//Make sure jQuery has been loaded before app.js -if (typeof jQuery === "undefined") { - throw new Error("AdminLTE requires jQuery"); -} - -/* AdminLTE - * - * @type Object - * @description $.AdminLTE is the main object for the template's app. - * It's used for implementing functions and options related - * to the template. Keeping everything wrapped in an object - * prevents conflict with other plugins and is a better - * way to organize our code. - */ -$.AdminLTE = {}; - -/* -------------------- - * - AdminLTE Options - - * -------------------- - * Modify these options to suit your implementation - */ -$.AdminLTE.options = { - //Add slimscroll to navbar menus - //This requires you to load the slimscroll plugin - //in every page before app.js - navbarMenuSlimscroll: true, - navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar - navbarMenuHeight: "200px", //The height of the inner menu - //General animation speed for JS animated elements such as box collapse/expand and - //sidebar treeview slide up/down. This options accepts an integer as milliseconds, - //'fast', 'normal', or 'slow' - animationSpeed: 500, - //Sidebar push menu toggle button selector - sidebarToggleSelector: "[data-toggle='offcanvas']", - //Activate sidebar push menu - sidebarPushMenu: true, - //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin) - sidebarSlimScroll: true, - //Enable sidebar expand on hover effect for sidebar mini - //This option is forced to true if both the fixed layout and sidebar mini - //are used together - sidebarExpandOnHover: false, - //BoxRefresh Plugin - enableBoxRefresh: true, - //Bootstrap.js tooltip - enableBSToppltip: true, - BSTooltipSelector: "[data-toggle='tooltip']", - //Enable Fast Click. Fastclick.js creates a more - //native touch experience with touch devices. If you - //choose to enable the plugin, make sure you load the script - //before AdminLTE's app.js - enableFastclick: false, - //Control Sidebar Options - enableControlSidebar: true, - controlSidebarOptions: { - //Which button should trigger the open/close event - toggleBtnSelector: "[data-toggle='control-sidebar']", - //The sidebar selector - selector: ".control-sidebar", - //Enable slide over content - slide: true - }, - //Box Widget Plugin. Enable this plugin - //to allow boxes to be collapsed and/or removed - enableBoxWidget: true, - //Box Widget plugin options - boxWidgetOptions: { - boxWidgetIcons: { - //Collapse icon - collapse: 'fa-minus', - //Open icon - open: 'fa-plus', - //Remove icon - remove: 'fa-times' - }, - boxWidgetSelectors: { - //Remove button selector - remove: '[data-widget="remove"]', - //Collapse button selector - collapse: '[data-widget="collapse"]' - } - }, - //Direct Chat plugin options - directChat: { - //Enable direct chat by default - enable: true, - //The button to open and close the chat contacts pane - contactToggleSelector: '[data-widget="chat-pane-toggle"]' - }, - //Define the set of colors to use globally around the website - colors: { - lightBlue: "#3c8dbc", - red: "#f56954", - green: "#00a65a", - aqua: "#00c0ef", - yellow: "#f39c12", - blue: "#0073b7", - navy: "#001F3F", - teal: "#39CCCC", - olive: "#3D9970", - lime: "#01FF70", - orange: "#FF851B", - fuchsia: "#F012BE", - purple: "#8E24AA", - maroon: "#D81B60", - black: "#222222", - gray: "#d2d6de" - }, - //The standard screen sizes that bootstrap uses. - //If you change these in the variables.less file, change - //them here too. - screenSizes: { - xs: 480, - sm: 768, - md: 992, - lg: 1200 - } -}; - -/* ------------------ - * - Implementation - - * ------------------ - * The next block of code implements AdminLTE's - * functions and plugins as specified by the - * options above. - */ -$(function () { - "use strict"; - - //Fix for IE page transitions - $("body").removeClass("hold-transition"); - - //Extend options if external options exist - if (typeof AdminLTEOptions !== "undefined") { - $.extend(true, - $.AdminLTE.options, - AdminLTEOptions); - } - - //Easy access to options - var o = $.AdminLTE.options; - - //Set up the object - _init(); - - //Activate the layout maker - $.AdminLTE.layout.activate(); - - //Enable sidebar tree view controls - $.AdminLTE.tree('.sidebar'); - - //Enable control sidebar - if (o.enableControlSidebar) { - $.AdminLTE.controlSidebar.activate(); - } - - //Add slimscroll to navbar dropdown - if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') { - $(".navbar .menu").slimscroll({ - height: o.navbarMenuHeight, - alwaysVisible: false, - size: o.navbarMenuSlimscrollWidth - }).css("width", "100%"); - } - - //Activate sidebar push menu - if (o.sidebarPushMenu) { - $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector); - } - - //Activate Bootstrap tooltip - if (o.enableBSToppltip) { - $('body').tooltip({ - selector: o.BSTooltipSelector - }); - } - - //Activate box widget - if (o.enableBoxWidget) { - $.AdminLTE.boxWidget.activate(); - } - - //Activate fast click - if (o.enableFastclick && typeof FastClick != 'undefined') { - FastClick.attach(document.body); - } - - //Activate direct chat widget - if (o.directChat.enable) { - $(document).on('click', o.directChat.contactToggleSelector, function () { - var box = $(this).parents('.direct-chat').first(); - box.toggleClass('direct-chat-contacts-open'); - }); - } - - /* - * INITIALIZE BUTTON TOGGLE - * ------------------------ - */ - $('.btn-group[data-toggle="btn-toggle"]').each(function () { - var group = $(this); - $(this).find(".btn").on('click', function (e) { - group.find(".btn.active").removeClass("active"); - $(this).addClass("active"); - e.preventDefault(); - }); - - }); -}); - -/* ---------------------------------- - * - Initialize the AdminLTE Object - - * ---------------------------------- - * All AdminLTE functions are implemented below. - */ -function _init() { - 'use strict'; - /* Layout - * ====== - * Fixes the layout height in case min-height fails. - * - * @type Object - * @usage $.AdminLTE.layout.activate() - * $.AdminLTE.layout.fix() - * $.AdminLTE.layout.fixSidebar() - */ - $.AdminLTE.layout = { - activate: function () { - var _this = this; - _this.fix(); - _this.fixSidebar(); - $(window, ".wrapper").resize(function () { - _this.fix(); - _this.fixSidebar(); - }); - }, - fix: function () { - //Get window height and the wrapper height - var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight(); - var window_height = $(window).height(); - var sidebar_height = $(".sidebar").height(); - //Set the min-height of the content and sidebar based on the - //the height of the document. - if ($("body").hasClass("fixed")) { - $(".content-wrapper, .right-side").css('min-height', window_height - $('.main-footer').outerHeight()); - } else { - var postSetWidth; - if (window_height >= sidebar_height) { - $(".content-wrapper, .right-side").css('min-height', window_height - neg); - postSetWidth = window_height - neg; - } else { - $(".content-wrapper, .right-side").css('min-height', sidebar_height); - postSetWidth = sidebar_height; - } - - //Fix for the control sidebar height - var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector); - if (typeof controlSidebar !== "undefined") { - if (controlSidebar.height() > postSetWidth) - $(".content-wrapper, .right-side").css('min-height', controlSidebar.height()); - } - - } - }, - fixSidebar: function () { - //Make sure the body tag has the .fixed class - if (!$("body").hasClass("fixed")) { - if (typeof $.fn.slimScroll != 'undefined') { - $(".sidebar").slimScroll({destroy: true}).height("auto"); - } - return; - } else if (typeof $.fn.slimScroll == 'undefined' && window.console) { - window.console.error("Error: the fixed layout requires the slimscroll plugin!"); - } - //Enable slimscroll for fixed layout - if ($.AdminLTE.options.sidebarSlimScroll) { - if (typeof $.fn.slimScroll != 'undefined') { - //Destroy if it exists - $(".sidebar").slimScroll({destroy: true}).height("auto"); - //Add slimscroll - $(".sidebar").slimscroll({ - height: ($(window).height() - $(".main-header").height()) + "px", - color: "rgba(0,0,0,0.2)", - size: "3px" - }); - } - } - } - }; - - /* PushMenu() - * ========== - * Adds the push menu functionality to the sidebar. - * - * @type Function - * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']") - */ - $.AdminLTE.pushMenu = { - activate: function (toggleBtn) { - //Get the screen sizes - var screenSizes = $.AdminLTE.options.screenSizes; - - //Enable sidebar toggle - $(document).on('click', toggleBtn, function (e) { - e.preventDefault(); - - //Enable sidebar push menu - if ($(window).width() > (screenSizes.sm - 1)) { - if ($("body").hasClass('sidebar-collapse')) { - $("body").removeClass('sidebar-collapse').trigger('expanded.pushMenu'); - } else { - $("body").addClass('sidebar-collapse').trigger('collapsed.pushMenu'); - } - } - //Handle sidebar push menu for small screens - else { - if ($("body").hasClass('sidebar-open')) { - $("body").removeClass('sidebar-open').removeClass('sidebar-collapse').trigger('collapsed.pushMenu'); - } else { - $("body").addClass('sidebar-open').trigger('expanded.pushMenu'); - } - } - }); - - $(".content-wrapper").click(function () { - //Enable hide menu when clicking on the content-wrapper on small screens - if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) { - $("body").removeClass('sidebar-open'); - } - }); - - //Enable expand on hover for sidebar mini - if ($.AdminLTE.options.sidebarExpandOnHover - || ($('body').hasClass('fixed') - && $('body').hasClass('sidebar-mini'))) { - this.expandOnHover(); - } - }, - expandOnHover: function () { - var _this = this; - var screenWidth = $.AdminLTE.options.screenSizes.sm - 1; - //Expand sidebar on hover - $('.main-sidebar').hover(function () { - if ($('body').hasClass('sidebar-mini') - && $("body").hasClass('sidebar-collapse') - && $(window).width() > screenWidth) { - _this.expand(); - } - }, function () { - if ($('body').hasClass('sidebar-mini') - && $('body').hasClass('sidebar-expanded-on-hover') - && $(window).width() > screenWidth) { - _this.collapse(); - } - }); - }, - expand: function () { - $("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover'); - }, - collapse: function () { - if ($('body').hasClass('sidebar-expanded-on-hover')) { - $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse'); - } - } - }; - - /* Tree() - * ====== - * Converts the sidebar into a multilevel - * tree view menu. - * - * @type Function - * @Usage: $.AdminLTE.tree('.sidebar') - */ - $.AdminLTE.tree = function (menu) { - var _this = this; - var animationSpeed = $.AdminLTE.options.animationSpeed; - $(document).off('click', menu + ' li a') - .on('click', menu + ' li a', function (e) { - //Get the clicked link and the next element - var $this = $(this); - var checkElement = $this.next(); - - //Check if the next element is a menu and is visible - if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible')) && (!$('body').hasClass('sidebar-collapse'))) { - //Close the menu - checkElement.slideUp(animationSpeed, function () { - checkElement.removeClass('menu-open'); - //Fix the layout in case the sidebar stretches over the height of the window - //_this.layout.fix(); - }); - checkElement.parent("li").removeClass("active"); - } - //If the menu is not visible - else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) { - //Get the parent menu - var parent = $this.parents('ul').first(); - //Close all open menus within the parent - var ul = parent.find('ul:visible').slideUp(animationSpeed); - //Remove the menu-open class from the parent - ul.removeClass('menu-open'); - //Get the parent li - var parent_li = $this.parent("li"); - - //Open the target menu and add the menu-open class - checkElement.slideDown(animationSpeed, function () { - //Add the class active to the parent li - checkElement.addClass('menu-open'); - parent.find('li.active').removeClass('active'); - parent_li.addClass('active'); - //Fix the layout in case the sidebar stretches over the height of the window - _this.layout.fix(); - }); - } - //if this isn't a link, prevent the page from being redirected - if (checkElement.is('.treeview-menu')) { - e.preventDefault(); - } - }); - }; - - /* ControlSidebar - * ============== - * Adds functionality to the right sidebar - * - * @type Object - * @usage $.AdminLTE.controlSidebar.activate(options) - */ - $.AdminLTE.controlSidebar = { - //instantiate the object - activate: function () { - //Get the object - var _this = this; - //Update options - var o = $.AdminLTE.options.controlSidebarOptions; - //Get the sidebar - var sidebar = $(o.selector); - //The toggle button - var btn = $(o.toggleBtnSelector); - - //Listen to the click event - btn.on('click', function (e) { - e.preventDefault(); - //If the sidebar is not open - if (!sidebar.hasClass('control-sidebar-open') - && !$('body').hasClass('control-sidebar-open')) { - //Open the sidebar - _this.open(sidebar, o.slide); - } else { - _this.close(sidebar, o.slide); - } - }); - - //If the body has a boxed layout, fix the sidebar bg position - var bg = $(".control-sidebar-bg"); - _this._fix(bg); - - //If the body has a fixed layout, make the control sidebar fixed - if ($('body').hasClass('fixed')) { - _this._fixForFixed(sidebar); - } else { - //If the content height is less than the sidebar's height, force max height - if ($('.content-wrapper, .right-side').height() < sidebar.height()) { - _this._fixForContent(sidebar); - } - } - }, - //Open the control sidebar - open: function (sidebar, slide) { - //Slide over content - if (slide) { - sidebar.addClass('control-sidebar-open'); - } else { - //Push the content by adding the open class to the body instead - //of the sidebar itself - $('body').addClass('control-sidebar-open'); - } - }, - //Close the control sidebar - close: function (sidebar, slide) { - if (slide) { - sidebar.removeClass('control-sidebar-open'); - } else { - $('body').removeClass('control-sidebar-open'); - } - }, - _fix: function (sidebar) { - var _this = this; - if ($("body").hasClass('layout-boxed')) { - sidebar.css('position', 'absolute'); - sidebar.height($(".wrapper").height()); - if (_this.hasBindedResize) { - return; - } - $(window).resize(function () { - _this._fix(sidebar); - }); - _this.hasBindedResize = true; - } else { - sidebar.css({ - 'position': 'fixed', - 'height': 'auto' - }); - } - }, - _fixForFixed: function (sidebar) { - sidebar.css({ - 'position': 'fixed', - 'max-height': '100%', - 'overflow': 'auto', - 'padding-bottom': '50px' - }); - }, - _fixForContent: function (sidebar) { - $(".content-wrapper, .right-side").css('min-height', sidebar.height()); - } - }; - - /* BoxWidget - * ========= - * BoxWidget is a plugin to handle collapsing and - * removing boxes from the screen. - * - * @type Object - * @usage $.AdminLTE.boxWidget.activate() - * Set all your options in the main $.AdminLTE.options object - */ - $.AdminLTE.boxWidget = { - selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors, - icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons, - animationSpeed: $.AdminLTE.options.animationSpeed, - activate: function (_box) { - var _this = this; - if (!_box) { - _box = document; // activate all boxes per default - } - //Listen for collapse event triggers - $(_box).on('click', _this.selectors.collapse, function (e) { - e.preventDefault(); - _this.collapse($(this)); - }); - - //Listen for remove event triggers - $(_box).on('click', _this.selectors.remove, function (e) { - e.preventDefault(); - _this.remove($(this)); - }); - }, - collapse: function (element) { - var _this = this; - //Find the box parent - var box = element.parents(".box").first(); - //Find the body and the footer - var box_content = box.find("> .box-body, > .box-footer, > form >.box-body, > form > .box-footer"); - if (!box.hasClass("collapsed-box")) { - //Convert minus into plus - element.children(":first") - .removeClass(_this.icons.collapse) - .addClass(_this.icons.open); - //Hide the content - box_content.slideUp(_this.animationSpeed, function () { - box.addClass("collapsed-box"); - }); - } else { - //Convert plus into minus - element.children(":first") - .removeClass(_this.icons.open) - .addClass(_this.icons.collapse); - //Show the content - box_content.slideDown(_this.animationSpeed, function () { - box.removeClass("collapsed-box"); - }); - } - }, - remove: function (element) { - //Find the box parent - var box = element.parents(".box").first(); - box.slideUp(this.animationSpeed); - } - }; -} - -/* ------------------ - * - Custom Plugins - - * ------------------ - * All custom plugins are defined below. - */ - -/* - * BOX REFRESH BUTTON - * ------------------ - * This is a custom plugin to use with the component BOX. It allows you to add - * a refresh button to the box. It converts the box's state to a loading state. - * - * @type plugin - * @usage $("#box-widget").boxRefresh( options ); - */ -(function ($) { - - "use strict"; - - $.fn.boxRefresh = function (options) { - - // Render options - var settings = $.extend({ - //Refresh button selector - trigger: ".refresh-btn", - //File source to be loaded (e.g: ajax/src.php) - source: "", - //Callbacks - onLoadStart: function (box) { - return box; - }, //Right after the button has been clicked - onLoadDone: function (box) { - return box; - } //When the source has been loaded - - }, options); - - //The overlay - var overlay = $('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>'); - - return this.each(function () { - //if a source is specified - if (settings.source === "") { - if (window.console) { - window.console.log("Please specify a source first - boxRefresh()"); - } - return; - } - //the box - var box = $(this); - //the button - var rBtn = box.find(settings.trigger).first(); - - //On trigger click - rBtn.on('click', function (e) { - e.preventDefault(); - //Add loading overlay - start(box); - - //Perform ajax call - box.find(".box-body").load(settings.source, function () { - done(box); - }); - }); - }); - - function start(box) { - //Add overlay and loading img - box.append(overlay); - - settings.onLoadStart.call(box); - } - - function done(box) { - //Remove overlay and loading img - box.find(overlay).remove(); - - settings.onLoadDone.call(box); - } - - }; - -})(jQuery); - -/* - * EXPLICIT BOX CONTROLS - * ----------------------- - * This is a custom plugin to use with the component BOX. It allows you to activate - * a box inserted in the DOM after the app.js was loaded, toggle and remove box. - * - * @type plugin - * @usage $("#box-widget").activateBox(); - * @usage $("#box-widget").toggleBox(); - * @usage $("#box-widget").removeBox(); - */ -(function ($) { - - 'use strict'; - - $.fn.activateBox = function () { - $.AdminLTE.boxWidget.activate(this); - }; - - $.fn.toggleBox = function () { - var button = $($.AdminLTE.boxWidget.selectors.collapse, this); - $.AdminLTE.boxWidget.collapse(button); - }; - - $.fn.removeBox = function () { - var button = $($.AdminLTE.boxWidget.selectors.remove, this); - $.AdminLTE.boxWidget.remove(button); - }; - -})(jQuery); - -/* - LIST CUSTOM PLUGIN - * ----------------------- - * This plugin depends on iCheck plugin for checkbox and radio inputs - * - * @type plugin - */ -(function ($) { - - 'use strict'; - - $.fn.todolist = function (options) { - // Render options - var settings = $.extend({ - //When the user checks the input - onCheck: function (ele) { - return ele; - }, - //When the user unchecks the input - onUncheck: function (ele) { - return ele; - } - }, options); - - return this.each(function () { - - if (typeof $.fn.iCheck != 'undefined') { - $('input', this).on('ifChecked', function () { - var ele = $(this).parents("li").first(); - ele.toggleClass("done"); - settings.onCheck.call(ele); - }); - - $('input', this).on('ifUnchecked', function () { - var ele = $(this).parents("li").first(); - ele.toggleClass("done"); - settings.onUncheck.call(ele); - }); - } else { - $('input', this).on('change', function () { - var ele = $(this).parents("li").first(); - ele.toggleClass("done"); - if ($('input', ele).is(":checked")) { - settings.onCheck.call(ele); - } else { - settings.onUncheck.call(ele); - } - }); - } - }); - }; -}(jQuery)); +/*! AdminLTE app.js
+ * ================
+ * Main JS application file for AdminLTE v2. This file
+ * should be included in all pages. It controls some layout
+ * options and implements exclusive AdminLTE plugins.
+ *
+ * @Author Almsaeed Studio
+ * @Support <http://www.almsaeedstudio.com>
+ * @Email <abdullah@almsaeedstudio.com>
+ * @version 2.3.6
+ * @license MIT <http://opensource.org/licenses/MIT>
+ */
+
+//Make sure jQuery has been loaded before app.js
+if (typeof jQuery === "undefined") {
+ throw new Error("AdminLTE requires jQuery");
+}
+
+/* AdminLTE
+ *
+ * @type Object
+ * @description $.AdminLTE is the main object for the template's app.
+ * It's used for implementing functions and options related
+ * to the template. Keeping everything wrapped in an object
+ * prevents conflict with other plugins and is a better
+ * way to organize our code.
+ */
+$.AdminLTE = {};
+
+/* --------------------
+ * - AdminLTE Options -
+ * --------------------
+ * Modify these options to suit your implementation
+ */
+$.AdminLTE.options = {
+ //Add slimscroll to navbar menus
+ //This requires you to load the slimscroll plugin
+ //in every page before app.js
+ navbarMenuSlimscroll: true,
+ navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar
+ navbarMenuHeight: "200px", //The height of the inner menu
+ //General animation speed for JS animated elements such as box collapse/expand and
+ //sidebar treeview slide up/down. This options accepts an integer as milliseconds,
+ //'fast', 'normal', or 'slow'
+ animationSpeed: 500,
+ //Sidebar push menu toggle button selector
+ sidebarToggleSelector: "[data-toggle='offcanvas']",
+ //Activate sidebar push menu
+ sidebarPushMenu: true,
+ //Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)
+ sidebarSlimScroll: true,
+ //Enable sidebar expand on hover effect for sidebar mini
+ //This option is forced to true if both the fixed layout and sidebar mini
+ //are used together
+ sidebarExpandOnHover: false,
+ //BoxRefresh Plugin
+ enableBoxRefresh: true,
+ //Bootstrap.js tooltip
+ enableBSToppltip: true,
+ BSTooltipSelector: "[data-toggle='tooltip']",
+ //Enable Fast Click. Fastclick.js creates a more
+ //native touch experience with touch devices. If you
+ //choose to enable the plugin, make sure you load the script
+ //before AdminLTE's app.js
+ enableFastclick: false,
+ //Control Sidebar Options
+ enableControlSidebar: true,
+ controlSidebarOptions: {
+ //Which button should trigger the open/close event
+ toggleBtnSelector: "[data-toggle='control-sidebar']",
+ //The sidebar selector
+ selector: ".control-sidebar",
+ //Enable slide over content
+ slide: true
+ },
+ //Box Widget Plugin. Enable this plugin
+ //to allow boxes to be collapsed and/or removed
+ enableBoxWidget: true,
+ //Box Widget plugin options
+ boxWidgetOptions: {
+ boxWidgetIcons: {
+ //Collapse icon
+ collapse: 'fa-minus',
+ //Open icon
+ open: 'fa-plus',
+ //Remove icon
+ remove: 'fa-times'
+ },
+ boxWidgetSelectors: {
+ //Remove button selector
+ remove: '[data-widget="remove"]',
+ //Collapse button selector
+ collapse: '[data-widget="collapse"]'
+ }
+ },
+ //Direct Chat plugin options
+ directChat: {
+ //Enable direct chat by default
+ enable: true,
+ //The button to open and close the chat contacts pane
+ contactToggleSelector: '[data-widget="chat-pane-toggle"]'
+ },
+ //Define the set of colors to use globally around the website
+ colors: {
+ lightBlue: "#3c8dbc",
+ red: "#f56954",
+ green: "#00a65a",
+ aqua: "#00c0ef",
+ yellow: "#f39c12",
+ blue: "#0073b7",
+ navy: "#001F3F",
+ teal: "#39CCCC",
+ olive: "#3D9970",
+ lime: "#01FF70",
+ orange: "#FF851B",
+ fuchsia: "#F012BE",
+ purple: "#8E24AA",
+ maroon: "#D81B60",
+ black: "#222222",
+ gray: "#d2d6de"
+ },
+ //The standard screen sizes that bootstrap uses.
+ //If you change these in the variables.less file, change
+ //them here too.
+ screenSizes: {
+ xs: 480,
+ sm: 768,
+ md: 992,
+ lg: 1200
+ }
+};
+
+/* ------------------
+ * - Implementation -
+ * ------------------
+ * The next block of code implements AdminLTE's
+ * functions and plugins as specified by the
+ * options above.
+ */
+$(function () {
+ "use strict";
+
+ //Fix for IE page transitions
+ $("body").removeClass("hold-transition");
+
+ //Extend options if external options exist
+ if (typeof AdminLTEOptions !== "undefined") {
+ $.extend(true,
+ $.AdminLTE.options,
+ AdminLTEOptions);
+ }
+
+ //Easy access to options
+ var o = $.AdminLTE.options;
+
+ //Set up the object
+ _init();
+
+ //Activate the layout maker
+ $.AdminLTE.layout.activate();
+
+ //Enable sidebar tree view controls
+ $.AdminLTE.tree('.sidebar');
+
+ //Enable control sidebar
+ if (o.enableControlSidebar) {
+ $.AdminLTE.controlSidebar.activate();
+ }
+
+ //Add slimscroll to navbar dropdown
+ if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') {
+ $(".navbar .menu").slimscroll({
+ height: o.navbarMenuHeight,
+ alwaysVisible: false,
+ size: o.navbarMenuSlimscrollWidth
+ }).css("width", "100%");
+ }
+
+ //Activate sidebar push menu
+ if (o.sidebarPushMenu) {
+ $.AdminLTE.pushMenu.activate(o.sidebarToggleSelector);
+ }
+
+ //Activate Bootstrap tooltip
+ if (o.enableBSToppltip) {
+ $('body').tooltip({
+ selector: o.BSTooltipSelector
+ });
+ }
+
+ //Activate box widget
+ if (o.enableBoxWidget) {
+ $.AdminLTE.boxWidget.activate();
+ }
+
+ //Activate fast click
+ if (o.enableFastclick && typeof FastClick != 'undefined') {
+ FastClick.attach(document.body);
+ }
+
+ //Activate direct chat widget
+ if (o.directChat.enable) {
+ $(document).on('click', o.directChat.contactToggleSelector, function () {
+ var box = $(this).parents('.direct-chat').first();
+ box.toggleClass('direct-chat-contacts-open');
+ });
+ }
+
+ /*
+ * INITIALIZE BUTTON TOGGLE
+ * ------------------------
+ */
+ $('.btn-group[data-toggle="btn-toggle"]').each(function () {
+ var group = $(this);
+ $(this).find(".btn").on('click', function (e) {
+ group.find(".btn.active").removeClass("active");
+ $(this).addClass("active");
+ e.preventDefault();
+ });
+
+ });
+});
+
+/* ----------------------------------
+ * - Initialize the AdminLTE Object -
+ * ----------------------------------
+ * All AdminLTE functions are implemented below.
+ */
+function _init() {
+ 'use strict';
+ /* Layout
+ * ======
+ * Fixes the layout height in case min-height fails.
+ *
+ * @type Object
+ * @usage $.AdminLTE.layout.activate()
+ * $.AdminLTE.layout.fix()
+ * $.AdminLTE.layout.fixSidebar()
+ */
+ $.AdminLTE.layout = {
+ activate: function () {
+ var _this = this;
+ _this.fix();
+ _this.fixSidebar();
+ $(window, ".wrapper").resize(function () {
+ _this.fix();
+ _this.fixSidebar();
+ });
+ },
+ fix: function () {
+ //Get window height and the wrapper height
+ var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight();
+ var window_height = $(window).height();
+ var sidebar_height = $(".sidebar").height();
+ //Set the min-height of the content and sidebar based on the
+ //the height of the document.
+ if ($("body").hasClass("fixed")) {
+ $(".content-wrapper, .right-side").css('min-height', window_height - $('.main-footer').outerHeight());
+ } else {
+ var postSetWidth;
+ if (window_height >= sidebar_height) {
+ $(".content-wrapper, .right-side").css('min-height', window_height - neg);
+ postSetWidth = window_height - neg;
+ } else {
+ $(".content-wrapper, .right-side").css('min-height', sidebar_height);
+ postSetWidth = sidebar_height;
+ }
+
+ //Fix for the control sidebar height
+ var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector);
+ if (typeof controlSidebar !== "undefined") {
+ if (controlSidebar.height() > postSetWidth)
+ $(".content-wrapper, .right-side").css('min-height', controlSidebar.height());
+ }
+
+ }
+ },
+ fixSidebar: function () {
+ //Make sure the body tag has the .fixed class
+ if (!$("body").hasClass("fixed")) {
+ if (typeof $.fn.slimScroll != 'undefined') {
+ $(".sidebar").slimScroll({destroy: true}).height("auto");
+ }
+ return;
+ } else if (typeof $.fn.slimScroll == 'undefined' && window.console) {
+ window.console.error("Error: the fixed layout requires the slimscroll plugin!");
+ }
+ //Enable slimscroll for fixed layout
+ if ($.AdminLTE.options.sidebarSlimScroll) {
+ if (typeof $.fn.slimScroll != 'undefined') {
+ //Destroy if it exists
+ $(".sidebar").slimScroll({destroy: true}).height("auto");
+ //Add slimscroll
+ $(".sidebar").slimscroll({
+ height: ($(window).height() - $(".main-header").height()) + "px",
+ color: "rgba(0,0,0,0.2)",
+ size: "3px"
+ });
+ }
+ }
+ }
+ };
+
+ /* PushMenu()
+ * ==========
+ * Adds the push menu functionality to the sidebar.
+ *
+ * @type Function
+ * @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']")
+ */
+ $.AdminLTE.pushMenu = {
+ activate: function (toggleBtn) {
+ //Get the screen sizes
+ var screenSizes = $.AdminLTE.options.screenSizes;
+
+ //Enable sidebar toggle
+ $(document).on('click', toggleBtn, function (e) {
+ e.preventDefault();
+
+ //Enable sidebar push menu
+ if ($(window).width() > (screenSizes.sm - 1)) {
+ if ($("body").hasClass('sidebar-collapse')) {
+ $("body").removeClass('sidebar-collapse').trigger('expanded.pushMenu');
+ } else {
+ $("body").addClass('sidebar-collapse').trigger('collapsed.pushMenu');
+ }
+ }
+ //Handle sidebar push menu for small screens
+ else {
+ if ($("body").hasClass('sidebar-open')) {
+ $("body").removeClass('sidebar-open').removeClass('sidebar-collapse').trigger('collapsed.pushMenu');
+ } else {
+ $("body").addClass('sidebar-open').trigger('expanded.pushMenu');
+ }
+ }
+ });
+
+ $(".content-wrapper").click(function () {
+ //Enable hide menu when clicking on the content-wrapper on small screens
+ if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) {
+ $("body").removeClass('sidebar-open');
+ }
+ });
+
+ //Enable expand on hover for sidebar mini
+ if ($.AdminLTE.options.sidebarExpandOnHover
+ || ($('body').hasClass('fixed')
+ && $('body').hasClass('sidebar-mini'))) {
+ this.expandOnHover();
+ }
+ },
+ expandOnHover: function () {
+ var _this = this;
+ var screenWidth = $.AdminLTE.options.screenSizes.sm - 1;
+ //Expand sidebar on hover
+ $('.main-sidebar').hover(function () {
+ if ($('body').hasClass('sidebar-mini')
+ && $("body").hasClass('sidebar-collapse')
+ && $(window).width() > screenWidth) {
+ _this.expand();
+ }
+ }, function () {
+ if ($('body').hasClass('sidebar-mini')
+ && $('body').hasClass('sidebar-expanded-on-hover')
+ && $(window).width() > screenWidth) {
+ _this.collapse();
+ }
+ });
+ },
+ expand: function () {
+ $("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover');
+ },
+ collapse: function () {
+ if ($('body').hasClass('sidebar-expanded-on-hover')) {
+ $('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse');
+ }
+ }
+ };
+
+ /* Tree()
+ * ======
+ * Converts the sidebar into a multilevel
+ * tree view menu.
+ *
+ * @type Function
+ * @Usage: $.AdminLTE.tree('.sidebar')
+ */
+ $.AdminLTE.tree = function (menu) {
+ var _this = this;
+ var animationSpeed = $.AdminLTE.options.animationSpeed;
+ $(document).off('click', menu + ' li a')
+ .on('click', menu + ' li a', function (e) {
+ //Get the clicked link and the next element
+ var $this = $(this);
+ var checkElement = $this.next();
+
+ //Check if the next element is a menu and is visible
+ if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible')) && (!$('body').hasClass('sidebar-collapse'))) {
+ //Close the menu
+ checkElement.slideUp(animationSpeed, function () {
+ checkElement.removeClass('menu-open');
+ //Fix the layout in case the sidebar stretches over the height of the window
+ //_this.layout.fix();
+ });
+ checkElement.parent("li").removeClass("active");
+ }
+ //If the menu is not visible
+ else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {
+ //Get the parent menu
+ var parent = $this.parents('ul').first();
+ //Close all open menus within the parent
+ var ul = parent.find('ul:visible').slideUp(animationSpeed);
+ //Remove the menu-open class from the parent
+ ul.removeClass('menu-open');
+ //Get the parent li
+ var parent_li = $this.parent("li");
+
+ //Open the target menu and add the menu-open class
+ checkElement.slideDown(animationSpeed, function () {
+ //Add the class active to the parent li
+ checkElement.addClass('menu-open');
+ parent.find('li.active').removeClass('active');
+ parent_li.addClass('active');
+ //Fix the layout in case the sidebar stretches over the height of the window
+ _this.layout.fix();
+ });
+ }
+ //if this isn't a link, prevent the page from being redirected
+ if (checkElement.is('.treeview-menu')) {
+ e.preventDefault();
+ }
+ });
+ };
+
+ /* ControlSidebar
+ * ==============
+ * Adds functionality to the right sidebar
+ *
+ * @type Object
+ * @usage $.AdminLTE.controlSidebar.activate(options)
+ */
+ $.AdminLTE.controlSidebar = {
+ //instantiate the object
+ activate: function () {
+ //Get the object
+ var _this = this;
+ //Update options
+ var o = $.AdminLTE.options.controlSidebarOptions;
+ //Get the sidebar
+ var sidebar = $(o.selector);
+ //The toggle button
+ var btn = $(o.toggleBtnSelector);
+
+ //Listen to the click event
+ btn.on('click', function (e) {
+ e.preventDefault();
+ //If the sidebar is not open
+ if (!sidebar.hasClass('control-sidebar-open')
+ && !$('body').hasClass('control-sidebar-open')) {
+ //Open the sidebar
+ _this.open(sidebar, o.slide);
+ } else {
+ _this.close(sidebar, o.slide);
+ }
+ });
+
+ //If the body has a boxed layout, fix the sidebar bg position
+ var bg = $(".control-sidebar-bg");
+ _this._fix(bg);
+
+ //If the body has a fixed layout, make the control sidebar fixed
+ if ($('body').hasClass('fixed')) {
+ _this._fixForFixed(sidebar);
+ } else {
+ //If the content height is less than the sidebar's height, force max height
+ if ($('.content-wrapper, .right-side').height() < sidebar.height()) {
+ _this._fixForContent(sidebar);
+ }
+ }
+ },
+ //Open the control sidebar
+ open: function (sidebar, slide) {
+ //Slide over content
+ if (slide) {
+ sidebar.addClass('control-sidebar-open');
+ } else {
+ //Push the content by adding the open class to the body instead
+ //of the sidebar itself
+ $('body').addClass('control-sidebar-open');
+ }
+ },
+ //Close the control sidebar
+ close: function (sidebar, slide) {
+ if (slide) {
+ sidebar.removeClass('control-sidebar-open');
+ } else {
+ $('body').removeClass('control-sidebar-open');
+ }
+ },
+ _fix: function (sidebar) {
+ var _this = this;
+ if ($("body").hasClass('layout-boxed')) {
+ sidebar.css('position', 'absolute');
+ sidebar.height($(".wrapper").height());
+ if (_this.hasBindedResize) {
+ return;
+ }
+ $(window).resize(function () {
+ _this._fix(sidebar);
+ });
+ _this.hasBindedResize = true;
+ } else {
+ sidebar.css({
+ 'position': 'fixed',
+ 'height': 'auto'
+ });
+ }
+ },
+ _fixForFixed: function (sidebar) {
+ sidebar.css({
+ 'position': 'fixed',
+ 'max-height': '100%',
+ 'overflow': 'auto',
+ 'padding-bottom': '50px'
+ });
+ },
+ _fixForContent: function (sidebar) {
+ $(".content-wrapper, .right-side").css('min-height', sidebar.height());
+ }
+ };
+
+ /* BoxWidget
+ * =========
+ * BoxWidget is a plugin to handle collapsing and
+ * removing boxes from the screen.
+ *
+ * @type Object
+ * @usage $.AdminLTE.boxWidget.activate()
+ * Set all your options in the main $.AdminLTE.options object
+ */
+ $.AdminLTE.boxWidget = {
+ selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors,
+ icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons,
+ animationSpeed: $.AdminLTE.options.animationSpeed,
+ activate: function (_box) {
+ var _this = this;
+ if (!_box) {
+ _box = document; // activate all boxes per default
+ }
+ //Listen for collapse event triggers
+ $(_box).on('click', _this.selectors.collapse, function (e) {
+ e.preventDefault();
+ _this.collapse($(this));
+ });
+
+ //Listen for remove event triggers
+ $(_box).on('click', _this.selectors.remove, function (e) {
+ e.preventDefault();
+ _this.remove($(this));
+ });
+ },
+ collapse: function (element) {
+ var _this = this;
+ //Find the box parent
+ var box = element.parents(".box").first();
+ //Find the body and the footer
+ var box_content = box.find("> .box-body, > .box-footer, > form >.box-body, > form > .box-footer");
+ if (!box.hasClass("collapsed-box")) {
+ //Convert minus into plus
+ element.children(":first")
+ .removeClass(_this.icons.collapse)
+ .addClass(_this.icons.open);
+ //Hide the content
+ box_content.slideUp(_this.animationSpeed, function () {
+ box.addClass("collapsed-box");
+ });
+ } else {
+ //Convert plus into minus
+ element.children(":first")
+ .removeClass(_this.icons.open)
+ .addClass(_this.icons.collapse);
+ //Show the content
+ box_content.slideDown(_this.animationSpeed, function () {
+ box.removeClass("collapsed-box");
+ });
+ }
+ },
+ remove: function (element) {
+ //Find the box parent
+ var box = element.parents(".box").first();
+ box.slideUp(this.animationSpeed);
+ }
+ };
+}
+
+/* ------------------
+ * - Custom Plugins -
+ * ------------------
+ * All custom plugins are defined below.
+ */
+
+/*
+ * BOX REFRESH BUTTON
+ * ------------------
+ * This is a custom plugin to use with the component BOX. It allows you to add
+ * a refresh button to the box. It converts the box's state to a loading state.
+ *
+ * @type plugin
+ * @usage $("#box-widget").boxRefresh( options );
+ */
+(function ($) {
+
+ "use strict";
+
+ $.fn.boxRefresh = function (options) {
+
+ // Render options
+ var settings = $.extend({
+ //Refresh button selector
+ trigger: ".refresh-btn",
+ //File source to be loaded (e.g: ajax/src.php)
+ source: "",
+ //Callbacks
+ onLoadStart: function (box) {
+ return box;
+ }, //Right after the button has been clicked
+ onLoadDone: function (box) {
+ return box;
+ } //When the source has been loaded
+
+ }, options);
+
+ //The overlay
+ var overlay = $('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>');
+
+ return this.each(function () {
+ //if a source is specified
+ if (settings.source === "") {
+ if (window.console) {
+ window.console.log("Please specify a source first - boxRefresh()");
+ }
+ return;
+ }
+ //the box
+ var box = $(this);
+ //the button
+ var rBtn = box.find(settings.trigger).first();
+
+ //On trigger click
+ rBtn.on('click', function (e) {
+ e.preventDefault();
+ //Add loading overlay
+ start(box);
+
+ //Perform ajax call
+ box.find(".box-body").load(settings.source, function () {
+ done(box);
+ });
+ });
+ });
+
+ function start(box) {
+ //Add overlay and loading img
+ box.append(overlay);
+
+ settings.onLoadStart.call(box);
+ }
+
+ function done(box) {
+ //Remove overlay and loading img
+ box.find(overlay).remove();
+
+ settings.onLoadDone.call(box);
+ }
+
+ };
+
+})(jQuery);
+
+/*
+ * EXPLICIT BOX CONTROLS
+ * -----------------------
+ * This is a custom plugin to use with the component BOX. It allows you to activate
+ * a box inserted in the DOM after the app.js was loaded, toggle and remove box.
+ *
+ * @type plugin
+ * @usage $("#box-widget").activateBox();
+ * @usage $("#box-widget").toggleBox();
+ * @usage $("#box-widget").removeBox();
+ */
+(function ($) {
+
+ 'use strict';
+
+ $.fn.activateBox = function () {
+ $.AdminLTE.boxWidget.activate(this);
+ };
+
+ $.fn.toggleBox = function () {
+ var button = $($.AdminLTE.boxWidget.selectors.collapse, this);
+ $.AdminLTE.boxWidget.collapse(button);
+ };
+
+ $.fn.removeBox = function () {
+ var button = $($.AdminLTE.boxWidget.selectors.remove, this);
+ $.AdminLTE.boxWidget.remove(button);
+ };
+
+})(jQuery);
+
+/*
+ LIST CUSTOM PLUGIN
+ * -----------------------
+ * This plugin depends on iCheck plugin for checkbox and radio inputs
+ *
+ * @type plugin
+ */
+(function ($) {
+
+ 'use strict';
+
+ $.fn.todolist = function (options) {
+ // Render options
+ var settings = $.extend({
+ //When the user checks the input
+ onCheck: function (ele) {
+ return ele;
+ },
+ //When the user unchecks the input
+ onUncheck: function (ele) {
+ return ele;
+ }
+ }, options);
+
+ return this.each(function () {
+
+ if (typeof $.fn.iCheck != 'undefined') {
+ $('input', this).on('ifChecked', function () {
+ var ele = $(this).parents("li").first();
+ ele.toggleClass("done");
+ settings.onCheck.call(ele);
+ });
+
+ $('input', this).on('ifUnchecked', function () {
+ var ele = $(this).parents("li").first();
+ ele.toggleClass("done");
+ settings.onUncheck.call(ele);
+ });
+ } else {
+ $('input', this).on('change', function () {
+ var ele = $(this).parents("li").first();
+ ele.toggleClass("done");
+ if ($('input', ele).is(":checked")) {
+ settings.onCheck.call(ele);
+ } else {
+ settings.onUncheck.call(ele);
+ }
+ });
+ }
+ });
+ };
+}(jQuery));
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/attrchange.js b/main/app/sprinkles/core/assets/userfrosting/js/attrchange.js index df22df7..e2606e8 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/attrchange.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/attrchange.js @@ -1,132 +1,132 @@ -/* -A simple jQuery function that can add listeners on attribute change. -http://meetselva.github.io/attrchange/ - -About License: -Copyright (C) 2013-2014 Selvakumar Arumugam -You may use attrchange plugin under the terms of the MIT Licese. -https://github.com/meetselva/attrchange/blob/master/MIT-License.txt - */ -(function ($) { - function isDOMAttrModifiedSupported() { - var p = document.createElement('p'); - var flag = false; - - if (p.addEventListener) { - p.addEventListener('DOMAttrModified', function () { - flag = true - }, false); - } else if (p.attachEvent) { - p.attachEvent('onDOMAttrModified', function () { - flag = true - }); - } else { - return false; - } - p.setAttribute('id', 'target'); - return flag; - } - - function checkAttributes(chkAttr, e) { - if (chkAttr) { - var attributes = this.data('attr-old-value'); - - if (e.attributeName.indexOf('style') >= 0) { - if (!attributes['style']) - attributes['style'] = {}; //initialize - var keys = e.attributeName.split('.'); - e.attributeName = keys[0]; - e.oldValue = attributes['style'][keys[1]]; //old value - e.newValue = keys[1] + ':' - + this.prop("style")[$.camelCase(keys[1])]; //new value - attributes['style'][keys[1]] = e.newValue; - } else { - e.oldValue = attributes[e.attributeName]; - e.newValue = this.attr(e.attributeName); - attributes[e.attributeName] = e.newValue; - } - - this.data('attr-old-value', attributes); //update the old value object - } - } - - //initialize Mutation Observer - var MutationObserver = window.MutationObserver - || window.WebKitMutationObserver; - - $.fn.attrchange = function (a, b) { - if (typeof a == 'object') {//core - var cfg = { - trackValues: false, - callback: $.noop - }; - //backward compatibility - if (typeof a === "function") { - cfg.callback = a; - } else { - $.extend(cfg, a); - } - - if (cfg.trackValues) { //get attributes old value - this.each(function (i, el) { - var attributes = {}; - for (var attr, i = 0, attrs = el.attributes, l = attrs.length; i < l; i++) { - attr = attrs.item(i); - attributes[attr.nodeName] = attr.value; - } - $(this).data('attr-old-value', attributes); - }); - } - - if (MutationObserver) { //Modern Browsers supporting MutationObserver - var mOptions = { - subtree: false, - attributes: true, - attributeOldValue: cfg.trackValues - }; - var observer = new MutationObserver(function (mutations) { - mutations.forEach(function (e) { - var _this = e.target; - //get new value if trackValues is true - if (cfg.trackValues) { - e.newValue = $(_this).attr(e.attributeName); - } - if ($(_this).data('attrchange-status') === 'connected') { //execute if connected - cfg.callback.call(_this, e); - } - }); - }); - - return this.data('attrchange-method', 'Mutation Observer').data('attrchange-status', 'connected') - .data('attrchange-obs', observer).each(function () { - observer.observe(this, mOptions); - }); - } else if (isDOMAttrModifiedSupported()) { //Opera - //Good old Mutation Events - return this.data('attrchange-method', 'DOMAttrModified').data('attrchange-status', 'connected').on('DOMAttrModified', function (event) { - if (event.originalEvent) { - event = event.originalEvent; - }//jQuery normalization is not required - event.attributeName = event.attrName; //property names to be consistent with MutationObserver - event.oldValue = event.prevValue; //property names to be consistent with MutationObserver - if ($(this).data('attrchange-status') === 'connected') { //disconnected logically - cfg.callback.call(this, event); - } - }); - } else if ('onpropertychange' in document.body) { //works only in IE - return this.data('attrchange-method', 'propertychange').data('attrchange-status', 'connected').on('propertychange', function (e) { - e.attributeName = window.event.propertyName; - //to set the attr old value - checkAttributes.call($(this), cfg.trackValues, e); - if ($(this).data('attrchange-status') === 'connected') { //disconnected logically - cfg.callback.call(this, e); - } - }); - } - return this; - } else if (typeof a == 'string' && $.fn.attrchange.hasOwnProperty('extensions') && - $.fn.attrchange['extensions'].hasOwnProperty(a)) { //extensions/options - return $.fn.attrchange['extensions'][a].call(this, b); - } - } +/*
+A simple jQuery function that can add listeners on attribute change.
+http://meetselva.github.io/attrchange/
+
+About License:
+Copyright (C) 2013-2014 Selvakumar Arumugam
+You may use attrchange plugin under the terms of the MIT Licese.
+https://github.com/meetselva/attrchange/blob/master/MIT-License.txt
+ */
+(function ($) {
+ function isDOMAttrModifiedSupported() {
+ var p = document.createElement('p');
+ var flag = false;
+
+ if (p.addEventListener) {
+ p.addEventListener('DOMAttrModified', function () {
+ flag = true
+ }, false);
+ } else if (p.attachEvent) {
+ p.attachEvent('onDOMAttrModified', function () {
+ flag = true
+ });
+ } else {
+ return false;
+ }
+ p.setAttribute('id', 'target');
+ return flag;
+ }
+
+ function checkAttributes(chkAttr, e) {
+ if (chkAttr) {
+ var attributes = this.data('attr-old-value');
+
+ if (e.attributeName.indexOf('style') >= 0) {
+ if (!attributes['style'])
+ attributes['style'] = {}; //initialize
+ var keys = e.attributeName.split('.');
+ e.attributeName = keys[0];
+ e.oldValue = attributes['style'][keys[1]]; //old value
+ e.newValue = keys[1] + ':'
+ + this.prop("style")[$.camelCase(keys[1])]; //new value
+ attributes['style'][keys[1]] = e.newValue;
+ } else {
+ e.oldValue = attributes[e.attributeName];
+ e.newValue = this.attr(e.attributeName);
+ attributes[e.attributeName] = e.newValue;
+ }
+
+ this.data('attr-old-value', attributes); //update the old value object
+ }
+ }
+
+ //initialize Mutation Observer
+ var MutationObserver = window.MutationObserver
+ || window.WebKitMutationObserver;
+
+ $.fn.attrchange = function (a, b) {
+ if (typeof a == 'object') {//core
+ var cfg = {
+ trackValues: false,
+ callback: $.noop
+ };
+ //backward compatibility
+ if (typeof a === "function") {
+ cfg.callback = a;
+ } else {
+ $.extend(cfg, a);
+ }
+
+ if (cfg.trackValues) { //get attributes old value
+ this.each(function (i, el) {
+ var attributes = {};
+ for (var attr, i = 0, attrs = el.attributes, l = attrs.length; i < l; i++) {
+ attr = attrs.item(i);
+ attributes[attr.nodeName] = attr.value;
+ }
+ $(this).data('attr-old-value', attributes);
+ });
+ }
+
+ if (MutationObserver) { //Modern Browsers supporting MutationObserver
+ var mOptions = {
+ subtree: false,
+ attributes: true,
+ attributeOldValue: cfg.trackValues
+ };
+ var observer = new MutationObserver(function (mutations) {
+ mutations.forEach(function (e) {
+ var _this = e.target;
+ //get new value if trackValues is true
+ if (cfg.trackValues) {
+ e.newValue = $(_this).attr(e.attributeName);
+ }
+ if ($(_this).data('attrchange-status') === 'connected') { //execute if connected
+ cfg.callback.call(_this, e);
+ }
+ });
+ });
+
+ return this.data('attrchange-method', 'Mutation Observer').data('attrchange-status', 'connected')
+ .data('attrchange-obs', observer).each(function () {
+ observer.observe(this, mOptions);
+ });
+ } else if (isDOMAttrModifiedSupported()) { //Opera
+ //Good old Mutation Events
+ return this.data('attrchange-method', 'DOMAttrModified').data('attrchange-status', 'connected').on('DOMAttrModified', function (event) {
+ if (event.originalEvent) {
+ event = event.originalEvent;
+ }//jQuery normalization is not required
+ event.attributeName = event.attrName; //property names to be consistent with MutationObserver
+ event.oldValue = event.prevValue; //property names to be consistent with MutationObserver
+ if ($(this).data('attrchange-status') === 'connected') { //disconnected logically
+ cfg.callback.call(this, event);
+ }
+ });
+ } else if ('onpropertychange' in document.body) { //works only in IE
+ return this.data('attrchange-method', 'propertychange').data('attrchange-status', 'connected').on('propertychange', function (e) {
+ e.attributeName = window.event.propertyName;
+ //to set the attr old value
+ checkAttributes.call($(this), cfg.trackValues, e);
+ if ($(this).data('attrchange-status') === 'connected') { //disconnected logically
+ cfg.callback.call(this, e);
+ }
+ });
+ }
+ return this;
+ } else if (typeof a == 'string' && $.fn.attrchange.hasOwnProperty('extensions') &&
+ $.fn.attrchange['extensions'].hasOwnProperty(a)) { //extensions/options
+ return $.fn.attrchange['extensions'][a].call(this, b);
+ }
+ }
})(jQuery);
\ No newline at end of file diff --git a/main/app/sprinkles/core/assets/userfrosting/js/fortress-jqueryvalidation-methods.js b/main/app/sprinkles/core/assets/userfrosting/js/fortress-jqueryvalidation-methods.js index d92ab38..6f43359 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/fortress-jqueryvalidation-methods.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/fortress-jqueryvalidation-methods.js @@ -1,57 +1,57 @@ -$.validator.addMethod("equals", function (value, element, params) { - params = $.extend( - true, // deep extend - { - value: '', - caseSensitive: false - }, params); - - if (!params.caseSensitive) { - params.value = params.value.toLowerCase(); - value = value.toLowerCase(); - } - return this.optional(element) || value == params.value; -}, "Value is not correct."); - -$.validator.addMethod("notEquals", function (value, element, params) { - params = $.extend( - true, // deep extend - { - value: '', - caseSensitive: false - }, params); - - if (!params.caseSensitive) { - params.value = params.value.toLowerCase(); - value = value.toLowerCase(); - } - return this.optional(element) || value != params.value; -}, "Value is not correct."); - -$.validator.addMethod("noLeadingWhitespace", function (value, element) { - return this.optional(element) || /^\S.*$/i.test(value); -}, "No leading whitespace allowed"); - -$.validator.addMethod("noTrailingWhitespace", function (value, element) { - return this.optional(element) || /^.*\S$/i.test(value); -}, "No trailing whitespace allowed"); - -jQuery.validator.addMethod("memberOf", function (value, element, arr) { - return $.inArray(value, arr) != -1; -}, "Data provided must match one of the provided options."); - -jQuery.validator.addMethod("notMemberOf", function (value, element, arr) { - return $.inArray(value, arr) == -1; -}, "Data provided must NOT match one of the provided options."); - -jQuery.validator.addMethod("matchFormField", function (value, element, field) { - return value === $(element).closest('form').find("input[name=" + field + "]").val(); -}, "The specified fields must match."); - -jQuery.validator.addMethod("notMatchFormField", function (value, element, field) { - return value !== $(element).closest('form').find("input[name=" + field + "]").val(); -}, "The specified fields must NOT match."); - -$.validator.addMethod("username", function (value, element) { - return this.optional(element) || /^([a-z0-9\.\-_])+$/.test(value); -}, "The field may only contain lowercase letters, digits, '.', '-', and '_'."); +$.validator.addMethod("equals", function (value, element, params) {
+ params = $.extend(
+ true, // deep extend
+ {
+ value: '',
+ caseSensitive: false
+ }, params);
+
+ if (!params.caseSensitive) {
+ params.value = params.value.toLowerCase();
+ value = value.toLowerCase();
+ }
+ return this.optional(element) || value == params.value;
+}, "Value is not correct.");
+
+$.validator.addMethod("notEquals", function (value, element, params) {
+ params = $.extend(
+ true, // deep extend
+ {
+ value: '',
+ caseSensitive: false
+ }, params);
+
+ if (!params.caseSensitive) {
+ params.value = params.value.toLowerCase();
+ value = value.toLowerCase();
+ }
+ return this.optional(element) || value != params.value;
+}, "Value is not correct.");
+
+$.validator.addMethod("noLeadingWhitespace", function (value, element) {
+ return this.optional(element) || /^\S.*$/i.test(value);
+}, "No leading whitespace allowed");
+
+$.validator.addMethod("noTrailingWhitespace", function (value, element) {
+ return this.optional(element) || /^.*\S$/i.test(value);
+}, "No trailing whitespace allowed");
+
+jQuery.validator.addMethod("memberOf", function (value, element, arr) {
+ return $.inArray(value, arr) != -1;
+}, "Data provided must match one of the provided options.");
+
+jQuery.validator.addMethod("notMemberOf", function (value, element, arr) {
+ return $.inArray(value, arr) == -1;
+}, "Data provided must NOT match one of the provided options.");
+
+jQuery.validator.addMethod("matchFormField", function (value, element, field) {
+ return value === $(element).closest('form').find("input[name=" + field + "]").val();
+}, "The specified fields must match.");
+
+jQuery.validator.addMethod("notMatchFormField", function (value, element, field) {
+ return value !== $(element).closest('form').find("input[name=" + field + "]").val();
+}, "The specified fields must NOT match.");
+
+$.validator.addMethod("username", function (value, element) {
+ return this.optional(element) || /^([a-z0-9\.\-_])+$/.test(value);
+}, "The field may only contain lowercase letters, digits, '.', '-', and '_'.");
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/handlebars-helpers.js b/main/app/sprinkles/core/assets/userfrosting/js/handlebars-helpers.js index 60d71ea..ff5e2e9 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/handlebars-helpers.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/handlebars-helpers.js @@ -1,119 +1,119 @@ -/** - * This file contains extra helper functions for Handlebars.js. - * - * @see http://handlebarsjs.com/#helpers - */ - -/** - * Improved comparison operator - * See https://stackoverflow.com/a/16315366/2970321 - */ -Handlebars.registerHelper('ifx', function (v1, operator, v2, options) { - switch (operator) { - case '==': - return (v1 == v2) ? options.fn(this) : options.inverse(this); - case '===': - return (v1 === v2) ? options.fn(this) : options.inverse(this); - case '!=': - return (v1 != v2) ? options.fn(this) : options.inverse(this); - case '!==': - return (v1 !== v2) ? options.fn(this) : options.inverse(this); - case '<': - return (v1 < v2) ? options.fn(this) : options.inverse(this); - case '<=': - return (v1 <= v2) ? options.fn(this) : options.inverse(this); - case '>': - return (v1 > v2) ? options.fn(this) : options.inverse(this); - case '>=': - return (v1 >= v2) ? options.fn(this) : options.inverse(this); - case '&&': - return (v1 && v2) ? options.fn(this) : options.inverse(this); - case '||': - return (v1 || v2) ? options.fn(this) : options.inverse(this); - default: - return (v1 == v2) ? options.fn(this) : options.inverse(this); - } -}); - -/** - * Perform simple calculations. - * - * usage: {{calc x '+' 2}} - */ -Handlebars.registerHelper('calc', function (v1, operator, v2, options) { - lvalue = parseFloat(v1); - rvalue = parseFloat(v2); - - return { - "+": lvalue + rvalue, - "-": lvalue - rvalue, - "*": lvalue * rvalue, - "/": lvalue / rvalue, - "%": lvalue % rvalue - }[operator]; -}); - -/** - * format an ISO date using Moment.js - * - * moment syntax example: moment(Date("2011-07-18T15:50:52")).format("MMMM YYYY") - * usage: {{dateFormat creation_date format="MMMM YYYY"}} - * @requires momentjs http://momentjs.com/ - */ -Handlebars.registerHelper('dateFormat', function (context, block) { - if (window.moment) { - var f = block.hash.format || "MMM Do, YYYY"; - return moment(context).format(f); - } else { - // moment plugin not available. return data as is. - console.log("The moment.js plugin is not loaded. Please make sure you have included moment.js on this page."); - return context; - } -}); - -/** - * Format a phone number. - */ -Handlebars.registerHelper("phoneUSFormat", function (phoneNumber) { - if (typeof phoneNumber === 'undefined') { - return ''; - } - - phoneNumber = phoneNumber.toString(); - return "(" + phoneNumber.substr(0, 3) + ") " + phoneNumber.substr(3, 3) + "-" + phoneNumber.substr(6, 4); -}); - -/** - * Format currency (USD). - */ -Handlebars.registerHelper("currencyUsdFormat", function (amount) { - var parsedAmount = parseFloat(amount); - if (parsedAmount < 0) { - return "-$" + Math.abs(parsedAmount).toFixed(2); - } else { - return "$" + parsedAmount.toFixed(2); - } -}); - -/** - * Convert a string to a slug using speakingurl.js. - * - * @requires speakingurl https://pid.github.io/speakingurl/ - */ -Handlebars.registerHelper('slug', function (text) { - return getSlug(text); -}); - -/** - * Equality helper for Handlebars - * http://stackoverflow.com/questions/8853396/logical-operator-in-a-handlebars-js-if-conditional/21915381#21915381 - * @deprecated since 4.1 - use ifx instead - * usage: {{ifCond apple orange}} - */ -Handlebars.registerHelper('ifCond', function (v1, v2, options) { - if (v1 == v2) { - return options.fn(this); - } - - return options.inverse(this); -}); +/**
+ * This file contains extra helper functions for Handlebars.js.
+ *
+ * @see http://handlebarsjs.com/#helpers
+ */
+
+/**
+ * Improved comparison operator
+ * See https://stackoverflow.com/a/16315366/2970321
+ */
+Handlebars.registerHelper('ifx', function (v1, operator, v2, options) {
+ switch (operator) {
+ case '==':
+ return (v1 == v2) ? options.fn(this) : options.inverse(this);
+ case '===':
+ return (v1 === v2) ? options.fn(this) : options.inverse(this);
+ case '!=':
+ return (v1 != v2) ? options.fn(this) : options.inverse(this);
+ case '!==':
+ return (v1 !== v2) ? options.fn(this) : options.inverse(this);
+ case '<':
+ return (v1 < v2) ? options.fn(this) : options.inverse(this);
+ case '<=':
+ return (v1 <= v2) ? options.fn(this) : options.inverse(this);
+ case '>':
+ return (v1 > v2) ? options.fn(this) : options.inverse(this);
+ case '>=':
+ return (v1 >= v2) ? options.fn(this) : options.inverse(this);
+ case '&&':
+ return (v1 && v2) ? options.fn(this) : options.inverse(this);
+ case '||':
+ return (v1 || v2) ? options.fn(this) : options.inverse(this);
+ default:
+ return (v1 == v2) ? options.fn(this) : options.inverse(this);
+ }
+});
+
+/**
+ * Perform simple calculations.
+ *
+ * usage: {{calc x '+' 2}}
+ */
+Handlebars.registerHelper('calc', function (v1, operator, v2, options) {
+ lvalue = parseFloat(v1);
+ rvalue = parseFloat(v2);
+
+ return {
+ "+": lvalue + rvalue,
+ "-": lvalue - rvalue,
+ "*": lvalue * rvalue,
+ "/": lvalue / rvalue,
+ "%": lvalue % rvalue
+ }[operator];
+});
+
+/**
+ * format an ISO date using Moment.js
+ *
+ * moment syntax example: moment(Date("2011-07-18T15:50:52")).format("MMMM YYYY")
+ * usage: {{dateFormat creation_date format="MMMM YYYY"}}
+ * @requires momentjs http://momentjs.com/
+ */
+Handlebars.registerHelper('dateFormat', function (context, block) {
+ if (window.moment) {
+ var f = block.hash.format || "MMM Do, YYYY";
+ return moment(context).format(f);
+ } else {
+ // moment plugin not available. return data as is.
+ console.log("The moment.js plugin is not loaded. Please make sure you have included moment.js on this page.");
+ return context;
+ }
+});
+
+/**
+ * Format a phone number.
+ */
+Handlebars.registerHelper("phoneUSFormat", function (phoneNumber) {
+ if (typeof phoneNumber === 'undefined') {
+ return '';
+ }
+
+ phoneNumber = phoneNumber.toString();
+ return "(" + phoneNumber.substr(0, 3) + ") " + phoneNumber.substr(3, 3) + "-" + phoneNumber.substr(6, 4);
+});
+
+/**
+ * Format currency (USD).
+ */
+Handlebars.registerHelper("currencyUsdFormat", function (amount) {
+ var parsedAmount = parseFloat(amount);
+ if (parsedAmount < 0) {
+ return "-$" + Math.abs(parsedAmount).toFixed(2);
+ } else {
+ return "$" + parsedAmount.toFixed(2);
+ }
+});
+
+/**
+ * Convert a string to a slug using speakingurl.js.
+ *
+ * @requires speakingurl https://pid.github.io/speakingurl/
+ */
+Handlebars.registerHelper('slug', function (text) {
+ return getSlug(text);
+});
+
+/**
+ * Equality helper for Handlebars
+ * http://stackoverflow.com/questions/8853396/logical-operator-in-a-handlebars-js-if-conditional/21915381#21915381
+ * @deprecated since 4.1 - use ifx instead
+ * usage: {{ifCond apple orange}}
+ */
+Handlebars.registerHelper('ifCond', function (v1, v2, options) {
+ if (v1 == v2) {
+ return options.fn(this);
+ }
+
+ return options.inverse(this);
+});
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/query-string.js b/main/app/sprinkles/core/assets/userfrosting/js/query-string.js index ff3c88c..b40ce8f 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/query-string.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/query-string.js @@ -1,65 +1,65 @@ -/** - * @add jQuery.String - */ -$.String = $.extend($.String || {}, { - /** - * @function deparam - * - * Takes a string of name value pairs and returns a Object literal that represents those params. - * - * @param {String} params a string like <code>"foo=bar&person[age]=3"</code> - * @return {Object} A JavaScript Object that represents the params: - * - * { - * foo: "bar", - * person: { - * age: "3" - * } - * } - */ - deparam: function (params) { - var digitTest = /^\d+$/, - keyBreaker = /([^\[\]]+)|(\[\])/g, - plus = /\+/g, - paramTest = /([^?#]*)(#.*)?$/; - - if (!params || !paramTest.test(params)) { - return {}; - } - - - var data = {}, - pairs = params.split('&'), - current; - - for (var i = 0; i < pairs.length; i++) { - current = data; - var pair = pairs[i].split('='); - - // if we find foo=1+1=2 - if (pair.length != 2) { - pair = [pair[0], pair.slice(1).join("=")] - } - - var key = decodeURIComponent(pair[0].replace(plus, " ")), - value = decodeURIComponent(pair[1].replace(plus, " ")), - parts = key.match(keyBreaker); - - for (var j = 0; j < parts.length - 1; j++) { - var part = parts[j]; - if (!current[part]) { - // if what we are pointing to looks like an array - current[part] = digitTest.test(parts[j + 1]) || parts[j + 1] == "[]" ? [] : {} - } - current = current[part]; - } - lastPart = parts[parts.length - 1]; - if (lastPart == "[]") { - current.push(value) - } else { - current[lastPart] = value; - } - } - return data; - } -}); +/**
+ * @add jQuery.String
+ */
+$.String = $.extend($.String || {}, {
+ /**
+ * @function deparam
+ *
+ * Takes a string of name value pairs and returns a Object literal that represents those params.
+ *
+ * @param {String} params a string like <code>"foo=bar&person[age]=3"</code>
+ * @return {Object} A JavaScript Object that represents the params:
+ *
+ * {
+ * foo: "bar",
+ * person: {
+ * age: "3"
+ * }
+ * }
+ */
+ deparam: function (params) {
+ var digitTest = /^\d+$/,
+ keyBreaker = /([^\[\]]+)|(\[\])/g,
+ plus = /\+/g,
+ paramTest = /([^?#]*)(#.*)?$/;
+
+ if (!params || !paramTest.test(params)) {
+ return {};
+ }
+
+
+ var data = {},
+ pairs = params.split('&'),
+ current;
+
+ for (var i = 0; i < pairs.length; i++) {
+ current = data;
+ var pair = pairs[i].split('=');
+
+ // if we find foo=1+1=2
+ if (pair.length != 2) {
+ pair = [pair[0], pair.slice(1).join("=")]
+ }
+
+ var key = decodeURIComponent(pair[0].replace(plus, " ")),
+ value = decodeURIComponent(pair[1].replace(plus, " ")),
+ parts = key.match(keyBreaker);
+
+ for (var j = 0; j < parts.length - 1; j++) {
+ var part = parts[j];
+ if (!current[part]) {
+ // if what we are pointing to looks like an array
+ current[part] = digitTest.test(parts[j + 1]) || parts[j + 1] == "[]" ? [] : {}
+ }
+ current = current[part];
+ }
+ lastPart = parts[parts.length - 1];
+ if (lastPart == "[]") {
+ current.push(value)
+ } else {
+ current[lastPart] = value;
+ }
+ }
+ return data;
+ }
+});
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/tablesorter/widget-sort2Hash.js b/main/app/sprinkles/core/assets/userfrosting/js/tablesorter/widget-sort2Hash.js index 3b98529..f3348af 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/tablesorter/widget-sort2Hash.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/tablesorter/widget-sort2Hash.js @@ -1,277 +1,277 @@ -/*! Widget: sort2Hash (BETA) - updated 8/12/2017 (v2.28.15.uf) */ -/* Requires tablesorter v2.8+ and jQuery 1.7+ - * by Rob Garrison - * - * Temporary patched version of widget to handle browser history issues (#712). - */ -;(function ($) { - 'use strict'; - var ts = $.tablesorter || {}, - s2h = ts.sort2Hash = { - init: function (c, wo) { - var filter, temp, page, size, - table = c.table, - pager = c.pager, - hasSaveSort = ts.hasWidget(table, 'saveSort'), - sort = s2h.decodeHash(c, wo, 'sort'); - if ((sort && !hasSaveSort) || (sort && hasSaveSort && wo.sort2Hash_overrideSaveSort)) { - s2h.convertString2Sort(c, wo, sort); - } - if (ts.hasWidget(c.table, 'pager')) { - temp = parseInt(s2h.decodeHash(c, wo, 'page'), 10); - page = pager.page = (temp < 0 ? 0 : (temp > pager.totalPages ? pager.totalPages - 1 : temp)); - size = pager.size = parseInt(s2h.decodeHash(c, wo, 'size'), 10); - } - if (ts.hasWidget(table, 'filter')) { - filter = s2h.decodeHash(c, wo, 'filter'); - if (filter) { - filter = filter.split(wo.sort2Hash_separator); - c.$table.one('tablesorter-ready', function () { - setTimeout(function () { - c.$table.one('filterEnd', function () { - $(this).triggerHandler('pageAndSize', [page, size]); - }); - // use the newest filter comparison code - if (ts.filter.equalFilters) { - temp = ts.filter.equalFilters(c, c.lastSearch, filter); - } else { - // quick n' dirty comparison... it will miss filter changes of - // the same value in a different column, see #1363 - temp = (c.lastSearch || []).join('') !== (filter || []).join(''); - } - // don't set filters if they haven't changed - if (!temp) { - $.tablesorter.setFilters(table, filter, true); - } - }, 100); - }); - } - } - if (!filter) { - c.$table.one('tablesorter-ready', function () { - c.$table.triggerHandler('pageAndSize', [page, size]); - }); - } - - c.$table.on('sortEnd.sort2hash filterEnd.sort2hash pagerComplete.sort2Hash', function () { - if (this.hasInitialized) { - s2h.setHash(this.config, this.config.widgetOptions); - } - }); - }, - - getTableId: function (c, wo) { - // option > table id > table index on page - return wo.sort2Hash_tableId || - c.table.id || - 'table' + $('table').index(c.$table); - }, - regexEscape: function (v) { - return v.replace(/([\.\^\$\*\+\-\?\(\)\[\]\{\}\\\|])/g, '\\$1'); - }, - // convert 'first%20name,asc,last%20name,desc' into [[0,0], [1,1]] - convertString2Sort: function (c, wo, sortHash) { - var regex, column, direction, temp, index, $cell, - arry = sortHash.split(wo.sort2Hash_separator), - indx = 0, - len = arry.length, - sort = []; - while (indx < len) { - // column index or text - column = arry[indx++]; - temp = parseInt(column, 10); - // ignore wo.sort2Hash_useHeaderText setting & - // just see if column contains a number - if (isNaN(temp) || temp > c.columns) { - regex = new RegExp('(' + s2h.regexEscape(column) + ')', 'i'); - for (index = 0; index < c.columns; index++) { - $cell = c.$headerIndexed[index]; - if (regex.test($cell.attr(wo.sort2Hash_headerTextAttr))) { - column = index; - index = c.columns; - } - } - } - direction = arry[indx++]; - // ignore unpaired values - if (typeof column !== 'undefined' && typeof direction !== 'undefined') { - // convert text to 0, 1 - if (isNaN(direction)) { - // default to ascending sort - direction = direction.indexOf(wo.sort2Hash_directionText[1]) > -1 ? 1 : 0; - } - sort.push([column, direction]); - } - } - if (sort.length) { - c.sortList = sort; - } - }, - - // convert [[0,0],[1,1]] to 'first%20name,asc,last%20name,desc' - convertSort2String: function (c, wo) { - var index, txt, column, direction, - sort = [], - arry = c.sortList || [], - len = arry.length; - for (index = 0; index < len; index++) { - column = arry[index][0]; - txt = $.trim(c.$headerIndexed[column].attr(wo.sort2Hash_headerTextAttr)); - sort.push(txt !== '' ? encodeURIComponent(txt) : column); - direction = wo.sort2Hash_directionText[arry[index][1]]; - sort.push(direction); - } - // join with separator - return sort.join(wo.sort2Hash_separator); - }, - - convertFilter2String: function (c, wo) { - var index, txt, column, direction, - sort = [], - arry = c.sortList || [], - len = arry.length; - for (index = 0; index < len; index++) { - column = arry[index][0]; - txt = $.trim(c.$headerIndexed[column].attr(wo.sort2Hash_headerTextAttr)); - column = typeof txt !== 'undefined' ? encodeURIComponent(txt) : column; - sort.push(column); - direction = wo.sort2Hash_directionText[arry[index][1]]; - sort.push(direction); - } - // join with separator - return sort.join(wo.sort2Hash_separator); - }, - - // Get URL Parameters (getParam) - // modified from http://www.netlobo.com/url_query_string_javascript.html - getParam: function (name, hash, returnRegex) { - if (!hash) { - hash = window.location.hash; - } - var regex = new RegExp('[\\?&]' + s2h.regexEscape(name) + '=([^&#]*)'), - match = regex.exec(hash); - if (returnRegex) { - return regex; - } - return match === null ? '' : decodeURIComponent(match[1]); - }, - - // remove parameter from hash - removeParam: function (name, hash) { - if (!hash) { - hash = window.location.hash; - } - var index, - regex = s2h.getParam(name, hash, true), - result = [], - parts = hash.split('&'), - len = parts.length; - for (index = 0; index < len; index++) { - // regex expects a leading '&'... - if (!regex.test('&' + parts[index])) { - result.push(parts[index]); - } - } - return result.length ? result.join('&') : ''; - }, - - encodeHash: function (c, wo, component, value, rawValue) { - var result = false, - tableId = s2h.getTableId(c, wo); - if (typeof wo.sort2Hash_encodeHash === 'function') { - result = wo.sort2Hash_encodeHash(c, tableId, component, value, rawValue || value); - } - if (result === false) { - result = '&' + component + '[' + tableId + ']=' + value; - } - return result; - }, - - decodeHash: function (c, wo, component) { - var result = false, - tableId = s2h.getTableId(c, wo); - if (typeof wo.sort2Hash_decodeHash === 'function') { - // return a string - result = wo.sort2Hash_decodeHash(c, tableId, component); - } - if (result === false) { - result = s2h.getParam(component + '[' + tableId + ']'); - } - return result || ''; - }, - - cleanHash: function (c, wo, component, hash) { - var result = false, - tableId = s2h.getTableId(c, wo); - if (typeof wo.sort2Hash_cleanHash === 'function') { - // can return an array or string - result = wo.sort2Hash_cleanHash(c, tableId, component, hash); - } - if (result === false) { - // parameter example: 'sort[table0]=0,0' - result = s2h.removeParam(component + '[' + tableId + ']', hash); - } - return result || ''; - }, - - setHash: function (c, wo) { - var str = '', - hash = window.location.hash, - hasPager = ts.hasWidget(c.table, 'pager'), - hasFilter = ts.hasWidget(c.table, 'filter'), - sortList = s2h.convertSort2String(c, wo), - filters = (hasFilter && c.lastSearch.join('') !== '' ? c.lastSearch : []), - filtersStr = encodeURIComponent(filters.join(c.widgetOptions.sort2Hash_separator)), - components = { - 'sort': sortList ? s2h.encodeHash(c, wo, 'sort', sortList, c.sortList) : '', - 'page': hasPager ? s2h.encodeHash(c, wo, 'page', c.pager.page + 1) : '', - 'size': hasPager ? s2h.encodeHash(c, wo, 'size', c.pager.size) : '', - 'filter': filtersStr ? s2h.encodeHash(c, wo, 'filter', filtersStr, filters) : '' - }; - // remove old hash - $.each(components, function (component, value) { - hash = s2h.cleanHash(c, wo, component, hash); - str += value; - }); - - // Combine new hash with any existing hashes - var hashChar = c.widgetOptions.sort2Hash_hash; - var newHash = ((window.location.hash || '').replace(hashChar, '').length ? hash : wo.sort2Hash_hash) + str; - var baseUrl = window.location.href.split(hashChar)[0]; - // Ensure that there is a leading hash character - var firstChar = newHash[0]; - if (firstChar != hashChar) { - newHash = hashChar + newHash; - } - - // Update URL in browser - window.location.replace(baseUrl + newHash); - } - }; - - ts.addWidget({ - id: 'sort2Hash', - priority: 60, // after saveSort & pager - options: { - sort2Hash_hash: '#', // hash prefix - sort2Hash_separator: '-', // don't '#' or '=' here - sort2Hash_headerTextAttr: 'data-header', // data attribute containing alternate header text - sort2Hash_directionText: [0, 1], // [ 'asc', 'desc' ], - sort2Hash_overrideSaveSort: false, // if true, override saveSort widget if saved sort available - - // this option > table ID > table index on page - sort2Hash_tableId: null, - // custom hash processing functions - sort2Hash_encodeHash: null, - sort2Hash_decodeHash: null, - sort2Hash_cleanHash: null - }, - init: function (table, thisWidget, c, wo) { - s2h.init(c, wo); - }, - remove: function (table, c) { - c.$table.off('.sort2hash'); - } - }); - -})(jQuery); +/*! Widget: sort2Hash (BETA) - updated 8/12/2017 (v2.28.15.uf) */
+/* Requires tablesorter v2.8+ and jQuery 1.7+
+ * by Rob Garrison
+ *
+ * Temporary patched version of widget to handle browser history issues (#712).
+ */
+;(function ($) {
+ 'use strict';
+ var ts = $.tablesorter || {},
+ s2h = ts.sort2Hash = {
+ init: function (c, wo) {
+ var filter, temp, page, size,
+ table = c.table,
+ pager = c.pager,
+ hasSaveSort = ts.hasWidget(table, 'saveSort'),
+ sort = s2h.decodeHash(c, wo, 'sort');
+ if ((sort && !hasSaveSort) || (sort && hasSaveSort && wo.sort2Hash_overrideSaveSort)) {
+ s2h.convertString2Sort(c, wo, sort);
+ }
+ if (ts.hasWidget(c.table, 'pager')) {
+ temp = parseInt(s2h.decodeHash(c, wo, 'page'), 10);
+ page = pager.page = (temp < 0 ? 0 : (temp > pager.totalPages ? pager.totalPages - 1 : temp));
+ size = pager.size = parseInt(s2h.decodeHash(c, wo, 'size'), 10);
+ }
+ if (ts.hasWidget(table, 'filter')) {
+ filter = s2h.decodeHash(c, wo, 'filter');
+ if (filter) {
+ filter = filter.split(wo.sort2Hash_separator);
+ c.$table.one('tablesorter-ready', function () {
+ setTimeout(function () {
+ c.$table.one('filterEnd', function () {
+ $(this).triggerHandler('pageAndSize', [page, size]);
+ });
+ // use the newest filter comparison code
+ if (ts.filter.equalFilters) {
+ temp = ts.filter.equalFilters(c, c.lastSearch, filter);
+ } else {
+ // quick n' dirty comparison... it will miss filter changes of
+ // the same value in a different column, see #1363
+ temp = (c.lastSearch || []).join('') !== (filter || []).join('');
+ }
+ // don't set filters if they haven't changed
+ if (!temp) {
+ $.tablesorter.setFilters(table, filter, true);
+ }
+ }, 100);
+ });
+ }
+ }
+ if (!filter) {
+ c.$table.one('tablesorter-ready', function () {
+ c.$table.triggerHandler('pageAndSize', [page, size]);
+ });
+ }
+
+ c.$table.on('sortEnd.sort2hash filterEnd.sort2hash pagerComplete.sort2Hash', function () {
+ if (this.hasInitialized) {
+ s2h.setHash(this.config, this.config.widgetOptions);
+ }
+ });
+ },
+
+ getTableId: function (c, wo) {
+ // option > table id > table index on page
+ return wo.sort2Hash_tableId ||
+ c.table.id ||
+ 'table' + $('table').index(c.$table);
+ },
+ regexEscape: function (v) {
+ return v.replace(/([\.\^\$\*\+\-\?\(\)\[\]\{\}\\\|])/g, '\\$1');
+ },
+ // convert 'first%20name,asc,last%20name,desc' into [[0,0], [1,1]]
+ convertString2Sort: function (c, wo, sortHash) {
+ var regex, column, direction, temp, index, $cell,
+ arry = sortHash.split(wo.sort2Hash_separator),
+ indx = 0,
+ len = arry.length,
+ sort = [];
+ while (indx < len) {
+ // column index or text
+ column = arry[indx++];
+ temp = parseInt(column, 10);
+ // ignore wo.sort2Hash_useHeaderText setting &
+ // just see if column contains a number
+ if (isNaN(temp) || temp > c.columns) {
+ regex = new RegExp('(' + s2h.regexEscape(column) + ')', 'i');
+ for (index = 0; index < c.columns; index++) {
+ $cell = c.$headerIndexed[index];
+ if (regex.test($cell.attr(wo.sort2Hash_headerTextAttr))) {
+ column = index;
+ index = c.columns;
+ }
+ }
+ }
+ direction = arry[indx++];
+ // ignore unpaired values
+ if (typeof column !== 'undefined' && typeof direction !== 'undefined') {
+ // convert text to 0, 1
+ if (isNaN(direction)) {
+ // default to ascending sort
+ direction = direction.indexOf(wo.sort2Hash_directionText[1]) > -1 ? 1 : 0;
+ }
+ sort.push([column, direction]);
+ }
+ }
+ if (sort.length) {
+ c.sortList = sort;
+ }
+ },
+
+ // convert [[0,0],[1,1]] to 'first%20name,asc,last%20name,desc'
+ convertSort2String: function (c, wo) {
+ var index, txt, column, direction,
+ sort = [],
+ arry = c.sortList || [],
+ len = arry.length;
+ for (index = 0; index < len; index++) {
+ column = arry[index][0];
+ txt = $.trim(c.$headerIndexed[column].attr(wo.sort2Hash_headerTextAttr));
+ sort.push(txt !== '' ? encodeURIComponent(txt) : column);
+ direction = wo.sort2Hash_directionText[arry[index][1]];
+ sort.push(direction);
+ }
+ // join with separator
+ return sort.join(wo.sort2Hash_separator);
+ },
+
+ convertFilter2String: function (c, wo) {
+ var index, txt, column, direction,
+ sort = [],
+ arry = c.sortList || [],
+ len = arry.length;
+ for (index = 0; index < len; index++) {
+ column = arry[index][0];
+ txt = $.trim(c.$headerIndexed[column].attr(wo.sort2Hash_headerTextAttr));
+ column = typeof txt !== 'undefined' ? encodeURIComponent(txt) : column;
+ sort.push(column);
+ direction = wo.sort2Hash_directionText[arry[index][1]];
+ sort.push(direction);
+ }
+ // join with separator
+ return sort.join(wo.sort2Hash_separator);
+ },
+
+ // Get URL Parameters (getParam)
+ // modified from http://www.netlobo.com/url_query_string_javascript.html
+ getParam: function (name, hash, returnRegex) {
+ if (!hash) {
+ hash = window.location.hash;
+ }
+ var regex = new RegExp('[\\?&]' + s2h.regexEscape(name) + '=([^&#]*)'),
+ match = regex.exec(hash);
+ if (returnRegex) {
+ return regex;
+ }
+ return match === null ? '' : decodeURIComponent(match[1]);
+ },
+
+ // remove parameter from hash
+ removeParam: function (name, hash) {
+ if (!hash) {
+ hash = window.location.hash;
+ }
+ var index,
+ regex = s2h.getParam(name, hash, true),
+ result = [],
+ parts = hash.split('&'),
+ len = parts.length;
+ for (index = 0; index < len; index++) {
+ // regex expects a leading '&'...
+ if (!regex.test('&' + parts[index])) {
+ result.push(parts[index]);
+ }
+ }
+ return result.length ? result.join('&') : '';
+ },
+
+ encodeHash: function (c, wo, component, value, rawValue) {
+ var result = false,
+ tableId = s2h.getTableId(c, wo);
+ if (typeof wo.sort2Hash_encodeHash === 'function') {
+ result = wo.sort2Hash_encodeHash(c, tableId, component, value, rawValue || value);
+ }
+ if (result === false) {
+ result = '&' + component + '[' + tableId + ']=' + value;
+ }
+ return result;
+ },
+
+ decodeHash: function (c, wo, component) {
+ var result = false,
+ tableId = s2h.getTableId(c, wo);
+ if (typeof wo.sort2Hash_decodeHash === 'function') {
+ // return a string
+ result = wo.sort2Hash_decodeHash(c, tableId, component);
+ }
+ if (result === false) {
+ result = s2h.getParam(component + '[' + tableId + ']');
+ }
+ return result || '';
+ },
+
+ cleanHash: function (c, wo, component, hash) {
+ var result = false,
+ tableId = s2h.getTableId(c, wo);
+ if (typeof wo.sort2Hash_cleanHash === 'function') {
+ // can return an array or string
+ result = wo.sort2Hash_cleanHash(c, tableId, component, hash);
+ }
+ if (result === false) {
+ // parameter example: 'sort[table0]=0,0'
+ result = s2h.removeParam(component + '[' + tableId + ']', hash);
+ }
+ return result || '';
+ },
+
+ setHash: function (c, wo) {
+ var str = '',
+ hash = window.location.hash,
+ hasPager = ts.hasWidget(c.table, 'pager'),
+ hasFilter = ts.hasWidget(c.table, 'filter'),
+ sortList = s2h.convertSort2String(c, wo),
+ filters = (hasFilter && c.lastSearch.join('') !== '' ? c.lastSearch : []),
+ filtersStr = encodeURIComponent(filters.join(c.widgetOptions.sort2Hash_separator)),
+ components = {
+ 'sort': sortList ? s2h.encodeHash(c, wo, 'sort', sortList, c.sortList) : '',
+ 'page': hasPager ? s2h.encodeHash(c, wo, 'page', c.pager.page + 1) : '',
+ 'size': hasPager ? s2h.encodeHash(c, wo, 'size', c.pager.size) : '',
+ 'filter': filtersStr ? s2h.encodeHash(c, wo, 'filter', filtersStr, filters) : ''
+ };
+ // remove old hash
+ $.each(components, function (component, value) {
+ hash = s2h.cleanHash(c, wo, component, hash);
+ str += value;
+ });
+
+ // Combine new hash with any existing hashes
+ var hashChar = c.widgetOptions.sort2Hash_hash;
+ var newHash = ((window.location.hash || '').replace(hashChar, '').length ? hash : wo.sort2Hash_hash) + str;
+ var baseUrl = window.location.href.split(hashChar)[0];
+ // Ensure that there is a leading hash character
+ var firstChar = newHash[0];
+ if (firstChar != hashChar) {
+ newHash = hashChar + newHash;
+ }
+
+ // Update URL in browser
+ window.location.replace(baseUrl + newHash);
+ }
+ };
+
+ ts.addWidget({
+ id: 'sort2Hash',
+ priority: 60, // after saveSort & pager
+ options: {
+ sort2Hash_hash: '#', // hash prefix
+ sort2Hash_separator: '-', // don't '#' or '=' here
+ sort2Hash_headerTextAttr: 'data-header', // data attribute containing alternate header text
+ sort2Hash_directionText: [0, 1], // [ 'asc', 'desc' ],
+ sort2Hash_overrideSaveSort: false, // if true, override saveSort widget if saved sort available
+
+ // this option > table ID > table index on page
+ sort2Hash_tableId: null,
+ // custom hash processing functions
+ sort2Hash_encodeHash: null,
+ sort2Hash_decodeHash: null,
+ sort2Hash_cleanHash: null
+ },
+ init: function (table, thisWidget, c, wo) {
+ s2h.init(c, wo);
+ },
+ remove: function (table, c) {
+ c.$table.off('.sort2hash');
+ }
+ });
+
+})(jQuery);
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-captcha.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-captcha.js index a027f9c..6980bf7 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/uf-captcha.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-captcha.js @@ -1,13 +1,13 @@ -/** - * This plugin reloads the captcha in the specified element. - */ -(function ($) { - $.fn.captcha = function () { - // Set the new captcha image - $(this).attr('src', site.uri.public + "/account/captcha?" + new Date().getTime()); - - // Clear whatever the user entered for the captcha value last time - var target = $(this).data('target'); - $(target).val(""); - }; -}(jQuery)); +/**
+ * This plugin reloads the captcha in the specified element.
+ */
+(function ($) {
+ $.fn.captcha = function () {
+ // Set the new captcha image
+ $(this).attr('src', site.uri.public + "/account/captcha?" + new Date().getTime());
+
+ // Clear whatever the user entered for the captcha value last time
+ var target = $(this).data('target');
+ $(target).val("");
+ };
+}(jQuery));
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-collection.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-collection.js index 8146f3f..4bfd9d0 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/uf-collection.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-collection.js @@ -1,349 +1,349 @@ -/** - * uf-collection plugin. Widget for attaching/detaching related items to a single parent item (e.g. roles for a user, etc). - * - * === USAGE === - * - * uf-collection can be initialized on a div element as follows: - * - * $("#myCollection").ufCollection(options); - * - * `options` is an object containing any of the following parameters: - * @param {bool} useDropdown Set to true if rows should be added using a select2 dropdown, false for free text inputs (see https://ux.stackexchange.com/a/15637/53990). - * @param {Object} dropdown The options to pass to the select2 plugin for the add item dropdown. - * @param {string} dropdown.ajax.url The url from which to fetch options (as JSON data) in the dropdown selector menu. - * @param {bool} selectOnClose Set to true if you want the currently highlighted dropdown item to be automatically added when the dropdown is closed for any reason. - * @param {string} dropdown.theme The select2 theme to use for the dropdown menu. Defaults to "default". - * @param {string} dropdown.placeholder Placeholder text to use in the dropdown menu before a selection is made. Defaults to "Item". - * @param {string} dropdown.width Width of the dropdown selector, when used. Defaults to "100%". - * @param {callback} transformDropdownSelection Custom transformation on objects from the dropdown before passing them to render in the collection table. - * @param {Object} dropdownControl a jQuery selector specifying the dropdown select2 control. Defaults to looking for a .js-select-new element inside the parent object. - * @param {string} dropdownTemplate A Handlebars template to use for rendering the dropdown items. - * @param {Object} rowContainer a jQuery selector specifying the place where rows should be added. Defaults to looking for the first tbody element inside the parent object. - * @param {string} rowTemplate A Handlebars template to use for rendering each row in the table. - * - * == EVENTS == - * - * ufCollection triggers the following events: - * - * `rowAdd.ufCollection`: triggered when a new row is added to the collection. - * `rowDelete.ufCollection`: triggered when a row is removed from the collection. - * `rowTouch.ufCollection`: triggered when any inputs in a row are brought into focus. - * - * UserFrosting https://www.userfrosting.com - * @author Alexander Weissman <https://alexanderweissman.com> - */ -;(function ($, window, document, undefined) { - "use strict"; - - // Define plugin name and defaults. - var pluginName = "ufCollection", - defaults = { - useDropdown: true, - dropdown: { - ajax: { - url: "", - dataType: "json", - delay: 250, - data: function (params) { - return { - filters: { - info: params.term - } - }; - }, - processResults: function (data, params) { - // Process the data into dropdown options - var suggestions = []; - if (data && data.rows) { - suggestions = data.rows; - } - return { - results: suggestions - }; - }, - cache: true - }, - placeholder: "Item", - selectOnClose: false, // Make a selection when they click out of the box/press the next button - theme: "default", - width: "100%", - }, - transformDropdownSelection: function (item) { - return item; - }, - dropdownControl: null, - dropdownTemplate: "", - rowContainer: null, - rowTemplate: "", - DEBUG: false - }; - - // Constructor - function Plugin(element, options) { - this.element = element[0]; - this.$element = $(this.element); - var lateDefaults = { - dropdownControl: this.$element.find('.js-select-new'), - rowContainer: this.$element.find('tbody').first() - }; - this.settings = $.extend(true, {}, defaults, lateDefaults, options); - this._defaults = defaults; - this._name = pluginName; - - // Detect changes to element attributes - this.$element.attrchange({ - callback: function (event) { - this.element = event.target; - }.bind(this) - }); - - // Internal counter for adding rows to the collection. Gets updated every time `_createRow` is called. - this._rownum = 0; - - // Keep track of last added row - this._lastRow = null; - - // Handlebars template method - this._dropdownTemplateCompiled = Handlebars.compile(this.settings.dropdownTemplate); - - this._rowTemplateCompiled = Handlebars.compile(this.settings.rowTemplate); - - // Add container class - this.$element.toggleClass("uf-collection", true); - - // Add bindings for any rows already present in the DOM - $.each(this.settings.rowContainer.find('.uf-collection-row'), $.proxy(function (idx, row) { - this._onNewRow($(row)); - this._lastRow = row; - }, this)); - - // If we're using dropdown options, create the select2 and add bindings to add a new row when an option is selected - if (this.settings.useDropdown) { - this._initDropdownField(this.settings.dropdownControl); - - this.settings.dropdownControl.on("select2:select", $.proxy(function (e) { - var item = $(e.target).select2("data")[0]; - // Apply any transformations before rendering as a row - var transformed = this.settings.transformDropdownSelection(item); - this._createRow(transformed); - }, this)); - } - else { - // Otherwise, add a new virgin row - this._createVirginRow(); - } - - return this; - } - - // Functions - $.extend(Plugin.prototype, { - /** - * Add a new row to the collection, optionally passing in prepopulated template data. - */ - addRow: function (options) { - // Grab params, if any - var params = {}; - if (typeof options !== 'undefined') { - params = options[0]; - } - - this._createRow(params); - - return this.$element; - }, - /** - * Add a new 'virgin' row to the collection, optionally passing in prepopulated template data. - * Virgin rows are rows that have not yet been brought into focus by the user. - * When a virgin row is brought into focus, it loses its virgin status and a new virgin row is created. - */ - addVirginRow: function (options) { - // Grab params, if any - var params = {}; - if (typeof options !== 'undefined') { - params = options[0]; - } - - this._createVirginRow(params); - - return this.$element; - }, - /** - * Delete a target row. - */ - deleteRow: function (row) { - this._deleteRow(row); - - return this.$element; - }, - /** - * Get the dropdown control for the collection, if one exists. - */ - getDropdown: function () { - return this.settings.dropdownControl; - }, - /** - * Get the last row added in the collection. - */ - getLastRow: function () { - return this._lastRow; - }, - /** - * Touch a target row. - */ - touchRow: function (row) { - this._touchRow(row); - - return this.$element; - }, - /** - * Create a new row and attach the handler for deletion to the js-delete-row button - */ - _createRow: function (params) { - params = $.extend(true, - { - id: "", - rownum: this._rownum - }, params); - - // Generate the row and append to table - var newRowTemplate = this._rowTemplateCompiled(params), - newRow; - - // Add the new row before any virgin rows in the table. - var virginRows = this.settings.rowContainer.find('.uf-collection-row-virgin').length; - if (virginRows) { - newRow = $(newRowTemplate).insertBefore(this.settings.rowContainer.find('.uf-collection-row-virgin:first')); - } else { - newRow = $(newRowTemplate).appendTo(this.settings.rowContainer); - } - - this._lastRow = newRow; - - // Add bindings and fire event - this._onNewRow(newRow); - - return newRow; - }, - /** - * Create a new, blank row with the 'virgin' status. - */ - _createVirginRow: function (params) { - // Generate the row and append to table - var newRow = this._createRow(params); - - // Set the row's 'virgin' status - newRow.addClass('uf-collection-row-virgin'); - newRow.find('.js-delete-row').hide(); - - return newRow; - }, - /** - * Delete a row from the collection. - */ - _deleteRow: function (row) { - row.remove(); - this.$element.trigger('rowDelete.ufCollection'); - }, - /** - * Add delete and touch bindings for a row, increment the internal row counter, and fire the rowAdd event - */ - _onNewRow: function (row) { - // Trigger to delete row - row.find('.js-delete-row').on('click', $.proxy(function (e) { - this._deleteRow($(e.target).closest('.uf-collection-row')); - }, this)); - - // Once the new row comes into focus for the first time, it has been "touched" - row.find(':input').on('focus', $.proxy(function () { - this._touchRow(row); - }, this)); - - this._rownum += 1; - - // Fire event when row has been constructed - this.$element.trigger('rowAdd.ufCollection', row); - }, - /** - * Remove a row's virgin status, show the delete button, and add a new virgin row if needed - */ - _touchRow: function (row) { - row.removeClass('uf-collection-row-virgin'); - row.find('.js-delete-row').show(); - - this.$element.trigger('rowTouch.ufCollection', row); - - // If we're not using dropdowns, assert that the table doesn't already have a virgin row. If not, create a new virgin row. - if (!this.settings.useDropdown) { - var virginRows = this.settings.rowContainer.find('.uf-collection-row-virgin').length; - if (!virginRows) { - this._createVirginRow(); - } - } - }, - /** - * Initialize the select2 dropdown for this collection on a specified control element. - */ - _initDropdownField: function (field) { - var options = this.settings.dropdown; - - if (!("templateResult" in options)) { - options.templateResult = $.proxy(function (item) { - // Display loading text if the item is marked as "loading" - if (item.loading) return item.text; - - // Must wrap this in a jQuery selector to render as HTML - return $(this._dropdownTemplateCompiled(item)); - }, this); - } - // Legacy options (<= v4.0.9) - if ("dataUrl" in this.settings) { - options.ajax.url = this.settings.dataUrl; - } - if ("ajaxDelay" in this.settings) { - options.ajax.delay = this.settings.ajaxDelay; - } - if ("dropdownTheme" in this.settings) { - options.theme = this.settings.dropdownTheme; - } - if ("placeholder" in this.settings) { - options.placeholder = this.settings.placeholder; - } - if ("selectOnClose" in this.settings) { - options.selectOnClose = this.settings.selectOnClose; - } - if ("width" in this.settings) { - options.width = this.settings.width; - } - - return field.select2(options); - } - }); - - // Handles instantiation and access to non-private methods. - $.fn[pluginName] = function (methodOrOptions) { - // Grab plugin instance - var instance = $(this).data(pluginName); - // If undefined or object, initalise plugin. - if (methodOrOptions === undefined || typeof methodOrOptions === 'object') { - // Only initalise if not previously done. - if (!instance) { - $(this).data(pluginName, new Plugin(this, methodOrOptions)); - } - return this; - } - // Otherwise ensure first parameter is a valid string, and is the name of an actual function. - else if (typeof methodOrOptions === 'string' && typeof instance[methodOrOptions] === 'function') { - // Ensure not a private function - if (methodOrOptions.indexOf('_') !== 0) { - return instance[methodOrOptions](Array.prototype.slice.call(arguments, 1)); - } - else { - console.warn('Method ' + methodOrOptions + ' is private!'); - } - } - else { - console.warn('Method ' + methodOrOptions + ' does not exist.'); - } - }; -})(jQuery, window, document); +/**
+ * uf-collection plugin. Widget for attaching/detaching related items to a single parent item (e.g. roles for a user, etc).
+ *
+ * === USAGE ===
+ *
+ * uf-collection can be initialized on a div element as follows:
+ *
+ * $("#myCollection").ufCollection(options);
+ *
+ * `options` is an object containing any of the following parameters:
+ * @param {bool} useDropdown Set to true if rows should be added using a select2 dropdown, false for free text inputs (see https://ux.stackexchange.com/a/15637/53990).
+ * @param {Object} dropdown The options to pass to the select2 plugin for the add item dropdown.
+ * @param {string} dropdown.ajax.url The url from which to fetch options (as JSON data) in the dropdown selector menu.
+ * @param {bool} selectOnClose Set to true if you want the currently highlighted dropdown item to be automatically added when the dropdown is closed for any reason.
+ * @param {string} dropdown.theme The select2 theme to use for the dropdown menu. Defaults to "default".
+ * @param {string} dropdown.placeholder Placeholder text to use in the dropdown menu before a selection is made. Defaults to "Item".
+ * @param {string} dropdown.width Width of the dropdown selector, when used. Defaults to "100%".
+ * @param {callback} transformDropdownSelection Custom transformation on objects from the dropdown before passing them to render in the collection table.
+ * @param {Object} dropdownControl a jQuery selector specifying the dropdown select2 control. Defaults to looking for a .js-select-new element inside the parent object.
+ * @param {string} dropdownTemplate A Handlebars template to use for rendering the dropdown items.
+ * @param {Object} rowContainer a jQuery selector specifying the place where rows should be added. Defaults to looking for the first tbody element inside the parent object.
+ * @param {string} rowTemplate A Handlebars template to use for rendering each row in the table.
+ *
+ * == EVENTS ==
+ *
+ * ufCollection triggers the following events:
+ *
+ * `rowAdd.ufCollection`: triggered when a new row is added to the collection.
+ * `rowDelete.ufCollection`: triggered when a row is removed from the collection.
+ * `rowTouch.ufCollection`: triggered when any inputs in a row are brought into focus.
+ *
+ * UserFrosting https://www.userfrosting.com
+ * @author Alexander Weissman <https://alexanderweissman.com>
+ */
+;(function ($, window, document, undefined) {
+ "use strict";
+
+ // Define plugin name and defaults.
+ var pluginName = "ufCollection",
+ defaults = {
+ useDropdown: true,
+ dropdown: {
+ ajax: {
+ url: "",
+ dataType: "json",
+ delay: 250,
+ data: function (params) {
+ return {
+ filters: {
+ info: params.term
+ }
+ };
+ },
+ processResults: function (data, params) {
+ // Process the data into dropdown options
+ var suggestions = [];
+ if (data && data.rows) {
+ suggestions = data.rows;
+ }
+ return {
+ results: suggestions
+ };
+ },
+ cache: true
+ },
+ placeholder: "Item",
+ selectOnClose: false, // Make a selection when they click out of the box/press the next button
+ theme: "default",
+ width: "100%",
+ },
+ transformDropdownSelection: function (item) {
+ return item;
+ },
+ dropdownControl: null,
+ dropdownTemplate: "",
+ rowContainer: null,
+ rowTemplate: "",
+ DEBUG: false
+ };
+
+ // Constructor
+ function Plugin(element, options) {
+ this.element = element[0];
+ this.$element = $(this.element);
+ var lateDefaults = {
+ dropdownControl: this.$element.find('.js-select-new'),
+ rowContainer: this.$element.find('tbody').first()
+ };
+ this.settings = $.extend(true, {}, defaults, lateDefaults, options);
+ this._defaults = defaults;
+ this._name = pluginName;
+
+ // Detect changes to element attributes
+ this.$element.attrchange({
+ callback: function (event) {
+ this.element = event.target;
+ }.bind(this)
+ });
+
+ // Internal counter for adding rows to the collection. Gets updated every time `_createRow` is called.
+ this._rownum = 0;
+
+ // Keep track of last added row
+ this._lastRow = null;
+
+ // Handlebars template method
+ this._dropdownTemplateCompiled = Handlebars.compile(this.settings.dropdownTemplate);
+
+ this._rowTemplateCompiled = Handlebars.compile(this.settings.rowTemplate);
+
+ // Add container class
+ this.$element.toggleClass("uf-collection", true);
+
+ // Add bindings for any rows already present in the DOM
+ $.each(this.settings.rowContainer.find('.uf-collection-row'), $.proxy(function (idx, row) {
+ this._onNewRow($(row));
+ this._lastRow = row;
+ }, this));
+
+ // If we're using dropdown options, create the select2 and add bindings to add a new row when an option is selected
+ if (this.settings.useDropdown) {
+ this._initDropdownField(this.settings.dropdownControl);
+
+ this.settings.dropdownControl.on("select2:select", $.proxy(function (e) {
+ var item = $(e.target).select2("data")[0];
+ // Apply any transformations before rendering as a row
+ var transformed = this.settings.transformDropdownSelection(item);
+ this._createRow(transformed);
+ }, this));
+ }
+ else {
+ // Otherwise, add a new virgin row
+ this._createVirginRow();
+ }
+
+ return this;
+ }
+
+ // Functions
+ $.extend(Plugin.prototype, {
+ /**
+ * Add a new row to the collection, optionally passing in prepopulated template data.
+ */
+ addRow: function (options) {
+ // Grab params, if any
+ var params = {};
+ if (typeof options !== 'undefined') {
+ params = options[0];
+ }
+
+ this._createRow(params);
+
+ return this.$element;
+ },
+ /**
+ * Add a new 'virgin' row to the collection, optionally passing in prepopulated template data.
+ * Virgin rows are rows that have not yet been brought into focus by the user.
+ * When a virgin row is brought into focus, it loses its virgin status and a new virgin row is created.
+ */
+ addVirginRow: function (options) {
+ // Grab params, if any
+ var params = {};
+ if (typeof options !== 'undefined') {
+ params = options[0];
+ }
+
+ this._createVirginRow(params);
+
+ return this.$element;
+ },
+ /**
+ * Delete a target row.
+ */
+ deleteRow: function (row) {
+ this._deleteRow(row);
+
+ return this.$element;
+ },
+ /**
+ * Get the dropdown control for the collection, if one exists.
+ */
+ getDropdown: function () {
+ return this.settings.dropdownControl;
+ },
+ /**
+ * Get the last row added in the collection.
+ */
+ getLastRow: function () {
+ return this._lastRow;
+ },
+ /**
+ * Touch a target row.
+ */
+ touchRow: function (row) {
+ this._touchRow(row);
+
+ return this.$element;
+ },
+ /**
+ * Create a new row and attach the handler for deletion to the js-delete-row button
+ */
+ _createRow: function (params) {
+ params = $.extend(true,
+ {
+ id: "",
+ rownum: this._rownum
+ }, params);
+
+ // Generate the row and append to table
+ var newRowTemplate = this._rowTemplateCompiled(params),
+ newRow;
+
+ // Add the new row before any virgin rows in the table.
+ var virginRows = this.settings.rowContainer.find('.uf-collection-row-virgin').length;
+ if (virginRows) {
+ newRow = $(newRowTemplate).insertBefore(this.settings.rowContainer.find('.uf-collection-row-virgin:first'));
+ } else {
+ newRow = $(newRowTemplate).appendTo(this.settings.rowContainer);
+ }
+
+ this._lastRow = newRow;
+
+ // Add bindings and fire event
+ this._onNewRow(newRow);
+
+ return newRow;
+ },
+ /**
+ * Create a new, blank row with the 'virgin' status.
+ */
+ _createVirginRow: function (params) {
+ // Generate the row and append to table
+ var newRow = this._createRow(params);
+
+ // Set the row's 'virgin' status
+ newRow.addClass('uf-collection-row-virgin');
+ newRow.find('.js-delete-row').hide();
+
+ return newRow;
+ },
+ /**
+ * Delete a row from the collection.
+ */
+ _deleteRow: function (row) {
+ row.remove();
+ this.$element.trigger('rowDelete.ufCollection');
+ },
+ /**
+ * Add delete and touch bindings for a row, increment the internal row counter, and fire the rowAdd event
+ */
+ _onNewRow: function (row) {
+ // Trigger to delete row
+ row.find('.js-delete-row').on('click', $.proxy(function (e) {
+ this._deleteRow($(e.target).closest('.uf-collection-row'));
+ }, this));
+
+ // Once the new row comes into focus for the first time, it has been "touched"
+ row.find(':input').on('focus', $.proxy(function () {
+ this._touchRow(row);
+ }, this));
+
+ this._rownum += 1;
+
+ // Fire event when row has been constructed
+ this.$element.trigger('rowAdd.ufCollection', row);
+ },
+ /**
+ * Remove a row's virgin status, show the delete button, and add a new virgin row if needed
+ */
+ _touchRow: function (row) {
+ row.removeClass('uf-collection-row-virgin');
+ row.find('.js-delete-row').show();
+
+ this.$element.trigger('rowTouch.ufCollection', row);
+
+ // If we're not using dropdowns, assert that the table doesn't already have a virgin row. If not, create a new virgin row.
+ if (!this.settings.useDropdown) {
+ var virginRows = this.settings.rowContainer.find('.uf-collection-row-virgin').length;
+ if (!virginRows) {
+ this._createVirginRow();
+ }
+ }
+ },
+ /**
+ * Initialize the select2 dropdown for this collection on a specified control element.
+ */
+ _initDropdownField: function (field) {
+ var options = this.settings.dropdown;
+
+ if (!("templateResult" in options)) {
+ options.templateResult = $.proxy(function (item) {
+ // Display loading text if the item is marked as "loading"
+ if (item.loading) return item.text;
+
+ // Must wrap this in a jQuery selector to render as HTML
+ return $(this._dropdownTemplateCompiled(item));
+ }, this);
+ }
+ // Legacy options (<= v4.0.9)
+ if ("dataUrl" in this.settings) {
+ options.ajax.url = this.settings.dataUrl;
+ }
+ if ("ajaxDelay" in this.settings) {
+ options.ajax.delay = this.settings.ajaxDelay;
+ }
+ if ("dropdownTheme" in this.settings) {
+ options.theme = this.settings.dropdownTheme;
+ }
+ if ("placeholder" in this.settings) {
+ options.placeholder = this.settings.placeholder;
+ }
+ if ("selectOnClose" in this.settings) {
+ options.selectOnClose = this.settings.selectOnClose;
+ }
+ if ("width" in this.settings) {
+ options.width = this.settings.width;
+ }
+
+ return field.select2(options);
+ }
+ });
+
+ // Handles instantiation and access to non-private methods.
+ $.fn[pluginName] = function (methodOrOptions) {
+ // Grab plugin instance
+ var instance = $(this).data(pluginName);
+ // If undefined or object, initalise plugin.
+ if (methodOrOptions === undefined || typeof methodOrOptions === 'object') {
+ // Only initalise if not previously done.
+ if (!instance) {
+ $(this).data(pluginName, new Plugin(this, methodOrOptions));
+ }
+ return this;
+ }
+ // Otherwise ensure first parameter is a valid string, and is the name of an actual function.
+ else if (typeof methodOrOptions === 'string' && typeof instance[methodOrOptions] === 'function') {
+ // Ensure not a private function
+ if (methodOrOptions.indexOf('_') !== 0) {
+ return instance[methodOrOptions](Array.prototype.slice.call(arguments, 1));
+ }
+ else {
+ console.warn('Method ' + methodOrOptions + ' is private!');
+ }
+ }
+ else {
+ console.warn('Method ' + methodOrOptions + ' does not exist.');
+ }
+ };
+})(jQuery, window, document);
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-copy.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-copy.js index 58930e5..a126b04 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/uf-copy.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-copy.js @@ -1,50 +1,50 @@ -/** - * Copies text or control fields to clipboard. Wrap a .js-copy-target and .js-copy-trigger inside a common .js-copy-container. - */ - -if (typeof $.uf === 'undefined') { - $.uf = {}; -} - -$.uf.copy = function (button) { - var _this = this; - - var clipboard = new Clipboard(button, { - text: function (trigger) { - var el = $(trigger).closest('.js-copy-container').find('.js-copy-target'); - if (el.is(':input')) { - return el.val(); - } else { - return el.html(); - } - } - }); - - clipboard.on('success', function (e) { - setTooltip(e.trigger, 'Copied!'); - hideTooltip(e.trigger); - }); - - clipboard.on('error', function (e) { - setTooltip(e.trigger, 'Failed!'); - hideTooltip(e.trigger); - }); - - function setTooltip(btn, message) { - $(btn) - .attr('data-original-title', message) - .tooltip('show'); - } - - function hideTooltip(btn) { - setTimeout(function () { - $(btn).tooltip('hide') - .attr('data-original-title', ""); - }, 1000); - } - - // Tooltip - $(button).tooltip({ - trigger: 'click' - }); -}; +/**
+ * Copies text or control fields to clipboard. Wrap a .js-copy-target and .js-copy-trigger inside a common .js-copy-container.
+ */
+
+if (typeof $.uf === 'undefined') {
+ $.uf = {};
+}
+
+$.uf.copy = function (button) {
+ var _this = this;
+
+ var clipboard = new Clipboard(button, {
+ text: function (trigger) {
+ var el = $(trigger).closest('.js-copy-container').find('.js-copy-target');
+ if (el.is(':input')) {
+ return el.val();
+ } else {
+ return el.html();
+ }
+ }
+ });
+
+ clipboard.on('success', function (e) {
+ setTooltip(e.trigger, 'Copied!');
+ hideTooltip(e.trigger);
+ });
+
+ clipboard.on('error', function (e) {
+ setTooltip(e.trigger, 'Failed!');
+ hideTooltip(e.trigger);
+ });
+
+ function setTooltip(btn, message) {
+ $(btn)
+ .attr('data-original-title', message)
+ .tooltip('show');
+ }
+
+ function hideTooltip(btn) {
+ setTimeout(function () {
+ $(btn).tooltip('hide')
+ .attr('data-original-title', "");
+ }, 1000);
+ }
+
+ // Tooltip
+ $(button).tooltip({
+ trigger: 'click'
+ });
+};
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-form.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-form.js index 06fcc43..0bc79d2 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/uf-form.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-form.js @@ -1,297 +1,297 @@ -/** - * uf-form plugin. Handles validation and submission for basic UserFrosting forms. - * - * This plugin uses the jQueryvalidation plugin (https://jqueryvalidation.org/) to perform instant, client-side form validation. - * UserFrosting forms must be wrapped in a <form> element, and contain a <button type=submit> element for submission. - * - * Forms are then set to submit via AJAX when the submit button is clicked. - * - * === USAGE === - * - * uf-form can be initialized on a form element as follows: - * - * $('#myForm').ufForm(options); - * - * `options` is an object containing any of the following parameters: - * @param {JSON} validators An object containing two keys, "rules" and "messages", which specify the jQueryvalidation rules to use. - * @param {Object} msgTarget a jQuery selector specifying the element where any error messages should be inserted. Defaults to looking for a container with class .js-form-alerts inside this form. - * @param {Callback} beforeSubmitCallback a callback function to execute immediately after form validation, before the form is submitted. - * @param {bool} binaryCheckboxes specify whether to submit checkboxes as binary values 0 and 1, instead of omitting unchecked checkboxes from submission. - * - * == EVENTS == - * - * ufForm triggers the following events: - * - * `submitSuccess.ufForm`: triggered when the form is successfully submitted, after re-enabling the submit button. - * `submitError.ufForm`: triggered when the form submission (not validation) fails, after re-enabling the submit button - * and displaying any error messages. - * - * UserFrosting https://www.userfrosting.com - * @author Alexander Weissman <https://alexanderweissman.com> - * - * Implement proper fallback for when `set` function isn't supported by FormData. - */ -;(function ($, window, document, undefined) { - 'use strict'; - - // Define plugin name and defaults. - var pluginName = 'ufForm', - defaults = { - validators: { - 'rules': {}, - 'messages': {} - }, - submittingText: "<i class='fa fa-spinner fa-spin'></i>", - beforeSubmitCallback: null, - binaryCheckboxes: true, // submit checked/unchecked checkboxes as 0/1 values - keyupDelay: 0, - DEBUG: false - }; - - // Constructor - function Plugin(element, options) { - this.element = element[0]; - this.$element = $(this.element); - var lateDefaults = { - encType: (typeof this.$element.attr('enctype') !== 'undefined') ? this.$element.attr('enctype') : '', - msgTarget: this.$element.find('.js-form-alerts:first') - }; - this.settings = $.extend(true, {}, defaults, lateDefaults, options); - this._defaults = $.extend(true, {}, defaults, lateDefaults); - this._name = pluginName; - this._debugAjax = (typeof site !== 'undefined') && site.debug.ajax; - - // Detect changes to element attributes - this.$element.attrchange({ - callback: function (event) { - this.element = event.target; - }.bind(this) - }); - - // Setup validator - this.validator = this.$element.validate({ - rules: this.settings.validators.rules, - messages: this.settings.validators.messages, - submitHandler: $.proxy(this._submitHandler, this), - onkeyup: $.proxy(this._onKeyUp, this) - }); - - return this; - } - - // Functions - - /** - * Handles the form submission after successful client-side validation. - */ - Plugin.prototype._submitHandler = function (form, event) { - // Execute any "before submit" callback - if (this.settings.beforeSubmitCallback) { - this.settings.beforeSubmitCallback(); - } - - var $form = $(form); - - // Set "loading" text for submit button, if it exists, and disable button - var submitButton = $form.find('button[type=submit]'); - if (submitButton) { - var submitButtonText = submitButton.html(); - submitButton.prop('disabled', true); - submitButton.html(this.settings.submittingText); - } - - // Get basic request parameters. - var reqParams = { - converters: { - // Override jQuery's strict JSON parsing - 'text json': function (result) { - try { - // First try to use native browser parsing - if (typeof JSON === 'object' && typeof JSON.parse === 'function') { - return JSON.parse(result); - } else { - return $.parseJSON(result); - } - } catch (e) { - // statements to handle any exceptions - console.warn('Could not parse expected JSON response.'); - return {}; - } - } - }, - - dataType: this._debugAjax ? 'html' : 'json', - type: this.$element.attr('method'), - url: this.$element.attr('action') - }; - - // Get the form encoding type from the users HTML, and chose an encoding form. - if (this.settings.encType.toLowerCase() === 'multipart/form-data') { - reqParams.data = this._multipartData($form); - // add additional params to fix jquery errors - reqParams.cache = false; - reqParams.contentType = false; - reqParams.processData = false; - } else { - reqParams.data = this._urlencodeData($form); - } - - // Submit the form via AJAX - $.ajax(reqParams).then( - // Submission successful - $.proxy(function (data, textStatus, jqXHR) { - // Restore button text and re-enable submit button - if (submitButton) { - submitButton.prop('disabled', false); - submitButton.html(submitButtonText); - } - - this.$element.trigger('submitSuccess.ufForm', [data, textStatus, jqXHR]); - return jqXHR; - }, this), - // Submission failed - $.proxy(function (jqXHR, textStatus, errorThrown) { - // Restore button text and re-enable submit button - if (submitButton) { - submitButton.prop('disabled', false); - submitButton.html(submitButtonText); - } - // Error messages - if (this._debugAjax && jqXHR.responseText) { - this.$element.trigger('submitError.ufForm', [jqXHR, textStatus, errorThrown]); - document.write(jqXHR.responseText); - document.close(); - } else { - if (this.settings.DEBUG) { - console.log('Error (' + jqXHR.status + '): ' + jqXHR.responseText); - } - // Display errors on failure - // ufAlerts widget should have a 'destroy' method - if (!this.settings.msgTarget.data('ufAlerts')) { - this.settings.msgTarget.ufAlerts(); - } else { - this.settings.msgTarget.ufAlerts('clear'); - } - - this.settings.msgTarget.ufAlerts('fetch').ufAlerts('render'); - this.settings.msgTarget.on('render.ufAlerts', $.proxy(function () { - this.$element.trigger('submitError.ufForm', [jqXHR, textStatus, errorThrown]); - }, this)); - } - return jqXHR; - }, this) - ); - }; - - /** - * Helper function for encoding data as urlencoded - */ - Plugin.prototype._urlencodeData = function (form) { - // Serialize and post to the backend script in ajax mode - var serializedData; - if (this.settings.binaryCheckboxes) { - serializedData = form.find(':input').not(':checkbox').serialize(); - // Get unchecked checkbox values, set them to 0 - form.find('input[type=checkbox]:enabled').each(function () { - if ($(this).is(':checked')) { - serializedData += '&' + encodeURIComponent(this.name) + '=1'; - } else { - serializedData += '&' + encodeURIComponent(this.name) + '=0'; - } - }); - } - else { - serializedData = form.find(':input').serialize(); - } - - return serializedData; - }; - - /** - * Helper function for encoding data as multipart/form-data - */ - Plugin.prototype._multipartData = function (form) { - // Use FormData to wrap form contents. - // https://developer.mozilla.org/en/docs/Web/API/FormData - var formData = new FormData(form[0]); - // Serialize and post to the backend script in ajax mode - if (this.settings.binaryCheckboxes) { - // Get unchecked checkbox values, set them to 0. - var checkboxes = form.find('input[type=checkbox]:enabled'); - // Feature detection. Several browsers don't support `set` - if (typeof formData.set !== 'function') { - this.settings.msgTarget.ufAlerts('push', 'danger', "Your browser is missing a required feature. This form will still attempt to submit, but if it fails, you'll need to use Chrome for desktop or FireFox for desktop."); - } else { - checkboxes.each(function () { - if ($(this).is(':checked')) { - // this replaces checkbox value with 1 (as we're using binaryCheckboxes). - formData.set(this.name, 1); - // this explicitly adds unchecked boxes. - } else { - formData.set(this.name, 0); - } - }); - } - } - - return formData; - }; - - Plugin.prototype._onKeyUp = function (element, event) { - var validator = this.validator; - // See http://stackoverflow.com/questions/41363409/jquery-validate-add-delay-to-keyup-validation - setTimeout(function () { - // Avoid revalidate the field when pressing one of the following keys - // Shift => 16 - // Ctrl => 17 - // Alt => 18 - // Caps lock => 20 - // End => 35 - // Home => 36 - // Left arrow => 37 - // Up arrow => 38 - // Right arrow => 39 - // Down arrow => 40 - // Insert => 45 - // Num lock => 144 - // AltGr key => 225 - var excludedKeys = [ - 16, 17, 18, 20, 35, 36, 37, - 38, 39, 40, 45, 144, 225 - ]; - - if (event.which === 9 && validator.elementValue(element) === '' || $.inArray(event.keyCode, excludedKeys) !== -1) { - return; - } else if (element.name in validator.submitted || element.name in validator.invalid) { - validator.element(element); - } - }, this.settings.keyupDelay); - }; - - // Handles instantiation and access to non-private methods. - $.fn[pluginName] = function (methodOrOptions) { - // Grab plugin instance - var instance = $(this).data(pluginName); - // If undefined or object, initalise plugin. - if (methodOrOptions === undefined || typeof methodOrOptions === 'object') { - // Only initalise if not previously done. - if (!instance) { - $(this).data(pluginName, new Plugin(this, methodOrOptions)); - } - return this; - } - // Otherwise ensure first parameter is a valid string, and is the name of an actual function. - else if (typeof methodOrOptions === 'string' && typeof instance[methodOrOptions] === 'function') { - // Ensure not a private function - if (methodOrOptions.indexOf('_') !== 0) { - return instance[methodOrOptions](Array.prototype.slice.call(arguments, 1)); - } - else { - console.warn('Method ' + methodOrOptions + ' is private!'); - } - } - else { - console.warn('Method ' + methodOrOptions + ' does not exist.'); - } - }; -})(jQuery, window, document); +/**
+ * uf-form plugin. Handles validation and submission for basic UserFrosting forms.
+ *
+ * This plugin uses the jQueryvalidation plugin (https://jqueryvalidation.org/) to perform instant, client-side form validation.
+ * UserFrosting forms must be wrapped in a <form> element, and contain a <button type=submit> element for submission.
+ *
+ * Forms are then set to submit via AJAX when the submit button is clicked.
+ *
+ * === USAGE ===
+ *
+ * uf-form can be initialized on a form element as follows:
+ *
+ * $('#myForm').ufForm(options);
+ *
+ * `options` is an object containing any of the following parameters:
+ * @param {JSON} validators An object containing two keys, "rules" and "messages", which specify the jQueryvalidation rules to use.
+ * @param {Object} msgTarget a jQuery selector specifying the element where any error messages should be inserted. Defaults to looking for a container with class .js-form-alerts inside this form.
+ * @param {Callback} beforeSubmitCallback a callback function to execute immediately after form validation, before the form is submitted.
+ * @param {bool} binaryCheckboxes specify whether to submit checkboxes as binary values 0 and 1, instead of omitting unchecked checkboxes from submission.
+ *
+ * == EVENTS ==
+ *
+ * ufForm triggers the following events:
+ *
+ * `submitSuccess.ufForm`: triggered when the form is successfully submitted, after re-enabling the submit button.
+ * `submitError.ufForm`: triggered when the form submission (not validation) fails, after re-enabling the submit button
+ * and displaying any error messages.
+ *
+ * UserFrosting https://www.userfrosting.com
+ * @author Alexander Weissman <https://alexanderweissman.com>
+ *
+ * Implement proper fallback for when `set` function isn't supported by FormData.
+ */
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ // Define plugin name and defaults.
+ var pluginName = 'ufForm',
+ defaults = {
+ validators: {
+ 'rules': {},
+ 'messages': {}
+ },
+ submittingText: "<i class='fa fa-spinner fa-spin'></i>",
+ beforeSubmitCallback: null,
+ binaryCheckboxes: true, // submit checked/unchecked checkboxes as 0/1 values
+ keyupDelay: 0,
+ DEBUG: false
+ };
+
+ // Constructor
+ function Plugin(element, options) {
+ this.element = element[0];
+ this.$element = $(this.element);
+ var lateDefaults = {
+ encType: (typeof this.$element.attr('enctype') !== 'undefined') ? this.$element.attr('enctype') : '',
+ msgTarget: this.$element.find('.js-form-alerts:first')
+ };
+ this.settings = $.extend(true, {}, defaults, lateDefaults, options);
+ this._defaults = $.extend(true, {}, defaults, lateDefaults);
+ this._name = pluginName;
+ this._debugAjax = (typeof site !== 'undefined') && site.debug.ajax;
+
+ // Detect changes to element attributes
+ this.$element.attrchange({
+ callback: function (event) {
+ this.element = event.target;
+ }.bind(this)
+ });
+
+ // Setup validator
+ this.validator = this.$element.validate({
+ rules: this.settings.validators.rules,
+ messages: this.settings.validators.messages,
+ submitHandler: $.proxy(this._submitHandler, this),
+ onkeyup: $.proxy(this._onKeyUp, this)
+ });
+
+ return this;
+ }
+
+ // Functions
+
+ /**
+ * Handles the form submission after successful client-side validation.
+ */
+ Plugin.prototype._submitHandler = function (form, event) {
+ // Execute any "before submit" callback
+ if (this.settings.beforeSubmitCallback) {
+ this.settings.beforeSubmitCallback();
+ }
+
+ var $form = $(form);
+
+ // Set "loading" text for submit button, if it exists, and disable button
+ var submitButton = $form.find('button[type=submit]');
+ if (submitButton) {
+ var submitButtonText = submitButton.html();
+ submitButton.prop('disabled', true);
+ submitButton.html(this.settings.submittingText);
+ }
+
+ // Get basic request parameters.
+ var reqParams = {
+ converters: {
+ // Override jQuery's strict JSON parsing
+ 'text json': function (result) {
+ try {
+ // First try to use native browser parsing
+ if (typeof JSON === 'object' && typeof JSON.parse === 'function') {
+ return JSON.parse(result);
+ } else {
+ return $.parseJSON(result);
+ }
+ } catch (e) {
+ // statements to handle any exceptions
+ console.warn('Could not parse expected JSON response.');
+ return {};
+ }
+ }
+ },
+
+ dataType: this._debugAjax ? 'html' : 'json',
+ type: this.$element.attr('method'),
+ url: this.$element.attr('action')
+ };
+
+ // Get the form encoding type from the users HTML, and chose an encoding form.
+ if (this.settings.encType.toLowerCase() === 'multipart/form-data') {
+ reqParams.data = this._multipartData($form);
+ // add additional params to fix jquery errors
+ reqParams.cache = false;
+ reqParams.contentType = false;
+ reqParams.processData = false;
+ } else {
+ reqParams.data = this._urlencodeData($form);
+ }
+
+ // Submit the form via AJAX
+ $.ajax(reqParams).then(
+ // Submission successful
+ $.proxy(function (data, textStatus, jqXHR) {
+ // Restore button text and re-enable submit button
+ if (submitButton) {
+ submitButton.prop('disabled', false);
+ submitButton.html(submitButtonText);
+ }
+
+ this.$element.trigger('submitSuccess.ufForm', [data, textStatus, jqXHR]);
+ return jqXHR;
+ }, this),
+ // Submission failed
+ $.proxy(function (jqXHR, textStatus, errorThrown) {
+ // Restore button text and re-enable submit button
+ if (submitButton) {
+ submitButton.prop('disabled', false);
+ submitButton.html(submitButtonText);
+ }
+ // Error messages
+ if (this._debugAjax && jqXHR.responseText) {
+ this.$element.trigger('submitError.ufForm', [jqXHR, textStatus, errorThrown]);
+ document.write(jqXHR.responseText);
+ document.close();
+ } else {
+ if (this.settings.DEBUG) {
+ console.log('Error (' + jqXHR.status + '): ' + jqXHR.responseText);
+ }
+ // Display errors on failure
+ // ufAlerts widget should have a 'destroy' method
+ if (!this.settings.msgTarget.data('ufAlerts')) {
+ this.settings.msgTarget.ufAlerts();
+ } else {
+ this.settings.msgTarget.ufAlerts('clear');
+ }
+
+ this.settings.msgTarget.ufAlerts('fetch').ufAlerts('render');
+ this.settings.msgTarget.on('render.ufAlerts', $.proxy(function () {
+ this.$element.trigger('submitError.ufForm', [jqXHR, textStatus, errorThrown]);
+ }, this));
+ }
+ return jqXHR;
+ }, this)
+ );
+ };
+
+ /**
+ * Helper function for encoding data as urlencoded
+ */
+ Plugin.prototype._urlencodeData = function (form) {
+ // Serialize and post to the backend script in ajax mode
+ var serializedData;
+ if (this.settings.binaryCheckboxes) {
+ serializedData = form.find(':input').not(':checkbox').serialize();
+ // Get unchecked checkbox values, set them to 0
+ form.find('input[type=checkbox]:enabled').each(function () {
+ if ($(this).is(':checked')) {
+ serializedData += '&' + encodeURIComponent(this.name) + '=1';
+ } else {
+ serializedData += '&' + encodeURIComponent(this.name) + '=0';
+ }
+ });
+ }
+ else {
+ serializedData = form.find(':input').serialize();
+ }
+
+ return serializedData;
+ };
+
+ /**
+ * Helper function for encoding data as multipart/form-data
+ */
+ Plugin.prototype._multipartData = function (form) {
+ // Use FormData to wrap form contents.
+ // https://developer.mozilla.org/en/docs/Web/API/FormData
+ var formData = new FormData(form[0]);
+ // Serialize and post to the backend script in ajax mode
+ if (this.settings.binaryCheckboxes) {
+ // Get unchecked checkbox values, set them to 0.
+ var checkboxes = form.find('input[type=checkbox]:enabled');
+ // Feature detection. Several browsers don't support `set`
+ if (typeof formData.set !== 'function') {
+ this.settings.msgTarget.ufAlerts('push', 'danger', "Your browser is missing a required feature. This form will still attempt to submit, but if it fails, you'll need to use Chrome for desktop or FireFox for desktop.");
+ } else {
+ checkboxes.each(function () {
+ if ($(this).is(':checked')) {
+ // this replaces checkbox value with 1 (as we're using binaryCheckboxes).
+ formData.set(this.name, 1);
+ // this explicitly adds unchecked boxes.
+ } else {
+ formData.set(this.name, 0);
+ }
+ });
+ }
+ }
+
+ return formData;
+ };
+
+ Plugin.prototype._onKeyUp = function (element, event) {
+ var validator = this.validator;
+ // See http://stackoverflow.com/questions/41363409/jquery-validate-add-delay-to-keyup-validation
+ setTimeout(function () {
+ // Avoid revalidate the field when pressing one of the following keys
+ // Shift => 16
+ // Ctrl => 17
+ // Alt => 18
+ // Caps lock => 20
+ // End => 35
+ // Home => 36
+ // Left arrow => 37
+ // Up arrow => 38
+ // Right arrow => 39
+ // Down arrow => 40
+ // Insert => 45
+ // Num lock => 144
+ // AltGr key => 225
+ var excludedKeys = [
+ 16, 17, 18, 20, 35, 36, 37,
+ 38, 39, 40, 45, 144, 225
+ ];
+
+ if (event.which === 9 && validator.elementValue(element) === '' || $.inArray(event.keyCode, excludedKeys) !== -1) {
+ return;
+ } else if (element.name in validator.submitted || element.name in validator.invalid) {
+ validator.element(element);
+ }
+ }, this.settings.keyupDelay);
+ };
+
+ // Handles instantiation and access to non-private methods.
+ $.fn[pluginName] = function (methodOrOptions) {
+ // Grab plugin instance
+ var instance = $(this).data(pluginName);
+ // If undefined or object, initalise plugin.
+ if (methodOrOptions === undefined || typeof methodOrOptions === 'object') {
+ // Only initalise if not previously done.
+ if (!instance) {
+ $(this).data(pluginName, new Plugin(this, methodOrOptions));
+ }
+ return this;
+ }
+ // Otherwise ensure first parameter is a valid string, and is the name of an actual function.
+ else if (typeof methodOrOptions === 'string' && typeof instance[methodOrOptions] === 'function') {
+ // Ensure not a private function
+ if (methodOrOptions.indexOf('_') !== 0) {
+ return instance[methodOrOptions](Array.prototype.slice.call(arguments, 1));
+ }
+ else {
+ console.warn('Method ' + methodOrOptions + ' is private!');
+ }
+ }
+ else {
+ console.warn('Method ' + methodOrOptions + ' does not exist.');
+ }
+ };
+})(jQuery, window, document);
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-init.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-init.js index 3e5e574..ea0e3ca 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/uf-init.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-init.js @@ -1,27 +1,27 @@ -/** - * Contains code that should be initialized in all UF pages. - */ - -$(document).ready(function () { - - // Override Bootstrap's tendency to steal focus from child elements in modals (such as select2). - // See https://github.com/select2/select2/issues/1436#issuecomment-21028474 - $.fn.modal.Constructor.prototype.enforceFocus = function () { - }; - - // Link all copy buttons - $.uf.copy('.js-copy-trigger'); - - // Display page alerts - if ($("#alerts-page").length) { - $("#alerts-page").ufAlerts(); - $("#alerts-page").ufAlerts('fetch').ufAlerts('render'); - } - - // Set any JS variables that might be missing from config.js.twig - if (typeof site.uf_table === 'undefined') { - site['uf_table'] = { - use_loading_transition: true - }; - } -}); +/**
+ * Contains code that should be initialized in all UF pages.
+ */
+
+$(document).ready(function () {
+
+ // Override Bootstrap's tendency to steal focus from child elements in modals (such as select2).
+ // See https://github.com/select2/select2/issues/1436#issuecomment-21028474
+ $.fn.modal.Constructor.prototype.enforceFocus = function () {
+ };
+
+ // Link all copy buttons
+ $.uf.copy('.js-copy-trigger');
+
+ // Display page alerts
+ if ($("#alerts-page").length) {
+ $("#alerts-page").ufAlerts();
+ $("#alerts-page").ufAlerts('fetch').ufAlerts('render');
+ }
+
+ // Set any JS variables that might be missing from config.js.twig
+ if (typeof site.uf_table === 'undefined') {
+ site['uf_table'] = {
+ use_loading_transition: true
+ };
+ }
+});
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-jqueryvalidation-config.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-jqueryvalidation-config.js index 26b5f7a..7901a73 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/uf-jqueryvalidation-config.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-jqueryvalidation-config.js @@ -1,49 +1,49 @@ -/** - * Set jQuery.validate settings for bootstrap integration - */ -jQuery.validator.setDefaults({ - highlight: function (element) { - var formGroup = jQuery(element).closest('.form-group'); - formGroup.addClass('has-error has-feedback'); - formGroup.removeClass('has-success'); - formGroup.find('.form-control-feedback').remove(); - formGroup.find('.form-control-icon').show(); - - // Hide any help block text - formGroup.find('.help-block').hide(); - }, - unhighlight: function (element) { - var formGroup = jQuery(element).closest('.form-group'); - - formGroup.removeClass('has-error'); - - // Completely remove the error block, rather than just clearing the text (jqueryvalidation's default action) - formGroup.find('.error-block').remove(); - - // Re-show any help block text - formGroup.find('.help-block').show(); - - // Reshow any non-feedback icons if there is an error - if (formGroup.hasClass('has-error')) { - formGroup.find('.form-control-icon').show(); - } - }, - errorElement: 'p', - errorClass: 'error-block', - errorPlacement: function (error, element) { - if (element.parent('.input-group').length) { - error.insertAfter(element.parent()); - } else { - error.insertAfter(element); - } - }, - success: function (element) { - var formGroup = jQuery(element).closest('.form-group'); - formGroup.addClass('has-success has-feedback'); - formGroup.find('.form-control-feedback').remove(); - // Hide any non-feedback icons - formGroup.find('.form-control-icon').hide(); - // Add a new check mark - jQuery(element).after('<i class="fa fa-check form-control-feedback" aria-hidden="true"></i>'); - } -}); +/**
+ * Set jQuery.validate settings for bootstrap integration
+ */
+jQuery.validator.setDefaults({
+ highlight: function (element) {
+ var formGroup = jQuery(element).closest('.form-group');
+ formGroup.addClass('has-error has-feedback');
+ formGroup.removeClass('has-success');
+ formGroup.find('.form-control-feedback').remove();
+ formGroup.find('.form-control-icon').show();
+
+ // Hide any help block text
+ formGroup.find('.help-block').hide();
+ },
+ unhighlight: function (element) {
+ var formGroup = jQuery(element).closest('.form-group');
+
+ formGroup.removeClass('has-error');
+
+ // Completely remove the error block, rather than just clearing the text (jqueryvalidation's default action)
+ formGroup.find('.error-block').remove();
+
+ // Re-show any help block text
+ formGroup.find('.help-block').show();
+
+ // Reshow any non-feedback icons if there is an error
+ if (formGroup.hasClass('has-error')) {
+ formGroup.find('.form-control-icon').show();
+ }
+ },
+ errorElement: 'p',
+ errorClass: 'error-block',
+ errorPlacement: function (error, element) {
+ if (element.parent('.input-group').length) {
+ error.insertAfter(element.parent());
+ } else {
+ error.insertAfter(element);
+ }
+ },
+ success: function (element) {
+ var formGroup = jQuery(element).closest('.form-group');
+ formGroup.addClass('has-success has-feedback');
+ formGroup.find('.form-control-feedback').remove();
+ // Hide any non-feedback icons
+ formGroup.find('.form-control-icon').hide();
+ // Add a new check mark
+ jQuery(element).after('<i class="fa fa-check form-control-feedback" aria-hidden="true"></i>');
+ }
+});
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-modal.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-modal.js index 221a2fc..de0632c 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/uf-modal.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-modal.js @@ -1,186 +1,186 @@ -/** - * ufModal plugin. Handles modal windows that dynamically their fetch content from a specified URL. - * - * - * UserFrosting https://www.userfrosting.com - * @author Alexander Weissman https://alexanderweissman.com - */ -(function ($) { - /** - * The plugin namespace, ie for $('.selector').ufModal(options) - * - * Also the id for storing the object state via $('.selector').data() - */ - var PLUGIN_NS = 'ufModal'; - - var Plugin = function (target, options) { - - this.$T = $(target); - - /** #### OPTIONS #### */ - this.options = $.extend( - true, // deep extend - { - sourceUrl: "", - ajaxParams: {}, - msgTarget: null, - DEBUG: false - }, - options - ); - - this.modal = null; - - this._init(target); - - return this; - }; - - /** #### INITIALISER #### */ - Plugin.prototype._init = function (target) { - var base = this; - var $el = $(target); - - // Delete any existing modals attached to the element (should have been deleted already anyway) - if ($el.find(".modal").length) { - $el.find(".modal").remove(); - } - - // Fetch and render the form - $.ajax({ - type: "GET", - url: base.options.sourceUrl, - data: base.options.ajaxParams, - cache: false - }) - .then( - // Fetch successful - function (data) { - // Append the form as a modal dialog to the body - base.modal = $(data); - $el.append(base.modal); - - base.modal.modal('show'); - - // Bind modal to be deleted when closed - base.modal.on("hidden.bs.modal", function () { - base.destroy(); - }); - - base.$T.trigger('renderSuccess.ufModal'); - return data; - }, - // Fetch failed - function (data) { - // Error messages - if ((typeof site !== "undefined") && site.debug.ajax && data.responseText) { - base.$T.trigger('renderError.ufModal'); - document.write(data.responseText); - document.close(); - } else { - if (base.options.DEBUG) { - console.log("Error (" + data.status + "): " + data.responseText); - } - // Display errors on failure - // ufAlerts widget should have a 'destroy' method - if (!base.options.msgTarget.data('ufAlerts')) { - base.options.msgTarget.ufAlerts(); - } else { - base.options.msgTarget.ufAlerts('clear'); - } - - base.options.msgTarget.ufAlerts('fetch').ufAlerts('render'); - base.options.msgTarget.on("render.ufAlerts", function () { - base.$T.trigger('renderError.ufModal'); - }); - } - - base.destroy(); - - return data; - } - ); - }; - - Plugin.prototype.destroy = function () { - var base = this; - var $el = base.$T; - - // Delete the plugin object - base.delete; - - // Remove the modal from the selector - if (base.modal) { - base.modal.remove(); - } - - // Unbind any modal events bound to the selector - $el.off('.ufModal'); - - // Remove plugin name from selector's data-* attribute - $el.removeData(PLUGIN_NS); - }; - - Plugin.prototype.getModal = function () { - return this.modal; - }; - - /** - * EZ Logging/Warning (technically private but saving an '_' is worth it imo) - */ - Plugin.prototype.DLOG = function () { - if (!this.DEBUG) return; - for (var i in arguments) { - console.log(PLUGIN_NS + ': ', arguments[i]); - } - } - Plugin.prototype.DWARN = function () { - this.DEBUG && console.warn(arguments); - } - - - /*################################################################################### - * JQUERY HOOK - ###################################################################################*/ - - /** - * Generic jQuery plugin instantiation method call logic - * - * Method options are stored via jQuery's data() method in the relevant element(s) - * Notice, myActionMethod mustn't start with an underscore (_) as this is used to - * indicate private methods on the PLUGIN class. - */ - $.fn[PLUGIN_NS] = function (methodOrOptions) { - if (!$(this).length) { - return $(this); - } - var instance = $(this).data(PLUGIN_NS); - - // CASE: action method (public method on PLUGIN class) - if (instance - && methodOrOptions.indexOf('_') != 0 - && instance[methodOrOptions] - && typeof(instance[methodOrOptions]) == 'function') { - - return instance[methodOrOptions](Array.prototype.slice.call(arguments, 1)); - - - // CASE: argument is options object or empty = initialise - } else if (typeof methodOrOptions === 'object' || !methodOrOptions) { - - instance = new Plugin($(this), methodOrOptions); // ok to overwrite if this is a re-init - $(this).data(PLUGIN_NS, instance); - return $(this); - - // CASE: method called before init - } else if (!instance) { - console.warn('Plugin must be initialised before using method: ' + methodOrOptions); - - // CASE: invalid method - } else if (methodOrOptions.indexOf('_') == 0) { - console.warn('Method ' + methodOrOptions + ' is private!'); - } else { - console.warn('Method ' + methodOrOptions + ' does not exist.'); - } - }; +/**
+ * ufModal plugin. Handles modal windows that dynamically their fetch content from a specified URL.
+ *
+ *
+ * UserFrosting https://www.userfrosting.com
+ * @author Alexander Weissman https://alexanderweissman.com
+ */
+(function ($) {
+ /**
+ * The plugin namespace, ie for $('.selector').ufModal(options)
+ *
+ * Also the id for storing the object state via $('.selector').data()
+ */
+ var PLUGIN_NS = 'ufModal';
+
+ var Plugin = function (target, options) {
+
+ this.$T = $(target);
+
+ /** #### OPTIONS #### */
+ this.options = $.extend(
+ true, // deep extend
+ {
+ sourceUrl: "",
+ ajaxParams: {},
+ msgTarget: null,
+ DEBUG: false
+ },
+ options
+ );
+
+ this.modal = null;
+
+ this._init(target);
+
+ return this;
+ };
+
+ /** #### INITIALISER #### */
+ Plugin.prototype._init = function (target) {
+ var base = this;
+ var $el = $(target);
+
+ // Delete any existing modals attached to the element (should have been deleted already anyway)
+ if ($el.find(".modal").length) {
+ $el.find(".modal").remove();
+ }
+
+ // Fetch and render the form
+ $.ajax({
+ type: "GET",
+ url: base.options.sourceUrl,
+ data: base.options.ajaxParams,
+ cache: false
+ })
+ .then(
+ // Fetch successful
+ function (data) {
+ // Append the form as a modal dialog to the body
+ base.modal = $(data);
+ $el.append(base.modal);
+
+ base.modal.modal('show');
+
+ // Bind modal to be deleted when closed
+ base.modal.on("hidden.bs.modal", function () {
+ base.destroy();
+ });
+
+ base.$T.trigger('renderSuccess.ufModal');
+ return data;
+ },
+ // Fetch failed
+ function (data) {
+ // Error messages
+ if ((typeof site !== "undefined") && site.debug.ajax && data.responseText) {
+ base.$T.trigger('renderError.ufModal');
+ document.write(data.responseText);
+ document.close();
+ } else {
+ if (base.options.DEBUG) {
+ console.log("Error (" + data.status + "): " + data.responseText);
+ }
+ // Display errors on failure
+ // ufAlerts widget should have a 'destroy' method
+ if (!base.options.msgTarget.data('ufAlerts')) {
+ base.options.msgTarget.ufAlerts();
+ } else {
+ base.options.msgTarget.ufAlerts('clear');
+ }
+
+ base.options.msgTarget.ufAlerts('fetch').ufAlerts('render');
+ base.options.msgTarget.on("render.ufAlerts", function () {
+ base.$T.trigger('renderError.ufModal');
+ });
+ }
+
+ base.destroy();
+
+ return data;
+ }
+ );
+ };
+
+ Plugin.prototype.destroy = function () {
+ var base = this;
+ var $el = base.$T;
+
+ // Delete the plugin object
+ base.delete;
+
+ // Remove the modal from the selector
+ if (base.modal) {
+ base.modal.remove();
+ }
+
+ // Unbind any modal events bound to the selector
+ $el.off('.ufModal');
+
+ // Remove plugin name from selector's data-* attribute
+ $el.removeData(PLUGIN_NS);
+ };
+
+ Plugin.prototype.getModal = function () {
+ return this.modal;
+ };
+
+ /**
+ * EZ Logging/Warning (technically private but saving an '_' is worth it imo)
+ */
+ Plugin.prototype.DLOG = function () {
+ if (!this.DEBUG) return;
+ for (var i in arguments) {
+ console.log(PLUGIN_NS + ': ', arguments[i]);
+ }
+ }
+ Plugin.prototype.DWARN = function () {
+ this.DEBUG && console.warn(arguments);
+ }
+
+
+ /*###################################################################################
+ * JQUERY HOOK
+ ###################################################################################*/
+
+ /**
+ * Generic jQuery plugin instantiation method call logic
+ *
+ * Method options are stored via jQuery's data() method in the relevant element(s)
+ * Notice, myActionMethod mustn't start with an underscore (_) as this is used to
+ * indicate private methods on the PLUGIN class.
+ */
+ $.fn[PLUGIN_NS] = function (methodOrOptions) {
+ if (!$(this).length) {
+ return $(this);
+ }
+ var instance = $(this).data(PLUGIN_NS);
+
+ // CASE: action method (public method on PLUGIN class)
+ if (instance
+ && methodOrOptions.indexOf('_') != 0
+ && instance[methodOrOptions]
+ && typeof(instance[methodOrOptions]) == 'function') {
+
+ return instance[methodOrOptions](Array.prototype.slice.call(arguments, 1));
+
+
+ // CASE: argument is options object or empty = initialise
+ } else if (typeof methodOrOptions === 'object' || !methodOrOptions) {
+
+ instance = new Plugin($(this), methodOrOptions); // ok to overwrite if this is a re-init
+ $(this).data(PLUGIN_NS, instance);
+ return $(this);
+
+ // CASE: method called before init
+ } else if (!instance) {
+ console.warn('Plugin must be initialised before using method: ' + methodOrOptions);
+
+ // CASE: invalid method
+ } else if (methodOrOptions.indexOf('_') == 0) {
+ console.warn('Method ' + methodOrOptions + ' is private!');
+ } else {
+ console.warn('Method ' + methodOrOptions + ' does not exist.');
+ }
+ };
})(jQuery);
\ No newline at end of file diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-table.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-table.js index 8981bb3..5ebdae9 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/uf-table.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-table.js @@ -1,706 +1,706 @@ -/** - * uf-table plugin. Sets up a Tablesorter table with sorting, pagination, and search, and fetches data from a JSON API. - * - * This plugin depends on query-string.js, which is used to convert a query string into a JSON object. - * - * jQuery plugin template adapted from https://gist.github.com/Air-Craft/1300890 - * - * === USAGE === - * - * Create a container element, and within it place your table, paging controls, and Handlebars templates for rendering the cells. - * - * - Your table should have a unique id, and your paging controls should be wrapped in an element with the `.js-uf-table-pager` class. - * - Create a button with the `.js-uf-table-download` class, and it will be automatically bound to trigger an AJAX request for downloading the table (CSV, etc). - * - <div id="widget-users"> - <table id="table-users" class="tablesorter table table-bordered table-hover table-striped" data-sortlist="[[0, 0]]"> - <thead> - <tr> - <th class="sorter-metatext" data-column-name="name" data-column-template="#user-table-column-info">User <i class="fa fa-sort"></i></th> - <th class="sorter-metanum" data-column-name="last_activity" data-column-template="#user-table-column-last-activity">Last Activity <i class="fa fa-sort"></i></th> - </tr> - </thead> - <tbody> - </tbody> - </table> - - <script id="user-table-column-info" type="text/x-handlebars-template"> - <td data-text="{{row.last_name}}"> - <strong> - <a href="{{site.uri.public}}/users/u/{{row.user_name}}">{{row.first_name}} {{row.last_name}} ({{row.user_name}})</a> - </strong> - <div> - <i class="fa fa-envelope"></i> <a href="mailto:{{row.email}}">{{row.email}}</a> - </div> - </td> - </script> - - <script id="user-table-column-last-activity" type="text/x-handlebars-template"> - {{#if row.last_activity_at }} - <td data-num="{{dateFormat row.last_activity_at format='x'}}"> - {{dateFormat row.last_activity_at format="dddd"}}<br>{{dateFormat row.last_activity_at format="MMM Do, YYYY h:mm a"}} - <br> - <i>{{row.last_activity.description}}</i> - </td> - {{ else }} - <td data-num="0"> - <i>Unknown</i> - </td> - {{/if }} - </script> - - <div class="pager pager-lg tablesorter-pager js-uf-table-pager"> - <span class="pager-control first" title="First page"><i class="fa fa-angle-double-left"></i></span> - <span class="pager-control prev" title="Previous page"><i class="fa fa-angle-left"></i></span> - <span class="pagedisplay"></span> - <span class="pager-control next" title="Next page"><i class="fa fa-angle-right"></i></span> - <span class="pager-control last" title= "Last page"><i class="fa fa-angle-double-right"></i></span> - <br><br> - Jump to Page: <select class="gotoPage"></select> • Show: - <select class="pagesize"> - <option value="5">5</option> - <option value="10">10</option> - </select> - </div> - - <button class="btn btn-sm btn-default js-uf-table-download">Download CSV</button> - </div> - * - * Initialize ufTable on your container object: - * - * $("#widget-users").ufTable(options); - * - * `options` is an object containing any of the following parameters: - * @param {string} dataUrl The absolute URL from which to fetch table data. - * @param {mixed} addParams An object containing any additional key-value pairs that you want appended to the AJAX requests. - * @param {mixed} tablesorter An object containing tablesorter's configuration options (https://mottie.github.io/tablesorter/docs/#Configuration) - * @param {mixed} pager An object containing tablesorter's paging options (https://mottie.github.io/tablesorter/docs/#pager) - * - * == EVENTS == - * - * ufTable triggers the following events: - * - * `pagerComplete.ufTable`: triggered when the tablesorter pager plugin has completed rendering of the table. - * - * == METHODS == - * - * `getTableStateVars( table )`: fetches the current page size, page number, sort order, sort field, and column filters. - * - * UserFrosting https://www.userfrosting.com - * @author Alexander Weissman <https://alexanderweissman.com> - */ -;(function ($, window, document, undefined) { - 'use strict'; - - // Define plugin name and defaults. - var pluginName = 'ufTable', - defaults = { - DEBUG: false, - site: site, // global site variables - dataUrl: '', - msgTarget: $('#alerts-page'), - addParams: {}, - filterAllField: '_all', - useLoadingTransition: true, - rowTemplate: null, - columnTemplates: {}, - tablesorter: { - debug: false, - theme: 'bootstrap', - widthFixed: true, - // Set up pagination of data via an AJAX source - // See http://jsfiddle.net/Mottie/uwZc2/ - // Also see https://mottie.github.io/tablesorter/docs/example-pager-ajax.html - widgets: ['saveSort', 'sort2Hash', 'filter', 'pager', 'columnSelector', 'reflow2'], - widgetOptions: { - columnSelector_layout: '<label><input type="checkbox"> <span>{name}</span></label>', - filter_cssFilter: 'form-control', - filter_saveFilters: true, - filter_serversideFiltering: true, - filter_selectSource: { - '.filter-select': function () { - return null; - } - }, - - // apply disabled classname to the pager arrows when the rows at either extreme is visible - pager_updateArrows: true, - - // starting page of the pager (zero based index) - pager_startPage: 0, - - // Number of visible rows - pager_size: 10, - - // Save pager page & size if the storage script is loaded (requires $.tablesorter.storage in jquery.tablesorter.widgets.js) - pager_savePages: true, - - // if true, the table will remain the same height no matter how many records are displayed. The space is made up by an empty - // table row set to a height to compensate; default is false - pager_fixedHeight: false, - - // remove rows from the table to speed up the sort of large tables. - // setting this to false, only hides the non-visible rows; needed if you plan to add/remove rows with the pager enabled. - pager_removeRows: false, // removing rows in larger tables speeds up the sort - - // target the pager markup - see the HTML block below - pager_css: { - errorRow: 'uf-table-error-row', // error information row - disabled: 'disabled' // Note there is no period "." in front of this class name - }, - - // Must be initialized with a 'data' key - pager_ajaxObject: { - data: {}, - dataType: 'json' - }, - - // hash prefix - sort2Hash_hash: '#', - // don't '#' or '=' here - sort2Hash_separator: '|', - // this option > table ID > table index on page - sort2Hash_tableId: null, - // if true, show header cell text instead of a zero-based column index - sort2Hash_headerTextAttr: 'data-column-name', - // direction text shown in the URL e.g. [ 'asc', 'desc' ] - sort2Hash_directionText: ['asc', 'desc'], // default values - // if true, override saveSort widget sort, if used & stored sort is available - sort2Hash_overrideSaveSort: true, // default = false - } - } - }; - - // Constructor - function Plugin(element, options) { - this.element = element[0]; - this.$element = $(this.element); - - var lateDefaults = { - download: { - button: this.$element.find('.js-uf-table-download'), - callback: $.proxy(this._onDownload, this) - }, - info: { - container: this.$element.find('.js-uf-table-info'), - callback: $.proxy(this._renderInfoMessages, this) - }, - overlay: { - container: this.$element.find('.js-uf-table-overlay') - }, - tableElement: this.$element.find('.tablesorter'), - tablesorter: { - widgetOptions: { - columnSelector_container: this.$element.find('.js-uf-table-cs-options'), - filter_external: this.$element.find('.js-uf-table-search input'), - - // Pager selectors - pager_selectors: { - container: this.$element.find('.js-uf-table-pager'), - first: '.first', // go to first page arrow - prev: '.prev', // previous page arrow - next: '.next', // next page arrow - last: '.last', // go to last page arrow - gotoPage: '.gotoPage', // go to page selector - select dropdown that sets the current page - pageDisplay: '.pagedisplay', // location of where the "output" is displayed - pageSize: '.pagesize' // page size selector - select dropdown that sets the "size" option - }, - // We need to use $.proxy to properly bind the context for callbacks that will be called by Tablesorter - - // Generate the URL for the AJAX request, with the relevant parameters - pager_customAjaxUrl: $.proxy(this._generateUrl, this), - - // Callback to process the response from the AJAX request - pager_ajaxProcessing: $.proxy(this._processAjax, this), - - // Callback to display errors - pager_ajaxError: $.proxy(this._pagerAjaxError, this), - - sort2Hash_encodeHash: $.proxy(this._encodeHash, this), - - sort2Hash_decodeHash: $.proxy(this._decodeHash, this), - - sort2Hash_cleanHash: $.proxy(this._cleanHash, this) - } - } - }; - this.settings = $.extend(true, {}, defaults, lateDefaults, options); - this._defaults = defaults; - this._name = pluginName; - this._debugAjax = (typeof this.settings.site !== 'undefined') && this.settings.site.debug.ajax; - - // Fall back to attributes from data-*, default values if not specified in options - var pagerContainer = this.settings.tablesorter.widgetOptions.pager_selectors.container; - var infoContainer = this.settings.info.container; - var dataAttributeDefaults = { - info: { - messageEmptyRows: infoContainer.data('message-empty-rows') ? - infoContainer.data('message-empty-rows') : - "Sorry, we've got nothing here." - }, - tablesorter: { - widgetOptions: { - // possible variables: {size}, {page}, {totalPages}, {filteredPages}, {startRow}, {endRow}, {filteredRows} and {totalRows} - // also {page:input} & {startRow:input} will add a modifiable input in place of the value - pager_output: pagerContainer.data('output-template') ? - pagerContainer.data('output-template') : - '{startRow} to {endRow} of {filteredRows} ({totalRows})' // default if not set on data-* attribute - } - } - }; - - this.settings = $.extend(true, {}, dataAttributeDefaults, this.settings); - - // Check that tableElement exists - var tableElement = this.settings.tableElement; - if (!tableElement.length) { - if (window.console && console.error) { - console.error('ufTable could not be initialized: wrapper element does not exist, or does not contain a matched tableElement (see https://learn.userfrosting.com/client-side-code/components/tables )'); - } - return; - } - - // Copy over dataUrl to pager_ajaxUrl - this.settings.tablesorter.widgetOptions.pager_ajaxUrl = this.settings.dataUrl; - - // Set up 'loading' overlays - if (this.settings.useLoadingTransition) { - var overlay = this.settings.overlay.container; - tableElement.bind('sortStart filterStart pageMoved', function () { - overlay.removeClass('hidden'); - }).bind('pagerComplete updateComplete', function () { - overlay.addClass('hidden'); - }); - } - - // Set up tablesorter and pager - this.ts = tableElement.tablesorter(this.settings.tablesorter); - - // Map default column template selectors based on data-column-template attribute in each column header - var columns = this.ts[0].config.$headerIndexed; - var columnTemplates = {}; - for (var col = 0; col < columns.length; col++) { - var columnName = columns[col].data('column-name'); - if (!columnName && this.settings.DEBUG) { - console.error('Column number ' + col + ' is missing a data-column-name attribute.'); - } - columnTemplates[columnName] = columns[col].data('column-template'); - } - - // Merge in any column template selectors that were set in the ctor options - columnTemplates = $.extend(true, columnTemplates, this.settings.columnTemplates); - - // Locate and compile templates for any string-identified column renderers - // At the same time, build out a numerically indexed array of templates - this.columnTemplatesIndexed = []; - for (var col = 0; col < columns.length; col++) { - var columnName = columns[col].data('column-name'); - if (!columnTemplates[columnName] && this.settings.DEBUG) { - console.error("No template found for column '" + columnName + "'."); - } - var columnTemplate = columnTemplates[columnName]; - if (typeof columnTemplate === 'string') { - this.columnTemplatesIndexed.push(Handlebars.compile($(columnTemplate).html())); - } else { - this.columnTemplatesIndexed.push(columnTemplate); - } - } - - // Locate and compile row template - this.rowTemplate = Handlebars.compile('<tr>'); - // If rowTemplateSelector is set, then find the DOM element that it references, which contains the template - if (this.settings.rowTemplate) { - var rowTemplate = this.settings.rowTemplate; - if (typeof rowTemplate === 'string') { - this.rowTemplate = Handlebars.compile($(this.settings.rowTemplate).html()); - } else { - this.rowTemplate = rowTemplate; - } - } - - // Link CSV download button - this.settings.download.button.on('click', this.settings.download.callback); - - // Allow clicking on the labels in the table menu without closing the menu - $(this.settings.tablesorter.widgetOptions.columnSelector_container).find('label').on('click', function (e) { - e.stopPropagation(); - }); - - // Propagate our own pagerComplete event - this.ts.on('pagerComplete', $.proxy(function () { - this.$element.trigger('pagerComplete.ufTable'); - }, this)); - - // Show info messages when there are no rows/no results - this.ts.on('filterEnd filterReset pagerComplete', this.settings.info.callback); - - // Detect changes to element attributes - this.$element.attrchange({ - callback: function (event) { - this.element = event.target; - }.bind(this) - }); - - return this; - } - - /** - * Get state variables for this table, as required by the AJAX data source: sorts, filters, size, page - */ - Plugin.prototype.getTableStateVars = function (table) { - var base = this; - - // Get sort column and order - var sortOrders = { - '0': 'asc', - '1': 'desc' - }; - - // Set sorts in URL. Assumes each th has a data-column-name attribute that corresponds to the name in the API - var sortList = table.config.sortList; - var sorts = {}; - for (var i = 0; i < sortList.length; i++) { - var columnIndex = sortList[i][0]; - var columnDirection = sortOrders[sortList[i][1]]; // Converts to 'asc' or 'desc' - if (sortList[i]) { - var columnName = table.config.$headerIndexed[columnIndex].data('column-name'); - sorts[columnName] = columnDirection; - } - } - - // Set filters in URL. Assumes each th has a data-column-name attribute that corresponds to the name in the API - var filterList = base.getSavedFilters(table); - var filters = {}; - for (i = 0; i < filterList.length; i++) { - if (filterList[i]) { - var columnName = base.settings.filterAllField; - - if (table.config.$headerIndexed[i]) { - columnName = table.config.$headerIndexed[i].data('column-name'); - } - - filters[columnName] = filterList[i]; - } - } - - var state = { - size: table.config.pager.size, - page: table.config.pager.page, - sorts: sorts, - filters: filters - }; - - return state; - }; - - /** - * Get saved filters from the browser local storage. Those should always be up to date - */ - Plugin.prototype.getSavedFilters = function (table) { - - // Fallback to `getFilters` or empty in case of failure - var filterList = $.tablesorter.getFilters(table) || []; - - // Overwrite list with saved filter for filter-select not setup by ts - var isArray, saved, - wo = table.config.widgetOptions; - if (wo.filter_saveFilters && $.tablesorter.storage) { - saved = $.tablesorter.storage(table, 'tablesorter-filters') || []; - isArray = $.isArray(saved); - // make sure we're not just getting an empty array - if (!(isArray && saved.join('') === '' || !isArray)) { - filterList = $.tablesorter.filter.processFilters(saved); - } - } - - return filterList; - }; - - /** - * Generate the AJAX url. - * Used as the default callback for pager_customAjaxUrl - * @private - */ - Plugin.prototype._generateUrl = function (table, url) { - var tableState = this.getTableStateVars(table); - - if (this.settings.DEBUG) { - console.log(tableState); - } - - $.extend(table.config.pager.ajaxObject.data, tableState); - - // Merge in any additional parameters - $.extend(table.config.pager.ajaxObject.data, this.settings.addParams); - - return url; - }; - /** - * Process data returned from the AJAX request and rendering the table cells. - * Used as the default callback for pager_ajaxProcessing - * @private - */ - Plugin.prototype._processAjax = function (data) { - var ts = this.ts[0]; - var json = {}, - rows = ''; - - if (data) { - var size = data.rows.length; - - // Render table rows and cells via Handlebars - for (var row = 0; row < size; row++) { - var cellData = { - rownum: row, - row: data.rows[row], // It is safe to use the data from the API because Handlebars escapes HTML - site: this.settings.site - }; - - rows += this.rowTemplate(cellData); - - for (var col = 0; col < this.columnTemplatesIndexed.length; col++) { - rows += this.columnTemplatesIndexed[col](cellData); - } - - rows += '</tr>'; - } - - // Initialize any dropdown filters - var columns = ts.config.$headerIndexed; - this._ajaxInitFilterSelects(columns, data.listable); - - json.total = data.count; // Get total rows without pagination - json.filteredRows = data.count_filtered; // no filtering - json.rows = $(rows); - json.output = data.output; - } else { - json.total = 0; - json.filteredRows = 0; - json.rows = ''; - } - - return json; - }; - - /** - * Initialize filter select menus using the ajax `listable` values - * @private - */ - Plugin.prototype._ajaxInitFilterSelects = function (columns, listable) { - var ts = this.ts[0]; - var filters = this.getSavedFilters(ts); - // Find columns with `.filter-select` and match them to column numbers based on their data-column-name - for (var col = 0; col < columns.length; col++) { - var column = columns[col]; - // If the column is designated for filter-select, get the listables from the data and recreate it - if (column.hasClass('filter-select')) { - var columnName = column.data('column-name'); - if (listable[columnName]) { - $.tablesorter.filter.buildSelect(ts, col, listable[columnName], true); - // If there is a filter actually set for this column, update the selected option. - if (filters[col]) { - var selectControl = $(ts).find(".tablesorter-filter[data-column='" + col + "']"); - selectControl.val(filters[col]); - } - } - } - } - }; - - /** - * Implements handler for the "download CSV" button. - * Default callback for download.callback - * @private - */ - Plugin.prototype._onDownload = function () { - var tableState = this.getTableStateVars(this.ts[0]); - tableState.format = 'csv'; - delete tableState.page; - delete tableState.size; - - // Merge in any additional request parameters - $.extend(tableState, this.settings.addParams); - - // Causes download to begin - window.location = this.settings.dataUrl + '?' + $.param(tableState); - }; - - /** - * Handle pager ajax errors. - * @private - */ - Plugin.prototype._pagerAjaxError = function (c, jqXHR, settings, exception) { - this._ajaxError(jqXHR); - - // Let TS handle the in-table error message - return ''; - }; - - /** - * Handle ajax error - * @private - */ - Plugin.prototype._ajaxError = function (jqXHR) { - if (typeof jqXHR === 'object') { - // Error messages - if (this._debugAjax && jqXHR.responseText) { - document.write(jqXHR.responseText); - document.close(); - } else { - if (this.settings.DEBUG) { - console.log('Error (' + jqXHR.status + '): ' + jqXHR.responseText); - } - // Display errors on failure - // ufAlerts widget should have a 'destroy' method - if (!this.settings.msgTarget.data('ufAlerts')) { - this.settings.msgTarget.ufAlerts(); - } else { - this.settings.msgTarget.ufAlerts('clear'); - } - - this.settings.msgTarget.ufAlerts('fetch').ufAlerts('render'); - } - } - }; - - /** - * Render info messages, such as when there are no results. - * Default callback for info.callback - * @private - */ - Plugin.prototype._renderInfoMessages = function () { - var table = this.ts[0]; - var infoMessages = this.settings.info.container; - if (table.config.pager) { - infoMessages.html(''); - var fr = table.config.pager.filteredRows; - if (fr === 0) { - infoMessages.html(this.settings.info.messageEmptyRows); - } - } - }; - - /** - * Encode the current table state variables into a URL hash. - * Default callback for sort2Hash_encodeHash - * @private - */ - Plugin.prototype._encodeHash = function (config, tableId, component, value, rawValue) { - var wo = config.widgetOptions; - if (component === 'filter') { - // rawValue is an array of filter values, numerically indexed - var encodedFilters = ''; - var len = rawValue.length; - for (var index = 0; index < len; index++) { - if (rawValue[index]) { - var columnName = this.settings.filterAllField; - if (config.$headerIndexed[index]) { - columnName = $(config.$headerIndexed[index][0]).attr(wo.sort2Hash_headerTextAttr); - } - encodedFilters += '&filter[' + tableId + '][' + columnName + ']=' + encodeURIComponent(rawValue[index]); - } - } - return encodedFilters; - } else if (component === 'sort') { - // rawValue is an array of sort pairs [columnNum, sortDirection] - var encodedFilters = ''; - var len = rawValue.length; - for (var index = 0; index < len; index++) { - var columnNum = rawValue[index][0]; - var sortDirection = rawValue[index][1]; - var columnName = $(config.$headerIndexed[columnNum][0]).attr(wo.sort2Hash_headerTextAttr); - encodedFilters += '&sort[' + tableId + '][' + columnName + ']=' + wo.sort2Hash_directionText[sortDirection]; - } - return encodedFilters; - } - return false; - }; - - /** - * Decode the current table state variables from the URL hash. - * Default callback for sort2Hash_decodeHash - * @private - */ - Plugin.prototype._decodeHash = function (config, tableId, component) { - var wo = config.widgetOptions; - var result; - // Convert hash into JSON object - var urlObject = $.String.deparam(window.location.hash); - delete urlObject[wo.sort2Hash_hash]; // Remove hash character - if (component === 'filter') { - var decodedFilters = []; - // Extract filter names and values for the specified table - var pageFilters = urlObject.filter ? urlObject.filter : []; - if (pageFilters[tableId]) { - var tableFilters = pageFilters[tableId]; - // Build a numerically indexed array of filter values - var len = config.$headerIndexed.length; - for (var index = 0; index < len; index++) { - var columnName = $(config.$headerIndexed[index][0]).attr(wo.sort2Hash_headerTextAttr); - if (tableFilters[columnName] && tableFilters[columnName] != this.settings.filterAllField) { - decodedFilters.push(tableFilters[columnName]); - } else { - decodedFilters.push(''); - } - } - // Convert array of filter values to a delimited string - result = decodedFilters.join(wo.sort2Hash_separator); - // make sure to use decodeURIComponent on the result - return decodeURIComponent(result); - } else { - return ''; - } - } - return false; - }; - - /** - * Clean up URL hash. - * Default callback for sort2Hash_cleanHash - * @private - */ - Plugin.prototype._cleanHash = function (config, tableId, component, hash) { - var wo = config.widgetOptions; - // Convert hash to JSON object - var urlObject = $.String.deparam(hash); - delete urlObject[wo.sort2Hash_hash]; // Remove hash character - // Remove specified component for specified table - if (urlObject[component]) { - if (urlObject[component][tableId]) { - delete urlObject[component][tableId]; - } - // Delete entire component if no other tables remaining - if (jQuery.isEmptyObject(urlObject[component])) { - delete urlObject[component]; - } - } - // Convert modified JSON object back into serialized representation - var result = decodeURIComponent(jQuery.param(urlObject)); - return result.length ? result : ''; - }; - - // Handles instantiation and access to non-private methods. - $.fn[pluginName] = function (methodOrOptions) { - // Grab plugin instance - var instance = $(this).data(pluginName); - // If undefined or object, initalise plugin. - if (methodOrOptions === undefined || typeof methodOrOptions === 'object') { - // Only initalise if not previously done. - if (!instance) { - $(this).data(pluginName, new Plugin(this, methodOrOptions)); - } - return this; - // Otherwise ensure first parameter is a valid string, and is the name of an actual function. - } else if (typeof methodOrOptions === 'string' && typeof instance[methodOrOptions] === 'function') { - // Ensure not a private function - if (methodOrOptions.indexOf('_') !== 0) { - return instance[methodOrOptions](Array.prototype.slice.call(arguments, 1)); - } - else { - console.warn('Method ' + methodOrOptions + ' is private!'); - } - } else { - console.warn('Method ' + methodOrOptions + ' does not exist.'); - } - }; -})(jQuery, window, document); +/**
+ * uf-table plugin. Sets up a Tablesorter table with sorting, pagination, and search, and fetches data from a JSON API.
+ *
+ * This plugin depends on query-string.js, which is used to convert a query string into a JSON object.
+ *
+ * jQuery plugin template adapted from https://gist.github.com/Air-Craft/1300890
+ *
+ * === USAGE ===
+ *
+ * Create a container element, and within it place your table, paging controls, and Handlebars templates for rendering the cells.
+ *
+ * - Your table should have a unique id, and your paging controls should be wrapped in an element with the `.js-uf-table-pager` class.
+ * - Create a button with the `.js-uf-table-download` class, and it will be automatically bound to trigger an AJAX request for downloading the table (CSV, etc).
+ *
+ <div id="widget-users">
+ <table id="table-users" class="tablesorter table table-bordered table-hover table-striped" data-sortlist="[[0, 0]]">
+ <thead>
+ <tr>
+ <th class="sorter-metatext" data-column-name="name" data-column-template="#user-table-column-info">User <i class="fa fa-sort"></i></th>
+ <th class="sorter-metanum" data-column-name="last_activity" data-column-template="#user-table-column-last-activity">Last Activity <i class="fa fa-sort"></i></th>
+ </tr>
+ </thead>
+ <tbody>
+ </tbody>
+ </table>
+
+ <script id="user-table-column-info" type="text/x-handlebars-template">
+ <td data-text="{{row.last_name}}">
+ <strong>
+ <a href="{{site.uri.public}}/users/u/{{row.user_name}}">{{row.first_name}} {{row.last_name}} ({{row.user_name}})</a>
+ </strong>
+ <div>
+ <i class="fa fa-envelope"></i> <a href="mailto:{{row.email}}">{{row.email}}</a>
+ </div>
+ </td>
+ </script>
+
+ <script id="user-table-column-last-activity" type="text/x-handlebars-template">
+ {{#if row.last_activity_at }}
+ <td data-num="{{dateFormat row.last_activity_at format='x'}}">
+ {{dateFormat row.last_activity_at format="dddd"}}<br>{{dateFormat row.last_activity_at format="MMM Do, YYYY h:mm a"}}
+ <br>
+ <i>{{row.last_activity.description}}</i>
+ </td>
+ {{ else }}
+ <td data-num="0">
+ <i>Unknown</i>
+ </td>
+ {{/if }}
+ </script>
+
+ <div class="pager pager-lg tablesorter-pager js-uf-table-pager">
+ <span class="pager-control first" title="First page"><i class="fa fa-angle-double-left"></i></span>
+ <span class="pager-control prev" title="Previous page"><i class="fa fa-angle-left"></i></span>
+ <span class="pagedisplay"></span>
+ <span class="pager-control next" title="Next page"><i class="fa fa-angle-right"></i></span>
+ <span class="pager-control last" title= "Last page"><i class="fa fa-angle-double-right"></i></span>
+ <br><br>
+ Jump to Page: <select class="gotoPage"></select> • Show:
+ <select class="pagesize">
+ <option value="5">5</option>
+ <option value="10">10</option>
+ </select>
+ </div>
+
+ <button class="btn btn-sm btn-default js-uf-table-download">Download CSV</button>
+ </div>
+ *
+ * Initialize ufTable on your container object:
+ *
+ * $("#widget-users").ufTable(options);
+ *
+ * `options` is an object containing any of the following parameters:
+ * @param {string} dataUrl The absolute URL from which to fetch table data.
+ * @param {mixed} addParams An object containing any additional key-value pairs that you want appended to the AJAX requests.
+ * @param {mixed} tablesorter An object containing tablesorter's configuration options (https://mottie.github.io/tablesorter/docs/#Configuration)
+ * @param {mixed} pager An object containing tablesorter's paging options (https://mottie.github.io/tablesorter/docs/#pager)
+ *
+ * == EVENTS ==
+ *
+ * ufTable triggers the following events:
+ *
+ * `pagerComplete.ufTable`: triggered when the tablesorter pager plugin has completed rendering of the table.
+ *
+ * == METHODS ==
+ *
+ * `getTableStateVars( table )`: fetches the current page size, page number, sort order, sort field, and column filters.
+ *
+ * UserFrosting https://www.userfrosting.com
+ * @author Alexander Weissman <https://alexanderweissman.com>
+ */
+;(function ($, window, document, undefined) {
+ 'use strict';
+
+ // Define plugin name and defaults.
+ var pluginName = 'ufTable',
+ defaults = {
+ DEBUG: false,
+ site: site, // global site variables
+ dataUrl: '',
+ msgTarget: $('#alerts-page'),
+ addParams: {},
+ filterAllField: '_all',
+ useLoadingTransition: true,
+ rowTemplate: null,
+ columnTemplates: {},
+ tablesorter: {
+ debug: false,
+ theme: 'bootstrap',
+ widthFixed: true,
+ // Set up pagination of data via an AJAX source
+ // See http://jsfiddle.net/Mottie/uwZc2/
+ // Also see https://mottie.github.io/tablesorter/docs/example-pager-ajax.html
+ widgets: ['saveSort', 'sort2Hash', 'filter', 'pager', 'columnSelector', 'reflow2'],
+ widgetOptions: {
+ columnSelector_layout: '<label><input type="checkbox"> <span>{name}</span></label>',
+ filter_cssFilter: 'form-control',
+ filter_saveFilters: true,
+ filter_serversideFiltering: true,
+ filter_selectSource: {
+ '.filter-select': function () {
+ return null;
+ }
+ },
+
+ // apply disabled classname to the pager arrows when the rows at either extreme is visible
+ pager_updateArrows: true,
+
+ // starting page of the pager (zero based index)
+ pager_startPage: 0,
+
+ // Number of visible rows
+ pager_size: 10,
+
+ // Save pager page & size if the storage script is loaded (requires $.tablesorter.storage in jquery.tablesorter.widgets.js)
+ pager_savePages: true,
+
+ // if true, the table will remain the same height no matter how many records are displayed. The space is made up by an empty
+ // table row set to a height to compensate; default is false
+ pager_fixedHeight: false,
+
+ // remove rows from the table to speed up the sort of large tables.
+ // setting this to false, only hides the non-visible rows; needed if you plan to add/remove rows with the pager enabled.
+ pager_removeRows: false, // removing rows in larger tables speeds up the sort
+
+ // target the pager markup - see the HTML block below
+ pager_css: {
+ errorRow: 'uf-table-error-row', // error information row
+ disabled: 'disabled' // Note there is no period "." in front of this class name
+ },
+
+ // Must be initialized with a 'data' key
+ pager_ajaxObject: {
+ data: {},
+ dataType: 'json'
+ },
+
+ // hash prefix
+ sort2Hash_hash: '#',
+ // don't '#' or '=' here
+ sort2Hash_separator: '|',
+ // this option > table ID > table index on page
+ sort2Hash_tableId: null,
+ // if true, show header cell text instead of a zero-based column index
+ sort2Hash_headerTextAttr: 'data-column-name',
+ // direction text shown in the URL e.g. [ 'asc', 'desc' ]
+ sort2Hash_directionText: ['asc', 'desc'], // default values
+ // if true, override saveSort widget sort, if used & stored sort is available
+ sort2Hash_overrideSaveSort: true, // default = false
+ }
+ }
+ };
+
+ // Constructor
+ function Plugin(element, options) {
+ this.element = element[0];
+ this.$element = $(this.element);
+
+ var lateDefaults = {
+ download: {
+ button: this.$element.find('.js-uf-table-download'),
+ callback: $.proxy(this._onDownload, this)
+ },
+ info: {
+ container: this.$element.find('.js-uf-table-info'),
+ callback: $.proxy(this._renderInfoMessages, this)
+ },
+ overlay: {
+ container: this.$element.find('.js-uf-table-overlay')
+ },
+ tableElement: this.$element.find('.tablesorter'),
+ tablesorter: {
+ widgetOptions: {
+ columnSelector_container: this.$element.find('.js-uf-table-cs-options'),
+ filter_external: this.$element.find('.js-uf-table-search input'),
+
+ // Pager selectors
+ pager_selectors: {
+ container: this.$element.find('.js-uf-table-pager'),
+ first: '.first', // go to first page arrow
+ prev: '.prev', // previous page arrow
+ next: '.next', // next page arrow
+ last: '.last', // go to last page arrow
+ gotoPage: '.gotoPage', // go to page selector - select dropdown that sets the current page
+ pageDisplay: '.pagedisplay', // location of where the "output" is displayed
+ pageSize: '.pagesize' // page size selector - select dropdown that sets the "size" option
+ },
+ // We need to use $.proxy to properly bind the context for callbacks that will be called by Tablesorter
+
+ // Generate the URL for the AJAX request, with the relevant parameters
+ pager_customAjaxUrl: $.proxy(this._generateUrl, this),
+
+ // Callback to process the response from the AJAX request
+ pager_ajaxProcessing: $.proxy(this._processAjax, this),
+
+ // Callback to display errors
+ pager_ajaxError: $.proxy(this._pagerAjaxError, this),
+
+ sort2Hash_encodeHash: $.proxy(this._encodeHash, this),
+
+ sort2Hash_decodeHash: $.proxy(this._decodeHash, this),
+
+ sort2Hash_cleanHash: $.proxy(this._cleanHash, this)
+ }
+ }
+ };
+ this.settings = $.extend(true, {}, defaults, lateDefaults, options);
+ this._defaults = defaults;
+ this._name = pluginName;
+ this._debugAjax = (typeof this.settings.site !== 'undefined') && this.settings.site.debug.ajax;
+
+ // Fall back to attributes from data-*, default values if not specified in options
+ var pagerContainer = this.settings.tablesorter.widgetOptions.pager_selectors.container;
+ var infoContainer = this.settings.info.container;
+ var dataAttributeDefaults = {
+ info: {
+ messageEmptyRows: infoContainer.data('message-empty-rows') ?
+ infoContainer.data('message-empty-rows') :
+ "Sorry, we've got nothing here."
+ },
+ tablesorter: {
+ widgetOptions: {
+ // possible variables: {size}, {page}, {totalPages}, {filteredPages}, {startRow}, {endRow}, {filteredRows} and {totalRows}
+ // also {page:input} & {startRow:input} will add a modifiable input in place of the value
+ pager_output: pagerContainer.data('output-template') ?
+ pagerContainer.data('output-template') :
+ '{startRow} to {endRow} of {filteredRows} ({totalRows})' // default if not set on data-* attribute
+ }
+ }
+ };
+
+ this.settings = $.extend(true, {}, dataAttributeDefaults, this.settings);
+
+ // Check that tableElement exists
+ var tableElement = this.settings.tableElement;
+ if (!tableElement.length) {
+ if (window.console && console.error) {
+ console.error('ufTable could not be initialized: wrapper element does not exist, or does not contain a matched tableElement (see https://learn.userfrosting.com/client-side-code/components/tables )');
+ }
+ return;
+ }
+
+ // Copy over dataUrl to pager_ajaxUrl
+ this.settings.tablesorter.widgetOptions.pager_ajaxUrl = this.settings.dataUrl;
+
+ // Set up 'loading' overlays
+ if (this.settings.useLoadingTransition) {
+ var overlay = this.settings.overlay.container;
+ tableElement.bind('sortStart filterStart pageMoved', function () {
+ overlay.removeClass('hidden');
+ }).bind('pagerComplete updateComplete', function () {
+ overlay.addClass('hidden');
+ });
+ }
+
+ // Set up tablesorter and pager
+ this.ts = tableElement.tablesorter(this.settings.tablesorter);
+
+ // Map default column template selectors based on data-column-template attribute in each column header
+ var columns = this.ts[0].config.$headerIndexed;
+ var columnTemplates = {};
+ for (var col = 0; col < columns.length; col++) {
+ var columnName = columns[col].data('column-name');
+ if (!columnName && this.settings.DEBUG) {
+ console.error('Column number ' + col + ' is missing a data-column-name attribute.');
+ }
+ columnTemplates[columnName] = columns[col].data('column-template');
+ }
+
+ // Merge in any column template selectors that were set in the ctor options
+ columnTemplates = $.extend(true, columnTemplates, this.settings.columnTemplates);
+
+ // Locate and compile templates for any string-identified column renderers
+ // At the same time, build out a numerically indexed array of templates
+ this.columnTemplatesIndexed = [];
+ for (var col = 0; col < columns.length; col++) {
+ var columnName = columns[col].data('column-name');
+ if (!columnTemplates[columnName] && this.settings.DEBUG) {
+ console.error("No template found for column '" + columnName + "'.");
+ }
+ var columnTemplate = columnTemplates[columnName];
+ if (typeof columnTemplate === 'string') {
+ this.columnTemplatesIndexed.push(Handlebars.compile($(columnTemplate).html()));
+ } else {
+ this.columnTemplatesIndexed.push(columnTemplate);
+ }
+ }
+
+ // Locate and compile row template
+ this.rowTemplate = Handlebars.compile('<tr>');
+ // If rowTemplateSelector is set, then find the DOM element that it references, which contains the template
+ if (this.settings.rowTemplate) {
+ var rowTemplate = this.settings.rowTemplate;
+ if (typeof rowTemplate === 'string') {
+ this.rowTemplate = Handlebars.compile($(this.settings.rowTemplate).html());
+ } else {
+ this.rowTemplate = rowTemplate;
+ }
+ }
+
+ // Link CSV download button
+ this.settings.download.button.on('click', this.settings.download.callback);
+
+ // Allow clicking on the labels in the table menu without closing the menu
+ $(this.settings.tablesorter.widgetOptions.columnSelector_container).find('label').on('click', function (e) {
+ e.stopPropagation();
+ });
+
+ // Propagate our own pagerComplete event
+ this.ts.on('pagerComplete', $.proxy(function () {
+ this.$element.trigger('pagerComplete.ufTable');
+ }, this));
+
+ // Show info messages when there are no rows/no results
+ this.ts.on('filterEnd filterReset pagerComplete', this.settings.info.callback);
+
+ // Detect changes to element attributes
+ this.$element.attrchange({
+ callback: function (event) {
+ this.element = event.target;
+ }.bind(this)
+ });
+
+ return this;
+ }
+
+ /**
+ * Get state variables for this table, as required by the AJAX data source: sorts, filters, size, page
+ */
+ Plugin.prototype.getTableStateVars = function (table) {
+ var base = this;
+
+ // Get sort column and order
+ var sortOrders = {
+ '0': 'asc',
+ '1': 'desc'
+ };
+
+ // Set sorts in URL. Assumes each th has a data-column-name attribute that corresponds to the name in the API
+ var sortList = table.config.sortList;
+ var sorts = {};
+ for (var i = 0; i < sortList.length; i++) {
+ var columnIndex = sortList[i][0];
+ var columnDirection = sortOrders[sortList[i][1]]; // Converts to 'asc' or 'desc'
+ if (sortList[i]) {
+ var columnName = table.config.$headerIndexed[columnIndex].data('column-name');
+ sorts[columnName] = columnDirection;
+ }
+ }
+
+ // Set filters in URL. Assumes each th has a data-column-name attribute that corresponds to the name in the API
+ var filterList = base.getSavedFilters(table);
+ var filters = {};
+ for (i = 0; i < filterList.length; i++) {
+ if (filterList[i]) {
+ var columnName = base.settings.filterAllField;
+
+ if (table.config.$headerIndexed[i]) {
+ columnName = table.config.$headerIndexed[i].data('column-name');
+ }
+
+ filters[columnName] = filterList[i];
+ }
+ }
+
+ var state = {
+ size: table.config.pager.size,
+ page: table.config.pager.page,
+ sorts: sorts,
+ filters: filters
+ };
+
+ return state;
+ };
+
+ /**
+ * Get saved filters from the browser local storage. Those should always be up to date
+ */
+ Plugin.prototype.getSavedFilters = function (table) {
+
+ // Fallback to `getFilters` or empty in case of failure
+ var filterList = $.tablesorter.getFilters(table) || [];
+
+ // Overwrite list with saved filter for filter-select not setup by ts
+ var isArray, saved,
+ wo = table.config.widgetOptions;
+ if (wo.filter_saveFilters && $.tablesorter.storage) {
+ saved = $.tablesorter.storage(table, 'tablesorter-filters') || [];
+ isArray = $.isArray(saved);
+ // make sure we're not just getting an empty array
+ if (!(isArray && saved.join('') === '' || !isArray)) {
+ filterList = $.tablesorter.filter.processFilters(saved);
+ }
+ }
+
+ return filterList;
+ };
+
+ /**
+ * Generate the AJAX url.
+ * Used as the default callback for pager_customAjaxUrl
+ * @private
+ */
+ Plugin.prototype._generateUrl = function (table, url) {
+ var tableState = this.getTableStateVars(table);
+
+ if (this.settings.DEBUG) {
+ console.log(tableState);
+ }
+
+ $.extend(table.config.pager.ajaxObject.data, tableState);
+
+ // Merge in any additional parameters
+ $.extend(table.config.pager.ajaxObject.data, this.settings.addParams);
+
+ return url;
+ };
+ /**
+ * Process data returned from the AJAX request and rendering the table cells.
+ * Used as the default callback for pager_ajaxProcessing
+ * @private
+ */
+ Plugin.prototype._processAjax = function (data) {
+ var ts = this.ts[0];
+ var json = {},
+ rows = '';
+
+ if (data) {
+ var size = data.rows.length;
+
+ // Render table rows and cells via Handlebars
+ for (var row = 0; row < size; row++) {
+ var cellData = {
+ rownum: row,
+ row: data.rows[row], // It is safe to use the data from the API because Handlebars escapes HTML
+ site: this.settings.site
+ };
+
+ rows += this.rowTemplate(cellData);
+
+ for (var col = 0; col < this.columnTemplatesIndexed.length; col++) {
+ rows += this.columnTemplatesIndexed[col](cellData);
+ }
+
+ rows += '</tr>';
+ }
+
+ // Initialize any dropdown filters
+ var columns = ts.config.$headerIndexed;
+ this._ajaxInitFilterSelects(columns, data.listable);
+
+ json.total = data.count; // Get total rows without pagination
+ json.filteredRows = data.count_filtered; // no filtering
+ json.rows = $(rows);
+ json.output = data.output;
+ } else {
+ json.total = 0;
+ json.filteredRows = 0;
+ json.rows = '';
+ }
+
+ return json;
+ };
+
+ /**
+ * Initialize filter select menus using the ajax `listable` values
+ * @private
+ */
+ Plugin.prototype._ajaxInitFilterSelects = function (columns, listable) {
+ var ts = this.ts[0];
+ var filters = this.getSavedFilters(ts);
+ // Find columns with `.filter-select` and match them to column numbers based on their data-column-name
+ for (var col = 0; col < columns.length; col++) {
+ var column = columns[col];
+ // If the column is designated for filter-select, get the listables from the data and recreate it
+ if (column.hasClass('filter-select')) {
+ var columnName = column.data('column-name');
+ if (listable[columnName]) {
+ $.tablesorter.filter.buildSelect(ts, col, listable[columnName], true);
+ // If there is a filter actually set for this column, update the selected option.
+ if (filters[col]) {
+ var selectControl = $(ts).find(".tablesorter-filter[data-column='" + col + "']");
+ selectControl.val(filters[col]);
+ }
+ }
+ }
+ }
+ };
+
+ /**
+ * Implements handler for the "download CSV" button.
+ * Default callback for download.callback
+ * @private
+ */
+ Plugin.prototype._onDownload = function () {
+ var tableState = this.getTableStateVars(this.ts[0]);
+ tableState.format = 'csv';
+ delete tableState.page;
+ delete tableState.size;
+
+ // Merge in any additional request parameters
+ $.extend(tableState, this.settings.addParams);
+
+ // Causes download to begin
+ window.location = this.settings.dataUrl + '?' + $.param(tableState);
+ };
+
+ /**
+ * Handle pager ajax errors.
+ * @private
+ */
+ Plugin.prototype._pagerAjaxError = function (c, jqXHR, settings, exception) {
+ this._ajaxError(jqXHR);
+
+ // Let TS handle the in-table error message
+ return '';
+ };
+
+ /**
+ * Handle ajax error
+ * @private
+ */
+ Plugin.prototype._ajaxError = function (jqXHR) {
+ if (typeof jqXHR === 'object') {
+ // Error messages
+ if (this._debugAjax && jqXHR.responseText) {
+ document.write(jqXHR.responseText);
+ document.close();
+ } else {
+ if (this.settings.DEBUG) {
+ console.log('Error (' + jqXHR.status + '): ' + jqXHR.responseText);
+ }
+ // Display errors on failure
+ // ufAlerts widget should have a 'destroy' method
+ if (!this.settings.msgTarget.data('ufAlerts')) {
+ this.settings.msgTarget.ufAlerts();
+ } else {
+ this.settings.msgTarget.ufAlerts('clear');
+ }
+
+ this.settings.msgTarget.ufAlerts('fetch').ufAlerts('render');
+ }
+ }
+ };
+
+ /**
+ * Render info messages, such as when there are no results.
+ * Default callback for info.callback
+ * @private
+ */
+ Plugin.prototype._renderInfoMessages = function () {
+ var table = this.ts[0];
+ var infoMessages = this.settings.info.container;
+ if (table.config.pager) {
+ infoMessages.html('');
+ var fr = table.config.pager.filteredRows;
+ if (fr === 0) {
+ infoMessages.html(this.settings.info.messageEmptyRows);
+ }
+ }
+ };
+
+ /**
+ * Encode the current table state variables into a URL hash.
+ * Default callback for sort2Hash_encodeHash
+ * @private
+ */
+ Plugin.prototype._encodeHash = function (config, tableId, component, value, rawValue) {
+ var wo = config.widgetOptions;
+ if (component === 'filter') {
+ // rawValue is an array of filter values, numerically indexed
+ var encodedFilters = '';
+ var len = rawValue.length;
+ for (var index = 0; index < len; index++) {
+ if (rawValue[index]) {
+ var columnName = this.settings.filterAllField;
+ if (config.$headerIndexed[index]) {
+ columnName = $(config.$headerIndexed[index][0]).attr(wo.sort2Hash_headerTextAttr);
+ }
+ encodedFilters += '&filter[' + tableId + '][' + columnName + ']=' + encodeURIComponent(rawValue[index]);
+ }
+ }
+ return encodedFilters;
+ } else if (component === 'sort') {
+ // rawValue is an array of sort pairs [columnNum, sortDirection]
+ var encodedFilters = '';
+ var len = rawValue.length;
+ for (var index = 0; index < len; index++) {
+ var columnNum = rawValue[index][0];
+ var sortDirection = rawValue[index][1];
+ var columnName = $(config.$headerIndexed[columnNum][0]).attr(wo.sort2Hash_headerTextAttr);
+ encodedFilters += '&sort[' + tableId + '][' + columnName + ']=' + wo.sort2Hash_directionText[sortDirection];
+ }
+ return encodedFilters;
+ }
+ return false;
+ };
+
+ /**
+ * Decode the current table state variables from the URL hash.
+ * Default callback for sort2Hash_decodeHash
+ * @private
+ */
+ Plugin.prototype._decodeHash = function (config, tableId, component) {
+ var wo = config.widgetOptions;
+ var result;
+ // Convert hash into JSON object
+ var urlObject = $.String.deparam(window.location.hash);
+ delete urlObject[wo.sort2Hash_hash]; // Remove hash character
+ if (component === 'filter') {
+ var decodedFilters = [];
+ // Extract filter names and values for the specified table
+ var pageFilters = urlObject.filter ? urlObject.filter : [];
+ if (pageFilters[tableId]) {
+ var tableFilters = pageFilters[tableId];
+ // Build a numerically indexed array of filter values
+ var len = config.$headerIndexed.length;
+ for (var index = 0; index < len; index++) {
+ var columnName = $(config.$headerIndexed[index][0]).attr(wo.sort2Hash_headerTextAttr);
+ if (tableFilters[columnName] && tableFilters[columnName] != this.settings.filterAllField) {
+ decodedFilters.push(tableFilters[columnName]);
+ } else {
+ decodedFilters.push('');
+ }
+ }
+ // Convert array of filter values to a delimited string
+ result = decodedFilters.join(wo.sort2Hash_separator);
+ // make sure to use decodeURIComponent on the result
+ return decodeURIComponent(result);
+ } else {
+ return '';
+ }
+ }
+ return false;
+ };
+
+ /**
+ * Clean up URL hash.
+ * Default callback for sort2Hash_cleanHash
+ * @private
+ */
+ Plugin.prototype._cleanHash = function (config, tableId, component, hash) {
+ var wo = config.widgetOptions;
+ // Convert hash to JSON object
+ var urlObject = $.String.deparam(hash);
+ delete urlObject[wo.sort2Hash_hash]; // Remove hash character
+ // Remove specified component for specified table
+ if (urlObject[component]) {
+ if (urlObject[component][tableId]) {
+ delete urlObject[component][tableId];
+ }
+ // Delete entire component if no other tables remaining
+ if (jQuery.isEmptyObject(urlObject[component])) {
+ delete urlObject[component];
+ }
+ }
+ // Convert modified JSON object back into serialized representation
+ var result = decodeURIComponent(jQuery.param(urlObject));
+ return result.length ? result : '';
+ };
+
+ // Handles instantiation and access to non-private methods.
+ $.fn[pluginName] = function (methodOrOptions) {
+ // Grab plugin instance
+ var instance = $(this).data(pluginName);
+ // If undefined or object, initalise plugin.
+ if (methodOrOptions === undefined || typeof methodOrOptions === 'object') {
+ // Only initalise if not previously done.
+ if (!instance) {
+ $(this).data(pluginName, new Plugin(this, methodOrOptions));
+ }
+ return this;
+ // Otherwise ensure first parameter is a valid string, and is the name of an actual function.
+ } else if (typeof methodOrOptions === 'string' && typeof instance[methodOrOptions] === 'function') {
+ // Ensure not a private function
+ if (methodOrOptions.indexOf('_') !== 0) {
+ return instance[methodOrOptions](Array.prototype.slice.call(arguments, 1));
+ }
+ else {
+ console.warn('Method ' + methodOrOptions + ' is private!');
+ }
+ } else {
+ console.warn('Method ' + methodOrOptions + ' does not exist.');
+ }
+ };
+})(jQuery, window, document);
diff --git a/main/app/sprinkles/core/assets/userfrosting/js/uf-tablesorter-parsers.js b/main/app/sprinkles/core/assets/userfrosting/js/uf-tablesorter-parsers.js index 02901c5..e720a47 100644 --- a/main/app/sprinkles/core/assets/userfrosting/js/uf-tablesorter-parsers.js +++ b/main/app/sprinkles/core/assets/userfrosting/js/uf-tablesorter-parsers.js @@ -1,53 +1,53 @@ -// Parser for sorting integers, timestamps, etc based on metadata from <td> attributes -// Adapted from http://mottie.github.io/tablesorter/docs/example-parsers-advanced.html -$.tablesorter.addParser({ - // set a unique id - id: 'metanum', - is: function (s) { - // return false so this parser is not auto detected - return false; - }, - format: function (s, table, cell, cellIndex) { - var $cell = $(cell); - // returns metadata, or cell text (s) if it doesn't exist - return $cell.attr('data-num') || s; - - }, - // set type to numeric - type: 'numeric' -}); - -$.tablesorter.addParser({ - // set a unique id - id: 'metatext', - is: function (s) { - // return false so this parser is not auto detected - return false; - }, - format: function (s, table, cell, cellIndex) { - var $cell = $(cell); - // returns metadata, or cell text (s) if it doesn't exist - return $cell.attr('data-text') || s; - - }, - - type: 'text' -}); - -$.tablesorter.addParser({ - // set a unique id - id: 'isblank', - is: function (s) { - // return false so this parser is not auto detected - return false; - }, - format: function (s, table, cell, cellIndex) { - var $cell = $(cell); - // returns 1 if blank (whitespace), 0 otherwise - var isBlank = $cell.html().trim() == " " ? 1 : 0; - return isBlank; - - }, - - type: 'numeric' -}); +// Parser for sorting integers, timestamps, etc based on metadata from <td> attributes
+// Adapted from http://mottie.github.io/tablesorter/docs/example-parsers-advanced.html
+$.tablesorter.addParser({
+ // set a unique id
+ id: 'metanum',
+ is: function (s) {
+ // return false so this parser is not auto detected
+ return false;
+ },
+ format: function (s, table, cell, cellIndex) {
+ var $cell = $(cell);
+ // returns metadata, or cell text (s) if it doesn't exist
+ return $cell.attr('data-num') || s;
+
+ },
+ // set type to numeric
+ type: 'numeric'
+});
+
+$.tablesorter.addParser({
+ // set a unique id
+ id: 'metatext',
+ is: function (s) {
+ // return false so this parser is not auto detected
+ return false;
+ },
+ format: function (s, table, cell, cellIndex) {
+ var $cell = $(cell);
+ // returns metadata, or cell text (s) if it doesn't exist
+ return $cell.attr('data-text') || s;
+
+ },
+
+ type: 'text'
+});
+
+$.tablesorter.addParser({
+ // set a unique id
+ id: 'isblank',
+ is: function (s) {
+ // return false so this parser is not auto detected
+ return false;
+ },
+ format: function (s, table, cell, cellIndex) {
+ var $cell = $(cell);
+ // returns 1 if blank (whitespace), 0 otherwise
+ var isBlank = $cell.html().trim() == " " ? 1 : 0;
+ return isBlank;
+
+ },
+
+ type: 'numeric'
+});
|